From 3f074308f5e4dfcbbe8299ae6988297d6b71e413 Mon Sep 17 00:00:00 2001 From: erg Date: Fri, 14 Jul 2006 05:40:13 +0000 Subject: [PATCH] win32 updates --- library/bootstrap/boot-stage2.factor | 10 +- library/windows/clipboard.factor | 59 - library/windows/gdi32.factor | 34 - library/windows/kernel32.factor | 59 - library/windows/load.factor | 35 - library/windows/opengl32.factor | 100 -- library/windows/types.factor | 365 ------ library/windows/ui.factor | 295 ----- library/windows/user32.factor | 1371 --------------------- library/windows/utils.factor | 14 - library/windows/win32-errors.factor | 70 -- library/windows/win32-io-internals.factor | 125 -- library/windows/win32-io.factor | 124 -- library/windows/win32-server.factor | 126 -- library/windows/win32-stream.factor | 187 --- library/windows/windows-messages.factor | 1003 --------------- library/windows/winsock.factor | 107 -- vm/Config.windows | 1 + vm/alien.c | 420 +++---- vm/os-windows.c | 468 +++---- 20 files changed, 450 insertions(+), 4523 deletions(-) delete mode 100644 library/windows/clipboard.factor delete mode 100644 library/windows/gdi32.factor delete mode 100644 library/windows/kernel32.factor delete mode 100644 library/windows/load.factor delete mode 100644 library/windows/opengl32.factor delete mode 100644 library/windows/types.factor delete mode 100644 library/windows/ui.factor delete mode 100644 library/windows/user32.factor delete mode 100644 library/windows/utils.factor delete mode 100644 library/windows/win32-errors.factor delete mode 100644 library/windows/win32-io-internals.factor delete mode 100644 library/windows/win32-io.factor delete mode 100644 library/windows/win32-server.factor delete mode 100644 library/windows/win32-stream.factor delete mode 100644 library/windows/windows-messages.factor delete mode 100644 library/windows/winsock.factor diff --git a/library/bootstrap/boot-stage2.factor b/library/bootstrap/boot-stage2.factor index 9b98964333..887eb4598d 100644 --- a/library/bootstrap/boot-stage2.factor +++ b/library/bootstrap/boot-stage2.factor @@ -25,7 +25,7 @@ parser sequences sequences-internals words ; ] when windows? [ - "/library/windows/load.factor" run-resource + "/library/io/windows/load.factor" run-resource ] when parse-command-line @@ -47,7 +47,7 @@ parser sequences sequences-internals words ; terpri flush "Initializing native I/O..." print flush - "native-io" get [ init-io ] when + "native-io" get windows? not and [ init-io ] when "cocoa" get [ "/library/compiler/alien/objc/load.factor" run-resource @@ -58,9 +58,9 @@ parser sequences sequences-internals words ; "/library/ui/x11/load.factor" run-resource ] when - windows? "native-io" get and [ - "/library/windows/ui.factor" run-resource - "/library/windows/clipboard.factor" run-resource + windows? [ + "/library/ui/windows/ui.factor" run-resource + "/library/ui/windows/clipboard.factor" run-resource compile-all ] when ] when diff --git a/library/windows/clipboard.factor b/library/windows/clipboard.factor deleted file mode 100644 index d64ff30756..0000000000 --- a/library/windows/clipboard.factor +++ /dev/null @@ -1,59 +0,0 @@ -USING: kernel win32-api math namespaces io prettyprint errors sequences alien ; -IN: win32 - -: (enum-clipboard) ( n -- ) - EnumClipboardFormats win32-error dup 0 > [ dup , (enum-clipboard) ] when ; - -: enum-clipboard ( -- seq ) - [ 0 (enum-clipboard) ] { } make nip ; - -: paste ( -- str ) - f OpenClipboard drop - CF_TEXT IsClipboardFormatAvailable 0 = [ - "no text in clipboard" print - ] [ - ! "text found" print - CF_TEXT GetClipboardData - dup GlobalLock swap - GlobalUnlock drop - ] if - CloseClipboard drop alien>char-string ; - -LIBRARY: libc -FUNCTION: void memcpy ( char* dst, char* src, ulong size ) ; - -: copy ( str -- ) - f OpenClipboard drop - EmptyClipboard drop - GMEM_MOVEABLE over length 1+ GlobalAlloc dup 0 = [ - "unable to allocate memory" throw - ] when - - dup GlobalLock - rot dup length memcpy - dup GlobalUnlock drop - CF_TEXT swap SetClipboardData 0 = [ - win32-error - "SetClipboardData failed" throw - ] when - - CloseClipboard drop ; - - - ! hglbCopy = GlobalAlloc(GMEM_MOVEABLE, - ! (cch + 1) * sizeof(TCHAR)); - - - ! // Lock the handle and copy the text to the buffer. - - ! lptstrCopy = GlobalLock(hglbCopy); - ! memcpy(lptstrCopy, &pbox->atchLabel[ich1], - ! cch * sizeof(TCHAR)); - ! lptstrCopy[cch] = (TCHAR) 0; // null character - ! GlobalUnlock(hglbCopy); - - ! // Place the handle on the clipboard. - ! SetClipboardData(CF_TEXT, hglbCopy); - - - diff --git a/library/windows/gdi32.factor b/library/windows/gdi32.factor deleted file mode 100644 index 79d63b7d7a..0000000000 --- a/library/windows/gdi32.factor +++ /dev/null @@ -1,34 +0,0 @@ -USING: alien kernel errors ; -IN: win32-api - -LIBRARY: gdi32 - -! Stock Logical Objects -: WHITE_BRUSH 0 ; inline -: LTGRAY_BRUSH 1 ; inline -: GRAY_BRUSH 2 ; inline -: DKGRAY_BRUSH 3 ; inline -: BLACK_BRUSH 4 ; inline -: NULL_BRUSH 5 ; inline -: HOLLOW_BRUSH NULL_BRUSH ; inline -: WHITE_PEN 6 ; inline -: BLACK_PEN 7 ; inline -: NULL_PEN 8 ; inline -: OEM_FIXED_FONT 10 ; inline -: ANSI_FIXED_FONT 11 ; inline -: ANSI_VAR_FONT 12 ; inline -: SYSTEM_FONT 13 ; inline -: DEVICE_DEFAULT_FONT 14 ; inline -: DEFAULT_PALETTE 15 ; inline -: SYSTEM_FIXED_FONT 16 ; inline -: DEFAULT_GUI_FONT 17 ; inline -: DC_BRUSH 18 ; inline -: DC_PEN 19 ; inline - -FUNCTION: HGDIOBJ GetStockObject ( int fnObject ) ; -FUNCTION: int ChoosePixelFormat ( HDC hDC, PFD* ppfd ) ; -FUNCTION: BOOL SetPixelFormat ( HDC hDC, int iPixelFormat, PFD* ppfd ) ; - -FUNCTION: BOOL SwapBuffers ( HDC hDC ) ; - - diff --git a/library/windows/kernel32.factor b/library/windows/kernel32.factor deleted file mode 100644 index 1c9a7bbbc6..0000000000 --- a/library/windows/kernel32.factor +++ /dev/null @@ -1,59 +0,0 @@ -USING: alien kernel errors ; -IN: win32-api - -LIBRARY: kernel32 - -! FUNCTION: MAKEINTRESOURCEA -! FUNCTION: MAKEINTRESOURCEW - -! : MAKEINTRESOURCE \ MAKEINTRESOURCEW \ MAKEINTRESOURCEA unicode-exec ; -! #define IS_INTRESOURCE(_r) (((ULONG_PTR)(_r) >> 16) == 0) -! #define MAKEINTRESOURCEA(i) (LPSTR)((ULONG_PTR)((WORD)(i))) -! #define MAKEINTRESOURCEW(i) (LPWSTR)((ULONG_PTR)((WORD)(i))) - - -! FUNCTION: DWORD FormatMessage( - ! DWORD dwFlags, - ! LPCVOID lpSource, - ! DWORD dwMessageId, - ! DWORD dwLanguageId, - ! LPTSTR lpBuffer, - ! DWORD nSize, - ! va_list* Arguments -! ) ; - - - -FUNCTION: HMODULE GetModuleHandleA ( char* lpModulename ) ; -FUNCTION: HMODULE GetModuleHandleW ( char* lpModulename ) ; - -: GetModuleHandle \ GetModuleHandleW \ GetModuleHandleA unicode-exec ; - - -! FUNCTION: HMODULE GetModuleHandleEx ( -! DWORD dwFlags, -! LPCTSTR lpModulename, -! HMODULE* phModule ) ; - - - -FUNCTION: DWORD GetLastError ( ) ; - -: (win32-error) ( id -- string ) - "char*" f "error_message" [ "int" ] alien-invoke ; - -: win32-error ( -- ) - GetLastError dup 0 = [ (win32-error) throw ] unless drop ; - -: GHND HEX: 40 ; inline -: GMEM_FIXED 0 ; inline -: GMEM_MOVEABLE 2 ; inline -: GMEM_ZEROINIT HEX: 40 ; inline -: GPTR HEX: 40 ; inline - -FUNCTION: HGLOBAL GlobalAlloc ( UINT uFlags, SIZE_T dwBytes ) ; -FUNCTION: LPVOID GlobalLock ( HGLOBAL hMem ) ; -! FUNCTION: char* GlobalLock ( HGLOBAL hMem ) ; -FUNCTION: BOOL GlobalUnlock ( HGLOBAL hMem ) ; - - diff --git a/library/windows/load.factor b/library/windows/load.factor deleted file mode 100644 index e68cbfae05..0000000000 --- a/library/windows/load.factor +++ /dev/null @@ -1,35 +0,0 @@ -IN: scratchpad -USING: alien compiler kernel namespaces parser sequences words ; - -{ - { "gdi32" "gdi32" } - { "user32" "user32" } - { "kernel32" "kernel32" } - { "winsock" "ws2_32" } - { "mswsock" "mswsock" } -} [ first2 add-simple-library ] each -"libc" "msvcrt.dll" "cdecl" add-library - -{ - "windows-messages" - "types" - "gdi32" - "kernel32" - "user32" - "opengl32" - "utils" - - "win32-io" - "win32-errors" - "winsock" - "win32-io-internals" - "win32-stream" - "win32-server" -} [ "/library/windows/" swap ".factor" append3 run-resource ] each - -"native-io" get [ - "/library/bootstrap/win32-io.factor" run-resource -] when - -IN: kernel -: default-shell "ui" ; diff --git a/library/windows/opengl32.factor b/library/windows/opengl32.factor deleted file mode 100644 index 6c174ce2f7..0000000000 --- a/library/windows/opengl32.factor +++ /dev/null @@ -1,100 +0,0 @@ -USING: alien parser namespaces kernel syntax words math io prettyprint ; -IN: win32-api - -! PIXELFORMATDESCRIPTOR flags -: PFD_DOUBLEBUFFER HEX: 00000001 ; inline -: PFD_STEREO HEX: 00000002 ; inline -: PFD_DRAW_TO_WINDOW HEX: 00000004 ; inline -: PFD_DRAW_TO_BITMAP HEX: 00000008 ; inline -: PFD_SUPPORT_GDI HEX: 00000010 ; inline -: PFD_SUPPORT_OPENGL HEX: 00000020 ; inline -: PFD_GENERIC_FORMAT HEX: 00000040 ; inline -: PFD_NEED_PALETTE HEX: 00000080 ; inline -: PFD_NEED_SYSTEM_PALETTE HEX: 00000100 ; inline -: PFD_SWAP_EXCHANGE HEX: 00000200 ; inline -: PFD_SWAP_COPY HEX: 00000400 ; inline -: PFD_SWAP_LAYER_BUFFERS HEX: 00000800 ; inline -: PFD_GENERIC_ACCELERATED HEX: 00001000 ; inline -: PFD_SUPPORT_DIRECTDRAW HEX: 00002000 ; inline - -! PIXELFORMATDESCRIPTOR flags for use in ChoosePixelFormat only -: PFD_DEPTH_DONTCARE HEX: 20000000 ; inline -: PFD_DOUBLEBUFFER_DONTCARE HEX: 40000000 ; inline -: PFD_STEREO_DONTCARE HEX: 80000000 ; inline - -! pixel types -: PFD_TYPE_RGBA 0 ; inline -: PFD_TYPE_COLORINDEX 1 ; inline - -! layer types -: PFD_MAIN_PLANE 0 ; inline -: PFD_OVERLAY_PLANE 1 ; inline -: PFD_UNDERLAY_PLANE -1 ; inline - -: LPD_TYPE_RGBA 0 ; inline -: LPD_TYPE_COLORINDEX 1 ; inline - -! wglSwapLayerBuffers flags -: WGL_SWAP_MAIN_PLANE HEX: 00000001 ; inline -: WGL_SWAP_OVERLAY1 HEX: 00000002 ; inline -: WGL_SWAP_OVERLAY2 HEX: 00000004 ; inline -: WGL_SWAP_OVERLAY3 HEX: 00000008 ; inline -: WGL_SWAP_OVERLAY4 HEX: 00000010 ; inline -: WGL_SWAP_OVERLAY5 HEX: 00000020 ; inline -: WGL_SWAP_OVERLAY6 HEX: 00000040 ; inline -: WGL_SWAP_OVERLAY7 HEX: 00000080 ; inline -: WGL_SWAP_OVERLAY8 HEX: 00000100 ; inline -: WGL_SWAP_OVERLAY9 HEX: 00000200 ; inline -: WGL_SWAP_OVERLAY10 HEX: 00000400 ; inline -: WGL_SWAP_OVERLAY11 HEX: 00000800 ; inline -: WGL_SWAP_OVERLAY12 HEX: 00001000 ; inline -: WGL_SWAP_OVERLAY13 HEX: 00002000 ; inline -: WGL_SWAP_OVERLAY14 HEX: 00004000 ; inline -: WGL_SWAP_OVERLAY15 HEX: 00008000 ; inline -: WGL_SWAP_UNDERLAY1 HEX: 00010000 ; inline -: WGL_SWAP_UNDERLAY2 HEX: 00020000 ; inline -: WGL_SWAP_UNDERLAY3 HEX: 00040000 ; inline -: WGL_SWAP_UNDERLAY4 HEX: 00080000 ; inline -: WGL_SWAP_UNDERLAY5 HEX: 00100000 ; inline -: WGL_SWAP_UNDERLAY6 HEX: 00200000 ; inline -: WGL_SWAP_UNDERLAY7 HEX: 00400000 ; inline -: WGL_SWAP_UNDERLAY8 HEX: 00800000 ; inline -: WGL_SWAP_UNDERLAY9 HEX: 01000000 ; inline -: WGL_SWAP_UNDERLAY10 HEX: 02000000 ; inline -: WGL_SWAP_UNDERLAY11 HEX: 04000000 ; inline -: WGL_SWAP_UNDERLAY12 HEX: 08000000 ; inline -: WGL_SWAP_UNDERLAY13 HEX: 10000000 ; inline -: WGL_SWAP_UNDERLAY14 HEX: 20000000 ; inline -: WGL_SWAP_UNDERLAY15 HEX: 40000000 ; inline - - - -: pfd-dwFlags - PFD_DRAW_TO_WINDOW PFD_SUPPORT_OPENGL bitor PFD_DOUBLEBUFFER bitor ; - -! TODO: compare to http://www.nullterminator.net/opengl32.html -: make-pfd ( bits -- pfd ) - "PIXELFORMATDESCRIPTOR" - "PIXELFORMATDESCRIPTOR" c-size over set-PIXELFORMATDESCRIPTOR-nSize - 1 over set-PIXELFORMATDESCRIPTOR-nVersion - pfd-dwFlags over set-PIXELFORMATDESCRIPTOR-dwFlags - PFD_TYPE_RGBA over set-PIXELFORMATDESCRIPTOR-iPixelType - [ set-PIXELFORMATDESCRIPTOR-cColorBits ] keep - 16 over set-PIXELFORMATDESCRIPTOR-cDepthBits - PFD_MAIN_PLANE over set-PIXELFORMATDESCRIPTOR-dwLayerMask ; - - -LIBRARY: gl - - -! FUNCTION: int ReleaseDC ( HWND hWnd, HDC hDC ) ; -! FUNCTION: HDC ResetDC ( HDC hdc, DEVMODE* lpInitData ) ; -! FUNCTION: BOOL RestoreDC ( HDC hdc, int nSavedDC ) ; -! FUNCTION: int SaveDC( HDC hDC ) ; -! FUNCTION: HGDIOBJ SelectObject ( HDC hDC, HGDIOBJ hgdiobj ) ; - -FUNCTION: HGLRC wglCreateContext ( HDC hDC ) ; -FUNCTION: BOOL wglDeleteContext ( HGLRC hRC ) ; -FUNCTION: BOOL wglMakeCurrent ( HDC hDC, HGLRC hglrc ) ; - - diff --git a/library/windows/types.factor b/library/windows/types.factor deleted file mode 100644 index 4203eb05c5..0000000000 --- a/library/windows/types.factor +++ /dev/null @@ -1,365 +0,0 @@ -USING: alien namespaces kernel words ; -IN: win32-api - -! http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winprog/winprog/windows_data_types.asp - -SYMBOL: unicode f unicode set -: unicode-exec ( unicode-func ascii-func -- func ) - unicode get [ - drop execute - ] [ - nip execute - ] if ; inline - -: unicode? unicode get ; inline - -: win64? f ; - -! win64 -! char uchar short ushort int uint long ulong longlong ulonglong -! 1 1 2 2 * * ? -! win32 -! char uchar short ushort int uint long ulong longlong ulonglong -! 1 1 2 2 * * 4 4 8 8 - - -TYPEDEF: char CHAR -TYPEDEF: uchar UCHAR -TYPEDEF: uchar BYTE - -TYPEDEF: short wchar_t -TYPEDEF: wchar_t WCHAR - -TYPEDEF: short SHORT -TYPEDEF: ushort USHORT - -TYPEDEF: ushort WORD -TYPEDEF: ulong DWORD - -TYPEDEF: int INT -TYPEDEF: uint UINT - -TYPEDEF: int BOOL - -TYPEDEF: int* PINT -TYPEDEF: int* LPINT -TYPEDEF: int HFILE - -TYPEDEF: long LONG -TYPEDEF: long* LPLONG -TYPEDEF: long LONG_PTR -TYPEDEF: long* PLONG_PTR - -TYPEDEF: uint ULONG -TYPEDEF: ulong ULONG_PTR -TYPEDEF: ulong* PULONG_PTR - -TYPEDEF: void VOID -TYPEDEF: void* PVOID -TYPEDEF: void* LPVOID -TYPEDEF: void* LPCVOID - -TYPEDEF: float FLOAT -! The following is commented out for two reasons. -! 1) all of the code in both branches will be run because TYPEDEF: is a -! parsing word -! 2) we are waiting on gcc to be ported to win64/msys -! 3) the TYPEDEF:s are probably wrong. - -! win64? [ - ! ! TODO: check these! - ! TYPEDEF: INT32 HALF_PTR - ! TYPEDEF: UINT32 UHALF_PTR - ! TYPEDEF: long INT_PTR - ! TYPEDEF: ulong UINT_PTR - - ! TYPEDEF: longlong LONG_PTR ! 64bit - ! TYPEDEF: ulonglong ULONG_PTR ! 64bit - - ! TYPEDEF: int INT32 - ! TYPEDEF: uint UINT32 - ! TYPEDEF: uint DWORD32 - ! TYPEDEF: uint ULONG32 - ! TYPEDEF: ulong ULONG64 - ! TYPEDEF: int* POINTER_32 - ! TYPEDEF: long* POINTER_64 - ! TYPEDEF: longlong INT64 - ! TYPEDEF: ulonglong UINT64 - ! TYPEDEF: longlong LONGLONG ! 64bit - ! TYPEDEF: ulonglong ULONGLONG - ! TYPEDEF: longlong LONG64 - ! TYPEDEF: ulonglong DWORD64 - ! ] [ -! Correct for win32 - TYPEDEF: short HALF_PTR - TYPEDEF: ushort UHALF_PTR - TYPEDEF: int INT_PTR - TYPEDEF: uint UINT_PTR - - TYPEDEF: int LONG_PTR - TYPEDEF: ulong ULONG_PTR - - TYPEDEF: int INT32 - TYPEDEF: uint UINT32 - TYPEDEF: uint DWORD32 - TYPEDEF: ulong ULONG32 - TYPEDEF: ulonglong ULONG64 - TYPEDEF: long* POINTER_32 - TYPEDEF: longlong* POINTER_64 - TYPEDEF: longlong INT64 - TYPEDEF: ulonglong UINT64 - TYPEDEF: longlong LONGLONG - TYPEDEF: ulonglong ULONGLONG - TYPEDEF: longlong LONG64 - TYPEDEF: ulonglong DWORD64 -! ] if - -! unicode? [ - ! TYPEDEF: WCHAR TBYTE - ! TYPEDEF: WCHAR TCHAR - ! ] [ - TYPEDEF: uchar TBYTE - TYPEDEF: char TCHAR -! ] if - -! Below down is based on the above definitions -! There should be no 32/64bit issues - -TYPEDEF: WORD ATOM -TYPEDEF: BYTE BOOLEAN -! TYPEDEF: __stdcall CALLBACK -TYPEDEF: DWORD COLORREF -TYPEDEF: ULONGLONG DWORDLONG -TYPEDEF: ULONG_PTR DWORD_PTR -TYPEDEF: PVOID HANDLE -TYPEDEF: HANDLE HACCEL -TYPEDEF: HANDLE HBITMAP -TYPEDEF: HANDLE HBRUSH -TYPEDEF: HANDLE HCOLORSPACE -TYPEDEF: HANDLE HCONV -TYPEDEF: HANDLE HCONVLIST -TYPEDEF: HANDLE HICON -TYPEDEF: HICON HCURSOR -TYPEDEF: HANDLE HDC -TYPEDEF: HANDLE HDDEDATA -TYPEDEF: HANDLE HDESK -TYPEDEF: HANDLE HDROP -TYPEDEF: HANDLE HDWP -TYPEDEF: HANDLE HENMETAFILE -TYPEDEF: HANDLE HFONT -TYPEDEF: HANDLE HGDIOBJ -TYPEDEF: HANDLE HGLOBAL -TYPEDEF: HANDLE HHOOK -TYPEDEF: HANDLE HINSTANCE -TYPEDEF: HANDLE HKEY -TYPEDEF: HANDLE HKL -TYPEDEF: HANDLE HLOCAL -TYPEDEF: HANDLE HMENU -TYPEDEF: HANDLE HMETAFILE -TYPEDEF: HINSTANCE HMODULE -TYPEDEF: HANDLE HMONITOR -TYPEDEF: HANDLE HPALETTE -TYPEDEF: HANDLE HPEN -TYPEDEF: LONG HRESULT -TYPEDEF: HANDLE HRGN -TYPEDEF: HANDLE HRSRC -TYPEDEF: HANDLE HSZ -TYPEDEF: HANDLE WINSTA ! MS docs say typedef HANDLE WINSTA ; -TYPEDEF: HANDLE HWINSTA ! typo?? -TYPEDEF: HANDLE HWND -TYPEDEF: WORD LANGID -TYPEDEF: DWORD LCID -TYPEDEF: DWORD LCTYPE -TYPEDEF: DWORD LGRPID -TYPEDEF: LONG_PTR LPARAM -TYPEDEF: BOOL* LPBOOL -TYPEDEF: BYTE* LPBYTE -TYPEDEF: DWORD* LPCOLORREF -TYPEDEF: CHAR* LPCSTR -TYPEDEF: WCHAR* LPCWSTR -TYPEDEF: WCHAR* LPWSTR -unicode? [ - TYPEDEF: LPCWSTR LPCTSTR - TYPEDEF: LPWSTR LPTSTR - TYPEDEF: LPCWSTR PCTSTR - TYPEDEF: LPWSTR PTSTR - ] [ - TYPEDEF: LPCSTR LPCTSTR - TYPEDEF: LPSTR LPTSTR - TYPEDEF: LPCSTR PCTSTR - TYPEDEF: LPSTR PTSTR -] if -TYPEDEF: DWORD* LPDWORD -TYPEDEF: HANDLE* LPHANDLE -TYPEDEF: CHAR* LPSTR -TYPEDEF: WORD* LPWORD -TYPEDEF: WCHAR* LPWSTR -TYPEDEF: LONG_PTR LRESULT -TYPEDEF: BOOL* PBOOL -TYPEDEF: BOOLEAN* PBOOLEAN -TYPEDEF: BYTE* PBYTE -TYPEDEF: CHAR* PCHAR -TYPEDEF: CHAR* PCSTR -TYPEDEF: WCHAR* PCWSTR -TYPEDEF: DWORD* PDWORD -TYPEDEF: DWORDLONG* PDWORDLONG -TYPEDEF: DWORD_PTR* PDWORD_PTR -TYPEDEF: DWORD32* PDWORD32 -TYPEDEF: DWORD64* PDWORD64 -TYPEDEF: FLOAT* PFLOAT -TYPEDEF: HALF_PTR* PHALF_PTR -TYPEDEF: HANDLE* PHANDLE -TYPEDEF: HKEY* PHKEY -TYPEDEF: INT_PTR* PINT_PTR -TYPEDEF: INT32* PINT32 -TYPEDEF: INT64* PINT64 -TYPEDEF: PDWORD PLCID -TYPEDEF: LONG* PLONG -TYPEDEF: LONGLONG* PLONGLONG -TYPEDEF: LONG_PTR* PLONG_PTR -TYPEDEF: LONG32* PLONG32 -TYPEDEF: LONG64* PLONG64 -TYPEDEF: SHORT* PSHORT -TYPEDEF: SIZE_T* PSIZE_T -TYPEDEF: SSIZE_T* PSSIZE_T -TYPEDEF: CHAR* PSTR -TYPEDEF: TBYTE* PTBYTE -TYPEDEF: TCHAR* PTCHAR -TYPEDEF: UCHAR* PUCHAR -TYPEDEF: UHALF_PTR* PUHALF_PTR -TYPEDEF: UINT* PUINT -TYPEDEF: UINT_PTR* PUINT_PTR -TYPEDEF: UINT32* PUINT32 -TYPEDEF: UINT64* PUINT64 -TYPEDEF: ULONG* PULONG -TYPEDEF: ULONGLONG* PULONGLONG -TYPEDEF: ULONG_PTR* PULONG_PTR -TYPEDEF: ULONG32* PULONG32 -TYPEDEF: ULONG64* PULONG64 -TYPEDEF: USHORT* PUSHORT -TYPEDEF: WCHAR* PWCHAR -TYPEDEF: WORD* PWORD -TYPEDEF: WCHAR* PWSTR -TYPEDEF: HANDLE SC_HANDLE -TYPEDEF: LPVOID SC_LOCK -TYPEDEF: HANDLE SERVICE_STATUS_HANDLE -TYPEDEF: ULONG_PTR SIZE_T -TYPEDEF: LONG_PTR SSIZE_T -TYPEDEF: LONGLONG USN -! TYPEDEF: __stdcall WINAPI -TYPEDEF: UINT_PTR WPARAM - - - - -TYPEDEF: RECT* LPRECT -TYPEDEF: void* PWNDCLASS -TYPEDEF: void* PWNDCLASSEX - -TYPEDEF: void* WNDPROC - -! typedef LRESULT (CALLBACK* WNDPROC)(HWND, UINT, WPARAM, LPARAM); - -BEGIN-STRUCT: WNDCLASS - FIELD: UINT style - FIELD: WNDPROC lpfnWndProc - FIELD: int cbClsExtra - FIELD: int cbWndExtra - FIELD: HINSTANCE hInstance - FIELD: HICON hIcon - FIELD: HCURSOR hCursor - FIELD: HBRUSH hbrBackground - FIELD: LPCTSTR lpszMenuName - FIELD: LPCTSTR lpszClassName -END-STRUCT - -BEGIN-STRUCT: WNDCLASSEX - FIELD: UINT cbSize - FIELD: UINT style - FIELD: WNDPROC lpfnWndProc - FIELD: int cbClsExtra - FIELD: int cbWndExtra - FIELD: HINSTANCE hInstance - FIELD: HICON hIcon - FIELD: HCURSOR hCursor - FIELD: HBRUSH hbrBackground - FIELD: LPCTSTR lpszMenuName - FIELD: LPCTSTR lpszClassName - FIELD: HICON hIconSm -END-STRUCT - -BEGIN-STRUCT: RECT - FIELD: LONG left - FIELD: LONG top - FIELD: LONG right - FIELD: LONG bottom -END-STRUCT - -BEGIN-STRUCT: PAINTSTRUCT - FIELD: HDC hdc - FIELD: BOOL fErase - FIELD: RECT rcPaint - FIELD: BOOL fRestore - FIELD: BOOL fIncUpdate - FIELD: BYTE rgbReserved[32] -END-STRUCT - -TYPEDEF: PAINTSTRUCT* LPPAINTSTRUCT - -BEGIN-STRUCT: POINT - FIELD: LONG x - FIELD: LONG y -END-STRUCT - -BEGIN-STRUCT: MSG - FIELD: HWND hWnd - FIELD: UINT message - FIELD: WPARAM wParam - FIELD: LPARAM lParam - FIELD: DWORD time - FIELD: POINT pt -END-STRUCT -TYPEDEF: MSG* LPMSG - -BEGIN-STRUCT: PIXELFORMATDESCRIPTOR - FIELD: WORD nSize - FIELD: WORD nVersion - FIELD: DWORD dwFlags - FIELD: BYTE iPixelType - FIELD: BYTE cColorBits - FIELD: BYTE cRedBits - FIELD: BYTE cRedShift - FIELD: BYTE cGreenBits - FIELD: BYTE cGreenShift - FIELD: BYTE cBlueBits - FIELD: BYTE cBlueShift - FIELD: BYTE cAlphaBits - FIELD: BYTE cAlphaShift - FIELD: BYTE cAccumBits - FIELD: BYTE cAccumRedBits - FIELD: BYTE cAccumGreenBits - FIELD: BYTE cAccumBlueBits - FIELD: BYTE cAccumAlphaBits - FIELD: BYTE cDepthBits - FIELD: BYTE cStencilBits - FIELD: BYTE cAuxBuffers - FIELD: BYTE iLayerType - FIELD: BYTE bReserved - FIELD: DWORD dwLayerMask - FIELD: DWORD dwVisibleMask - FIELD: DWORD dwDamageMask -END-STRUCT - -BEGIN-STRUCT: RECT - FIELD: LONG left - FIELD: LONG top - FIELD: LONG right - FIELD: LONG bottom -END-STRUCT - -TYPEDEF: RECT* PRECT -TYPEDEF: RECT* LPRECT -TYPEDEF: PIXELFORMATDESCRIPTOR PFD -TYPEDEF: PFD* LPPFD -TYPEDEF: HANDLE HGLRC -TYPEDEF: HANDLE HRGN diff --git a/library/windows/ui.factor b/library/windows/ui.factor deleted file mode 100644 index 536a647f72..0000000000 --- a/library/windows/ui.factor +++ /dev/null @@ -1,295 +0,0 @@ -USING: alien arrays errors freetype gadgets gadgets-launchpad gadgets-layouts - gadgets-listener hashtables io kernel \ math namespaces prettyprint - sequences strings vectors words win32-api-messages win32-api ; -USING: inspector threads memory ; -IN: win32 - -SYMBOL: windows -SYMBOL: msg-obj - -! 'SYMBOL: windows' is a hashtable of 'gadget-window' objects indexed by hWnd. -! hDC = handle to device context, hRC = handle to render context -TUPLE: gadget-window world hWnd hDC hRC ; - -: class-name "Factor" ; - -: get-world ( hWnd -- world ) windows get hash gadget-window-world ; -: get-gadget-window ( hWnd -- gadget-window ) - windows get hash ; - -: style ( -- n ) WS_OVERLAPPEDWINDOW ; inline -: ex-style ( -- n ) WS_EX_APPWINDOW WS_EX_WINDOWEDGE bitor ; inline - -: adjust-RECT ( RECT -- ) - style 0 ex-style AdjustWindowRectEx win32-error=0 ; - -: make-RECT ( width height -- RECT ) - "RECT" [ set-RECT-bottom ] keep [ set-RECT-right ] keep ; - -: make-adjusted-RECT ( width height -- RECT ) - make-RECT dup adjust-RECT ; - -: cleanup-gadget-window ( gadget-window -- ) - dup gadget-window-hRC wglDeleteContext win32-error=0 - [ gadget-window-hWnd ] keep gadget-window-hDC ReleaseDC win32-error=0 ; - -: get-RECT-dimensions ( RECT -- width height ) - [ RECT-right ] keep [ RECT-left - ] keep - [ RECT-bottom ] keep RECT-top - ; - -: handle-wm-paint ( hWnd uMsg wParam lParam -- ) - #! wParam and lParam are unused - 3drop get-world redraw-world ; - -: handle-wm-size ( hWnd uMsg wParam lParam -- ) - [ lo-word ] keep hi-word make-RECT get-RECT-dimensions 0 3array - 2nip - dup { 0 0 0 } = [ 2drop ] [ swap get-world set-gadget-dim ] if ; - -: wm-keydown-codes ( n -- key ) - H{ - { 8 "BACKSPACE" } - { 9 "TAB" } - { 13 "RETURN" } - { 27 "ESCAPE" } - { 33 "PAGE_UP" } - { 34 "PAGE_DOWN" } - { 35 "END" } - { 36 "HOME" } - { 37 "LEFT" } - { 38 "UP" } - { 39 "RIGHT" } - { 40 "DOWN" } - { 45 "INSERT" } - { 46 "DELETE" } - } ; - - -: key-state-down? - GetKeyState 1 16 shift bitand 0 > ; - -: left-shift? ( -- ? ) VK_LSHIFT key-state-down? ; -: left-ctrl? ( -- ? ) VK_LCONTROL key-state-down? ; -: left-alt? ( -- ? ) VK_LMENU key-state-down? ; -: right-shift? ( -- ? ) VK_RSHIFT key-state-down? ; -: right-ctrl? ( -- ? ) VK_RCONTROL key-state-down? ; -: right-alt? ( -- ? ) VK_RMENU key-state-down? ; -: shift? ( -- ? ) left-shift? right-shift? or ; -: ctrl? ( -- ? ) left-ctrl? right-ctrl? or ; -: alt? ( -- ? ) left-alt? right-alt? or ; -: caps-lock? ( -- ? ) VK_CAPITAL GetKeyState zero? not ; - -: key-modifiers ( -- list ) - [ - shift? [ "SHIFT" , ] when - ctrl? [ "CTRL" , ] when - alt? [ "ALT" , ] when - ] V{ } make ; - -: wm-char-exclude-keys - H{ - { 8 "BACKSPACE" } - { 9 "TAB" } - { 13 "RETURN" } - } ; - -: exclude-key? ( n -- bool ) wm-char-exclude-keys hash* nip ; -: handle-key? ( n -- bool ) wm-keydown-codes hash* nip ; - -: keystroke>gesture ( n -- list ) - dup wm-keydown-codes hash* [ nip ] [ drop ch>string ] if - key-modifiers [ push ] keep ; - -SYMBOL: lParam -SYMBOL: wParam -SYMBOL: uMsg -SYMBOL: hWnd - -: handle-wm-keydown ( hWnd uMsg wParam lParam -- ) - lParam set wParam set uMsg set hWnd set - wParam get handle-key? [ - wParam get hWnd get get-world world-focus - 2dup >r keystroke>gesture r> handle-gesture [ - >r ch>string r> user-input - ] [ - 2drop - ] if - ] when 0 ; - -: handle-wm-char ( hWnd uMsg wParam lParam -- ) - lParam set wParam set uMsg set hWnd set - wParam get exclude-key? [ - wParam get ch>string hWnd get get-world world-focus - 2dup >r unit r> handle-gesture [ - user-input - ] [ - 2drop - ] if - ] unless 0 ; - -: handle-wm-destroy ( hWnd uMsg wParam lParam -- ) - 3drop - [ - get-gadget-window - dup gadget-window-world close-world - cleanup-gadget-window - ] keep - windows get remove-hash - 0 PostQuitMessage ; - -: mouse-button ( uMsg -- n ) - { - { [ dup WM_LBUTTONDOWN = ] [ drop 1 ] } - { [ dup WM_LBUTTONUP = ] [ drop 1 ] } - { [ dup WM_MBUTTONDOWN = ] [ drop 2 ] } - { [ dup WM_MBUTTONUP = ] [ drop 2 ] } - { [ dup WM_RBUTTONDOWN = ] [ drop 3 ] } - { [ dup WM_RBUTTONUP = ] [ drop 3 ] } - { [ t ] [ "bad button" throw ] } - } cond ; - -: mouse-coordinate ( lParam -- seq ) [ lo-word ] keep hi-word 0 3array ; -: mouse-wheel ( lParam -- n ) hi-word 0 > 1 -1 ? ; - -: prepare-mouse ( hWnd uMsg wParam lParam -- ) - nip >r mouse-button r> mouse-coordinate rot get-world ; - -: handle-wm-buttondown ( hWnd uMsg wParam lParam -- ) - prepare-mouse send-button-down ; - -: handle-wm-buttonup ( hWnd uMsg wParam lParam -- ) - prepare-mouse send-button-up ; - -: handle-wm-mousemove ( hWnd uMsg wParam lParam -- ) - 2nip mouse-coordinate swap get-world move-hand ; - -: handle-wm-mousewheel ( hWnd uMsg wParam lParam -- ) - mouse-coordinate >r mouse-wheel nip r> rot get-world send-wheel ; - -! return 0 if you handle the message, else just let DefWindowProc return its val -: ui-wndproc ( hWnd uMsg wParam lParam -- lresult ) - "uint" { "void*" "uint" "long" "long" } [ - [ - pick - ! "Message: " write dup get-windows-message-name write - ! " " write dup unparse print - { - { [ dup WM_DESTROY = ] [ drop handle-wm-destroy 0 ] } - { [ dup WM_PAINT = ] [ drop handle-wm-paint 0 ] } - { [ dup WM_SIZE = ] [ drop handle-wm-size 0 ] } - - ! Keyboard events - { [ dup WM_KEYDOWN = over WM_SYSKEYDOWN = or ] - [ drop handle-wm-keydown ] } - { [ dup WM_CHAR = over WM_SYSCHAR = or ] - [ drop handle-wm-char ] } - - ! Mouse events - { [ dup WM_LBUTTONDOWN = ] [ drop handle-wm-buttondown 0 ] } - { [ dup WM_MBUTTONDOWN = ] [ drop handle-wm-buttondown 0 ] } - { [ dup WM_RBUTTONDOWN = ] [ drop handle-wm-buttondown 0 ] } - { [ dup WM_LBUTTONUP = ] [ drop handle-wm-buttonup 0 ] } - { [ dup WM_MBUTTONUP = ] [ drop handle-wm-buttonup 0 ] } - { [ dup WM_RBUTTONUP = ] [ drop handle-wm-buttonup 0 ] } - { [ dup WM_MOUSEMOVE = ] [ drop handle-wm-mousemove 0 ] } - { [ dup WM_MOUSEWHEEL = ] [ drop handle-wm-mousewheel 0 ] } - - { [ t ] [ drop DefWindowProc ] } - } cond - ] [ error. 0 ] recover - ] alien-callback ; - -: event-loop ( -- ) - msg-obj get f 0 0 PM_REMOVE PeekMessage - zero? not [ - msg-obj get MSG-message WM_QUIT = [ - msg-obj get [ TranslateMessage drop ] keep DispatchMessage drop - ] unless - ] when - ui-step windows get hash-empty? [ event-loop ] unless ; - -: register-wndclassex ( classname wndproc -- ) - "WNDCLASSEX" - "WNDCLASSEX" c-size over set-WNDCLASSEX-cbSize - CS_HREDRAW CS_VREDRAW bitor CS_OWNDC bitor over set-WNDCLASSEX-style - [ set-WNDCLASSEX-lpfnWndProc ] keep - 0 over set-WNDCLASSEX-cbClsExtra - 0 over set-WNDCLASSEX-cbWndExtra - f GetModuleHandle over set-WNDCLASSEX-hInstance - f IDI_APPLICATION LoadIcon over set-WNDCLASSEX-hIcon - f IDC_ARROW LoadCursor over set-WNDCLASSEX-hCursor - [ set-WNDCLASSEX-lpszClassName ] keep - RegisterClassEx dup win32-error=0 ; - - -: create-window ( className title width height -- hwnd ) - make-adjusted-RECT - >r >r >r ex-style r> r> - WS_CLIPSIBLINGS WS_CLIPCHILDREN bitor style bitor - 0 0 r> - get-RECT-dimensions - f f f GetModuleHandle f CreateWindowEx dup win32-error=0 ; - -: show-window ( hWnd -- ) - dup SW_SHOW ShowWindow drop ! always succeeds - dup SetForegroundWindow drop - SetFocus drop ; - -: init-win32-ui - "MSG" msg-obj set - class-name ui-wndproc register-wndclassex win32-error=0 - H{ } clone windows set - init-timers - init-ui ; - -: cleanup-win32-ui ( -- ) class-name f UnregisterClass drop ; - -: setup-pixel-format ( hdc -- ) - 16 make-pfd [ ChoosePixelFormat dup win32-error=0 ] 2keep - swapd SetPixelFormat win32-error=0 ; - -: get-dc ( hWnd -- hDC ) GetDC dup win32-error=0 ; - -: get-rc ( hDC -- hRC ) - dup wglCreateContext dup win32-error=0 - [ wglMakeCurrent win32-error=0 ] keep ; - -: setup-gl ( hwnd -- hDC hRC ) - get-dc - dup setup-pixel-format - dup get-rc ; - -: make-gadget-window ( world title -- ) - class-name swap pick rect-dim first2 create-window - dup setup-gl ; - -IN: gadgets - -: open-window* ( world title -- ) - make-gadget-window - [ [ gadget-window-hWnd ] keep gadget-window-world set-world-handle ] keep - dup gadget-window-hWnd [ windows get set-hash ] keep show-window ; - -: select-gl-context ( handle -- ) - get-gadget-window - [ - [ gadget-window-hDC ] keep gadget-window-hRC - wglMakeCurrent win32-error=0 - ] when* ; - -: flush-gl-context ( handle -- ) - get-gadget-window [ gadget-window-hDC SwapBuffers win32-error=0 ] when* ; - -IN: shells -: ui - [ - [ - init-win32-ui - launchpad-window - listener-window - event-loop - ] with-freetype - ] [ cleanup-win32-ui ] cleanup ; - -IN: kernel -: default-shell "ui" ; diff --git a/library/windows/user32.factor b/library/windows/user32.factor deleted file mode 100644 index ba59b4296b..0000000000 --- a/library/windows/user32.factor +++ /dev/null @@ -1,1371 +0,0 @@ -USING: alien parser namespaces kernel syntax words math io prettyprint ; -IN: win32-api - - -TYPEDEF: void* MSGBOXPARAMSA -TYPEDEF: void* MSGBOXPARAMSW - - -! HKL for ActivateKeyboardLayout -: HKL_PREV 0 ; -: HKL_NEXT 1 ; - -: CW_USEDEFAULT HEX: 80000000 ; - -: WS_OVERLAPPED HEX: 00000000 ; -: WS_POPUP HEX: 80000000 ; -: WS_CHILD HEX: 40000000 ; -: WS_MINIMIZE HEX: 20000000 ; -: WS_VISIBLE HEX: 10000000 ; -: WS_DISABLED HEX: 08000000 ; -: WS_CLIPSIBLINGS HEX: 04000000 ; -: WS_CLIPCHILDREN HEX: 02000000 ; -: WS_MAXIMIZE HEX: 01000000 ; -: WS_CAPTION HEX: 00C00000 ; ! /* WS_BORDER | WS_DLGFRAME */ -: WS_BORDER HEX: 00800000 ; -: WS_DLGFRAME HEX: 00400000 ; -: WS_VSCROLL HEX: 00200000 ; -: WS_HSCROLL HEX: 00100000 ; -: WS_SYSMENU HEX: 00080000 ; -: WS_THICKFRAME HEX: 00040000 ; -: WS_GROUP HEX: 00020000 ; -: WS_TABSTOP HEX: 00010000 ; -: WS_MINIMIZEBOX HEX: 00020000 ; -: WS_MAXIMIZEBOX HEX: 00010000 ; - -! Common window styles -: WS_OVERLAPPEDWINDOW WS_OVERLAPPED WS_CAPTION WS_SYSMENU WS_THICKFRAME WS_MINIMIZEBOX WS_MAXIMIZEBOX bitor bitor bitor bitor bitor ; - -: WS_POPUPWINDOW WS_POPUP WS_BORDER WS_SYSMENU bitor bitor ; - -: WS_CHILDWINDOW WS_CHILD ; - -: WS_TILED WS_OVERLAPPED ; -: WS_ICONIC WS_MINIMIZE ; -: WS_SIZEBOX WS_THICKFRAME ; -: WS_TILEDWINDOW WS_OVERLAPPEDWINDOW ; - - - -! Extended window styles - -: WS_EX_DLGMODALFRAME HEX: 00000001 ; inline -: WS_EX_NOPARENTNOTIFY HEX: 00000004 ; inline -: WS_EX_TOPMOST HEX: 00000008 ; inline -: WS_EX_ACCEPTFILES HEX: 00000010 ; inline -: WS_EX_TRANSPARENT HEX: 00000020 ; inline -: WS_EX_MDICHILD HEX: 00000040 ; inline -: WS_EX_TOOLWINDOW HEX: 00000080 ; inline -: WS_EX_WINDOWEDGE HEX: 00000100 ; inline -: WS_EX_CLIENTEDGE HEX: 00000200 ; inline -: WS_EX_CONTEXTHELP HEX: 00000400 ; inline - -: WS_EX_RIGHT HEX: 00001000 ; inline -: WS_EX_LEFT HEX: 00000000 ; inline -: WS_EX_RTLREADING HEX: 00002000 ; inline -: WS_EX_LTRREADING HEX: 00000000 ; inline -: WS_EX_LEFTSCROLLBAR HEX: 00004000 ; inline -: WS_EX_RIGHTSCROLLBAR HEX: 00000000 ; inline -: WS_EX_CONTROLPARENT HEX: 00010000 ; inline -: WS_EX_STATICEDGE HEX: 00020000 ; inline -: WS_EX_APPWINDOW HEX: 00040000 ; inline -: WS_EX_OVERLAPPEDWINDOW WS_EX_WINDOWEDGE WS_EX_CLIENTEDGE bitor ; inline -: WS_EX_PALETTEWINDOW - WS_EX_WINDOWEDGE WS_EX_TOOLWINDOW bitor WS_EX_TOPMOST bitor ; inline - - -: CS_VREDRAW HEX: 0001 ; -: CS_HREDRAW HEX: 0002 ; -: CS_DBLCLKS HEX: 0008 ; -: CS_OWNDC HEX: 0020 ; -: CS_CLASSDC HEX: 0040 ; -: CS_PARENTDC HEX: 0080 ; -: CS_NOCLOSE HEX: 0200 ; -: CS_SAVEBITS HEX: 0800 ; -: CS_BYTEALIGNCLIENT HEX: 1000 ; -: CS_BYTEALIGNWINDOW HEX: 2000 ; -: CS_GLOBALCLASS HEX: 4000 ; - -: COLOR_SCROLLBAR 0 ; -: COLOR_BACKGROUND 1 ; -: COLOR_ACTIVECAPTION 2 ; -: COLOR_INACTIVECAPTION 3 ; -: COLOR_MENU 4 ; -: COLOR_WINDOW 5 ; -: COLOR_WINDOWFRAME 6 ; -: COLOR_MENUTEXT 7 ; -: COLOR_WINDOWTEXT 8 ; -: COLOR_CAPTIONTEXT 9 ; -: COLOR_ACTIVEBORDER 10 ; -: COLOR_INACTIVEBORDER 11 ; -: COLOR_APPWORKSPACE 12 ; -: COLOR_HIGHLIGHT 13 ; -: COLOR_HIGHLIGHTTEXT 14 ; -: COLOR_BTNFACE 15 ; -: COLOR_BTNSHADOW 16 ; -: COLOR_GRAYTEXT 17 ; -: COLOR_BTNTEXT 18 ; -: COLOR_INACTIVECAPTIONTEXT 19 ; -: COLOR_BTNHIGHLIGHT 20 ; - -: IDI_APPLICATION 32512 ; -: IDI_HAND 32513 ; -: IDI_QUESTION 32514 ; -: IDI_EXCLAMATION 32515 ; -: IDI_ASTERISK 32516 ; -: IDI_WINLOGO 32517 ; - -! ShowWindow() Commands -: SW_HIDE 0 ; -: SW_SHOWNORMAL 1 ; -: SW_NORMAL 1 ; -: SW_SHOWMINIMIZED 2 ; -: SW_SHOWMAXIMIZED 3 ; -: SW_MAXIMIZE 3 ; -: SW_SHOWNOACTIVATE 4 ; -: SW_SHOW 5 ; -: SW_MINIMIZE 6 ; -: SW_SHOWMINNOACTIVE 7 ; -: SW_SHOWNA 8 ; -: SW_RESTORE 9 ; -: SW_SHOWDEFAULT 10 ; -: SW_FORCEMINIMIZE 11 ; -: SW_MAX 11 ; - -! PeekMessage -: PM_NOREMOVE 0 ; -: PM_REMOVE 1 ; -: PM_NOYIELD 2 ; -! : PM_QS_INPUT (QS_INPUT << 16) ; -! : PM_QS_POSTMESSAGE ((QS_POSTMESSAGE | QS_HOTKEY | QS_TIMER) << 16) ; -! : PM_QS_PAINT (QS_PAINT << 16) ; -! : PM_QS_SENDMESSAGE (QS_SENDMESSAGE << 16) ; - - -! -! Standard Cursor IDs -! -: IDC_ARROW 32512 ; -: IDC_IBEAM 32513 ; -: IDC_WAIT 32514 ; -: IDC_CROSS 32515 ; -: IDC_UPARROW 32516 ; -: IDC_SIZE 32640 ; ! OBSOLETE: use IDC_SIZEALL -: IDC_ICON 32641 ; ! OBSOLETE: use IDC_ARROW -: IDC_SIZENWSE 32642 ; -: IDC_SIZENESW 32643 ; -: IDC_SIZEWE 32644 ; -: IDC_SIZENS 32645 ; -: IDC_SIZEALL 32646 ; -: IDC_NO 32648 ; ! not in win3.1 -: IDC_HAND 32649 ; -: IDC_APPSTARTING 32650 ; ! not in win3.1 -: IDC_HELP 32651 ; - - - - - -! Predefined Clipboard Formats -: CF_TEXT 1 ; inline -: CF_BITMAP 2 ; inline -: CF_METAFILEPICT 3 ; inline -: CF_SYLK 4 ; inline -: CF_DIF 5 ; inline -: CF_TIFF 6 ; inline -: CF_OEMTEXT 7 ; inline -: CF_DIB 8 ; inline -: CF_PALETTE 9 ; inline -: CF_PENDATA 10 ; inline -: CF_RIFF 11 ; inline -: CF_WAVE 12 ; inline -: CF_UNICODETEXT 13 ; inline -: CF_ENHMETAFILE 14 ; inline -: CF_HDROP 15 ; inline -: CF_LOCALE 16 ; inline -: CF_DIBV5 17 ; inline -: CF_MAX 18 ; inline - -: CF_OWNERDISPLAY HEX: 0080 ; inline -: CF_DSPTEXT HEX: 0081 ; inline -: CF_DSPBITMAP HEX: 0082 ; inline -: CF_DSPMETAFILEPICT HEX: 0083 ; inline -: CF_DSPENHMETAFILE HEX: 008E ; inline - -! "Private" formats don't get GlobalFree()'d -: CF_PRIVATEFIRST HEX: 200 ; inline -: CF_PRIVATELAST HEX: 2FF ; inline - - - - - -! "GDIOBJ" formats do get DeleteObject()'d -: CF_GDIOBJFIRST HEX: 300 ; inline -: CF_GDIOBJLAST HEX: 3FF ; inline - - -: WM_NULL 0 ; inline -: WM_CREATE 1 ; inline -: WM_DESTROY 2 ; inline -: WM_MOVE 3 ; inline -: WM_SIZE 5 ; inline -: WM_ACTIVATE 6 ; inline - - -! Virtual Keys, Standard Set -: VK_LBUTTON HEX: 01 ; inline -: VK_RBUTTON HEX: 02 ; inline -: VK_CANCEL HEX: 03 ; inline -: VK_MBUTTON HEX: 04 ; inline ! NOT contiguous with L & RBUTTON -: VK_XBUTTON1 HEX: 05 ; inline ! NOT contiguous with L & RBUTTON -: VK_XBUTTON2 HEX: 06 ; inline ! NOT contiguous with L & RBUTTON -! 0x07 : unassigned -: VK_BACK HEX: 08 ; inline -: VK_TAB HEX: 09 ; inline -! 0x0A - 0x0B : reserved - -: VK_CLEAR HEX: 0C ; inline -: VK_RETURN HEX: 0D ; inline - -: VK_SHIFT HEX: 10 ; inline -: VK_CONTROL HEX: 11 ; inline -: VK_MENU HEX: 12 ; inline -: VK_PAUSE HEX: 13 ; inline -: VK_CAPITAL HEX: 14 ; inline - -: VK_KANA HEX: 15 ; inline -: VK_HANGEUL HEX: 15 ; inline ! old name - here for compatibility -: VK_HANGUL HEX: 15 ; inline -: VK_JUNJA HEX: 17 ; inline -: VK_FINAL HEX: 18 ; inline -: VK_HANJA HEX: 19 ; inline -: VK_KANJI HEX: 19 ; inline - -: VK_ESCAPE HEX: 1B ; inline - -: VK_CONVERT HEX: 1C ; inline -: VK_NONCONVERT HEX: 1D ; inline -: VK_ACCEPT HEX: 1E ; inline -: VK_MODECHANGE HEX: 1F ; inline - -: VK_SPACE HEX: 20 ; inline -: VK_PRIOR HEX: 21 ; inline -: VK_NEXT HEX: 22 ; inline -: VK_END HEX: 23 ; inline -: VK_HOME HEX: 24 ; inline -: VK_LEFT HEX: 25 ; inline -: VK_UP HEX: 26 ; inline -: VK_RIGHT HEX: 27 ; inline -: VK_DOWN HEX: 28 ; inline -: VK_SELECT HEX: 29 ; inline -: VK_PRINT HEX: 2A ; inline -: VK_EXECUTE HEX: 2B ; inline -: VK_SNAPSHOT HEX: 2C ; inline -: VK_INSERT HEX: 2D ; inline -: VK_DELETE HEX: 2E ; inline -: VK_HELP HEX: 2F ; inline - -! VK_0 - VK_9 are the same as ASCII '0' - '9' (0x30 - 0x39) -! 0x40 : unassigned -! VK_A - VK_Z are the same as ASCII 'A' - 'Z' (0x41 - 0x5A) - -: VK_LWIN HEX: 5B ; inline -: VK_RWIN HEX: 5C ; inline -: VK_APPS HEX: 5D ; inline - -! 0x5E : reserved - -: VK_SLEEP HEX: 5F ; inline - -: VK_NUMPAD0 HEX: 60 ; inline -: VK_NUMPAD1 HEX: 61 ; inline -: VK_NUMPAD2 HEX: 62 ; inline -: VK_NUMPAD3 HEX: 63 ; inline -: VK_NUMPAD4 HEX: 64 ; inline -: VK_NUMPAD5 HEX: 65 ; inline -: VK_NUMPAD6 HEX: 66 ; inline -: VK_NUMPAD7 HEX: 67 ; inline -: VK_NUMPAD8 HEX: 68 ; inline -: VK_NUMPAD9 HEX: 69 ; inline -: VK_MULTIPLY HEX: 6A ; inline -: VK_ADD HEX: 6B ; inline -: VK_SEPARATOR HEX: 6C ; inline -: VK_SUBTRACT HEX: 6D ; inline -: VK_DECIMAL HEX: 6E ; inline -: VK_DIVIDE HEX: 6F ; inline -: VK_F1 HEX: 70 ; inline -: VK_F2 HEX: 71 ; inline -: VK_F3 HEX: 72 ; inline -: VK_F4 HEX: 73 ; inline -: VK_F5 HEX: 74 ; inline -: VK_F6 HEX: 75 ; inline -: VK_F7 HEX: 76 ; inline -: VK_F8 HEX: 77 ; inline -: VK_F9 HEX: 78 ; inline -: VK_F10 HEX: 79 ; inline -: VK_F11 HEX: 7A ; inline -: VK_F12 HEX: 7B ; inline -: VK_F13 HEX: 7C ; inline -: VK_F14 HEX: 7D ; inline -: VK_F15 HEX: 7E ; inline -: VK_F16 HEX: 7F ; inline -: VK_F17 HEX: 80 ; inline -: VK_F18 HEX: 81 ; inline -: VK_F19 HEX: 82 ; inline -: VK_F20 HEX: 83 ; inline -: VK_F21 HEX: 84 ; inline -: VK_F22 HEX: 85 ; inline -: VK_F23 HEX: 86 ; inline -: VK_F24 HEX: 87 ; inline - -! 0x88 - 0x8F : unassigned - -: VK_NUMLOCK HEX: 90 ; inline -: VK_SCROLL HEX: 91 ; inline - -! NEC PC-9800 kbd definitions -: VK_OEM_NEC_EQUAL HEX: 92 ; inline ! '=' key on numpad - -! Fujitsu/OASYS kbd definitions -: VK_OEM_FJ_JISHO HEX: 92 ; inline ! 'Dictionary' key -: VK_OEM_FJ_MASSHOU HEX: 93 ; inline ! 'Unregister word' key -: VK_OEM_FJ_TOUROKU HEX: 94 ; inline ! 'Register word' key -: VK_OEM_FJ_LOYA HEX: 95 ; inline ! 'Left OYAYUBI' key -: VK_OEM_FJ_ROYA HEX: 96 ; inline ! 'Right OYAYUBI' key - -! 0x97 - 0x9F : unassigned - -! VK_L* & VK_R* - left and right Alt, Ctrl and Shift virtual keys. -! Used only as parameters to GetAsyncKeyState() and GetKeyState(). -! No other API or message will distinguish left and right keys in this way. -: VK_LSHIFT HEX: A0 ; inline -: VK_RSHIFT HEX: A1 ; inline -: VK_LCONTROL HEX: A2 ; inline -: VK_RCONTROL HEX: A3 ; inline -: VK_LMENU HEX: A4 ; inline -: VK_RMENU HEX: A5 ; inline - -: VK_BROWSER_BACK HEX: A6 ; inline -: VK_BROWSER_FORWARD HEX: A7 ; inline -: VK_BROWSER_REFRESH HEX: A8 ; inline -: VK_BROWSER_STOP HEX: A9 ; inline -: VK_BROWSER_SEARCH HEX: AA ; inline -: VK_BROWSER_FAVORITES HEX: AB ; inline -: VK_BROWSER_HOME HEX: AC ; inline - -: VK_VOLUME_MUTE HEX: AD ; inline -: VK_VOLUME_DOWN HEX: AE ; inline -: VK_VOLUME_UP HEX: AF ; inline -: VK_MEDIA_NEXT_TRACK HEX: B0 ; inline -: VK_MEDIA_PREV_TRACK HEX: B1 ; inline -: VK_MEDIA_STOP HEX: B2 ; inline -: VK_MEDIA_PLAY_PAUSE HEX: B3 ; inline -: VK_LAUNCH_MAIL HEX: B4 ; inline -: VK_LAUNCH_MEDIA_SELECT HEX: B5 ; inline -: VK_LAUNCH_APP1 HEX: B6 ; inline -: VK_LAUNCH_APP2 HEX: B7 ; inline - -! 0xB8 - 0xB9 : reserved - -: VK_OEM_1 HEX: BA ; inline ! ';:' for US -: VK_OEM_PLUS HEX: BB ; inline ! '+' any country -: VK_OEM_COMMA HEX: BC ; inline ! ',' any country -: VK_OEM_MINUS HEX: BD ; inline ! '-' any country -: VK_OEM_PERIOD HEX: BE ; inline ! '.' any country -: VK_OEM_2 HEX: BF ; inline ! '/?' for US -: VK_OEM_3 HEX: C0 ; inline ! '`~' for US - -! 0xC1 - 0xD7 : reserved - -! 0xD8 - 0xDA : unassigned - -: VK_OEM_4 HEX: DB ; inline ! '[{' for US -: VK_OEM_5 HEX: DC ; inline ! '\|' for US -: VK_OEM_6 HEX: DD ; inline ! ']}' for US -: VK_OEM_7 HEX: DE ; inline ! ''"' for US -: VK_OEM_8 HEX: DF ; inline - -! 0xE0 : reserved - -! Various extended or enhanced keyboards -: VK_OEM_AX HEX: E1 ; inline ! 'AX' key on Japanese AX kbd -: VK_OEM_102 HEX: E2 ; inline ! "<>" or "\|" on RT 102-key kbd. -: VK_ICO_HELP HEX: E3 ; inline ! Help key on ICO -: VK_ICO_00 HEX: E4 ; inline ! 00 key on ICO - -: VK_PROCESSKEY HEX: E5 ; inline - -: VK_ICO_CLEAR HEX: E6 ; inline - -: VK_PACKET HEX: E7 ; inline - -! 0xE8 : unassigned - -! Nokia/Ericsson definitions -: VK_OEM_RESET HEX: E9 ; inline -: VK_OEM_JUMP HEX: EA ; inline -: VK_OEM_PA1 HEX: EB ; inline -: VK_OEM_PA2 HEX: EC ; inline -: VK_OEM_PA3 HEX: ED ; inline -: VK_OEM_WSCTRL HEX: EE ; inline -: VK_OEM_CUSEL HEX: EF ; inline -: VK_OEM_ATTN HEX: F0 ; inline -: VK_OEM_FINISH HEX: F1 ; inline -: VK_OEM_COPY HEX: F2 ; inline -: VK_OEM_AUTO HEX: F3 ; inline -: VK_OEM_ENLW HEX: F4 ; inline -: VK_OEM_BACKTAB HEX: F5 ; inline - -: VK_ATTN HEX: F6 ; inline -: VK_CRSEL HEX: F7 ; inline -: VK_EXSEL HEX: F8 ; inline -: VK_EREOF HEX: F9 ; inline -: VK_PLAY HEX: FA ; inline -: VK_ZOOM HEX: FB ; inline -: VK_NONAME HEX: FC ; inline -: VK_PA1 HEX: FD ; inline -: VK_OEM_CLEAR HEX: FE ; inline -! 0xFF : reserved - -! Key State Masks for Mouse Messages -: MK_LBUTTON HEX: 0001 ; inline -: MK_RBUTTON HEX: 0002 ; inline -: MK_SHIFT HEX: 0004 ; inline -: MK_CONTROL HEX: 0008 ; inline -: MK_MBUTTON HEX: 0010 ; inline -: MK_XBUTTON1 HEX: 0020 ; inline -: MK_XBUTTON2 HEX: 0040 ; inline - - -! Some fields are not defined for win64 -! Window field offsets for GetWindowLong() -! TODO: win32 only!! -windows? [ - : GWL_WNDPROC -4 ; - : GWL_HINSTANCE -6 ; - : GWL_HWNDPARENT -8 ; - : GWL_USERDATA -21 ; - : GWL_ID -12 ; -] when - -: GWL_STYLE -16 ; -: GWL_EXSTYLE -20 ; - -: GWLP_WNDPROC -4 ; -: GWLP_HINSTANCE -6 ; -: GWLP_HWNDPARENT -8 ; -: GWLP_USERDATA -21 ; -: GWLP_ID -12 ; - -! Class field offsets for GetClassLong() -! TODO: win32 only! -windows? [ - : GCL_MENUNAME -8 ; - : GCL_HBRBACKGROUND -10 ; - : GCL_HCURSOR -12 ; - : GCL_HICON -14 ; - : GCL_HMODULE -16 ; - : GCL_WNDPROC -24 ; - : GCL_HICONSM -34 ; -] when -: GCL_CBWNDEXTRA -18 ; -: GCL_CBCLSEXTRA -20 ; -: GCL_STYLE -26 ; -: GCW_ATOM -32 ; - -: GCLP_MENUNAME -8 ; -: GCLP_HBRBACKGROUND -10 ; -: GCLP_HCURSOR -12 ; -: GCLP_HICON -14 ; -: GCLP_HMODULE -16 ; -: GCLP_WNDPROC -24 ; -: GCLP_HICONSM -34 ; - - - -LIBRARY: user32 -FUNCTION: HKL ActivateKeyboardLayout ( HKL hkl, UINT Flags ) ; - -FUNCTION: BOOL AdjustWindowRect ( LPRECT lpRect, DWORD dwStyle, BOOL bMenu ) ; -FUNCTION: BOOL AdjustWindowRectEx ( LPRECT lpRect, DWORD dwStyle, BOOL bMenu, DWORD dwExStyle ) ; -! FUNCTION: AlignRects -! FUNCTION: AllowForegroundActivation -! FUNCTION: AllowSetForegroundWindow -! FUNCTION: AnimateWindow - - - -FUNCTION: BOOL AnyPopup ( ) ; - -! FUNCTION: AppendMenuA -! FUNCTION: AppendMenuW -! FUNCTION: ArrangeIconicWindows -! FUNCTION: AttachThreadInput -! FUNCTION: BeginDeferWindowPos - - -FUNCTION: HDC BeginPaint ( HWND hwnd, LPPAINTSTRUCT lpPaint ) ; - -! FUNCTION: BlockInput -! FUNCTION: BringWindowToTop -! FUNCTION: BroadcastSystemMessage -! FUNCTION: BroadcastSystemMessageA -! FUNCTION: BroadcastSystemMessageExA -! FUNCTION: BroadcastSystemMessageExW -! FUNCTION: BroadcastSystemMessageW -! FUNCTION: BuildReasonArray -! FUNCTION: CalcMenuBar -! FUNCTION: CallMsgFilter -! FUNCTION: CallMsgFilterA -! FUNCTION: CallMsgFilterW -! FUNCTION: CallNextHookEx -! FUNCTION: CallWindowProcA -! FUNCTION: CallWindowProcW -! FUNCTION: CascadeChildWindows -! FUNCTION: CascadeWindows -! FUNCTION: ChangeClipboardChain -! FUNCTION: ChangeDisplaySettingsA -! FUNCTION: ChangeDisplaySettingsExA -! FUNCTION: ChangeDisplaySettingsExW -! FUNCTION: ChangeDisplaySettingsW -! FUNCTION: ChangeMenuA -! FUNCTION: ChangeMenuW -! FUNCTION: CharLowerA -! FUNCTION: CharLowerBuffA -! FUNCTION: CharLowerBuffW -! FUNCTION: CharLowerW -! FUNCTION: CharNextA -! FUNCTION: CharNextExA -! FUNCTION: CharNextW -! FUNCTION: CharPrevA -! FUNCTION: CharPrevExA -! FUNCTION: CharPrevW -! FUNCTION: CharToOemA -! FUNCTION: CharToOemBuffA -! FUNCTION: CharToOemBuffW -! FUNCTION: CharToOemW -! FUNCTION: CharUpperA -! FUNCTION: CharUpperBuffA -! FUNCTION: CharUpperBuffW -! FUNCTION: CharUpperW -! FUNCTION: CheckDlgButton -! FUNCTION: CheckMenuItem -! FUNCTION: CheckMenuRadioItem -! FUNCTION: CheckRadioButton -! FUNCTION: ChildWindowFromPoint -! FUNCTION: ChildWindowFromPointEx -! FUNCTION: ClientThreadSetup -! FUNCTION: ClientToScreen -! FUNCTION: CliImmSetHotKey -! FUNCTION: ClipCursor -FUNCTION: BOOL CloseClipboard ( ) ; -! FUNCTION: CloseDesktop -! FUNCTION: CloseWindow -! FUNCTION: CloseWindowStation -! FUNCTION: CopyAcceleratorTableA -! FUNCTION: CopyAcceleratorTableW -! FUNCTION: CopyIcon -! FUNCTION: CopyImage -! FUNCTION: CopyRect -! FUNCTION: CountClipboardFormats -! FUNCTION: CreateAcceleratorTableA -! FUNCTION: CreateAcceleratorTableW -! FUNCTION: CreateCaret -! FUNCTION: CreateCursor -! FUNCTION: CreateDesktopA -! FUNCTION: CreateDesktopW -! FUNCTION: CreateDialogIndirectParamA -! FUNCTION: CreateDialogIndirectParamAorW -! FUNCTION: CreateDialogIndirectParamW -! FUNCTION: CreateDialogParamA -! FUNCTION: CreateDialogParamW -! FUNCTION: CreateIcon -! FUNCTION: CreateIconFromResource -! FUNCTION: CreateIconFromResourceEx -! FUNCTION: CreateIconIndirect -! FUNCTION: CreateMDIWindowA -! FUNCTION: CreateMDIWindowW -! FUNCTION: CreateMenu -! FUNCTION: CreatePopupMenu -! FUNCTION: CreateSystemThreads - -FUNCTION: HWND CreateWindowExA ( - DWORD dwExStyle, - LPCSTR lpClassName, - LPCSTR lpWindowName, - DWORD dwStyle, - uint X, - uint Y, - uint nWidth, - uint nHeight, - HWND hWndParent, - HMENU hMenu, - HINSTANCE hInstance, - LPVOID lpParam ) ; - -FUNCTION: HWND CreateWindowExW ( - DWORD dwExStyle, - LPCWSTR lpClassName, - LPCWSTR lpWindowName, - DWORD dwStyle, - uint X, - uint Y, - uint nWidth, - uint nHeight, - HWND hWndParent, - HMENU hMenu, - HINSTANCE hInstance, - LPVOID lpParam ) ; - -: CreateWindowEx \ CreateWindowExW \ CreateWindowExA unicode-exec ; - -! 11 >r r >r >r >r >r >r >r >r >r >r >r 0 r> r> r> r> r> r> r> r> r> r> r> CreateWindowEx ; - - -! FUNCTION: CreateWindowStationA -! FUNCTION: CreateWindowStationW -! FUNCTION: CsrBroadcastSystemMessageExW -! FUNCTION: CtxInitUser32 -! FUNCTION: DdeAbandonTransaction -! FUNCTION: DdeAccessData -! FUNCTION: DdeAddData -! FUNCTION: DdeClientTransaction -! FUNCTION: DdeCmpStringHandles -! FUNCTION: DdeConnect -! FUNCTION: DdeConnectList -! FUNCTION: DdeCreateDataHandle -! FUNCTION: DdeCreateStringHandleA -! FUNCTION: DdeCreateStringHandleW -! FUNCTION: DdeDisconnect -! FUNCTION: DdeDisconnectList -! FUNCTION: DdeEnableCallback -! FUNCTION: DdeFreeDataHandle -! FUNCTION: DdeFreeStringHandle -! FUNCTION: DdeGetData -! FUNCTION: DdeGetLastError -! FUNCTION: DdeGetQualityOfService -! FUNCTION: DdeImpersonateClient -! FUNCTION: DdeInitializeA -! FUNCTION: DdeInitializeW -! FUNCTION: DdeKeepStringHandle -! FUNCTION: DdeNameService -! FUNCTION: DdePostAdvise -! FUNCTION: DdeQueryConvInfo -! FUNCTION: DdeQueryNextServer -! FUNCTION: DdeQueryStringA -! FUNCTION: DdeQueryStringW -! FUNCTION: DdeReconnect -! FUNCTION: DdeSetQualityOfService -! FUNCTION: DdeSetUserHandle -! FUNCTION: DdeUnaccessData -! FUNCTION: DdeUninitialize -! FUNCTION: DefDlgProcA -! FUNCTION: DefDlgProcW -! FUNCTION: DeferWindowPos -! FUNCTION: DefFrameProcA -! FUNCTION: DefFrameProcW -! FUNCTION: DefMDIChildProcA -! FUNCTION: DefMDIChildProcW -! FUNCTION: DefRawInputProc -FUNCTION: LRESULT DefWindowProcA ( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam ) ; -FUNCTION: LRESULT DefWindowProcW ( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam ) ; -: DefWindowProc \ DefWindowProcW \ DefWindowProcA unicode-exec ; -! FUNCTION: DeleteMenu -! FUNCTION: DeregisterShellHookWindow -! FUNCTION: DestroyAcceleratorTable -! FUNCTION: DestroyCaret -! FUNCTION: DestroyCursor -! FUNCTION: DestroyIcon -! FUNCTION: DestroyMenu -! FUNCTION: DestroyReasons -FUNCTION: BOOL DestroyWindow ( HWND hWnd ) ; -! FUNCTION: DeviceEventWorker -! FUNCTION: DialogBoxIndirectParamA -! FUNCTION: DialogBoxIndirectParamAorW -! FUNCTION: DialogBoxIndirectParamW -! FUNCTION: DialogBoxParamA -! FUNCTION: DialogBoxParamW -! FUNCTION: DisableProcessWindowsGhosting - -FUNCTION: LONG DispatchMessageA ( MSG* lpMsg ) ; -FUNCTION: LONG DispatchMessageW ( MSG* lpMsg ) ; -: DispatchMessage \ DispatchMessageW \ DispatchMessageA unicode-exec ; - -! FUNCTION: DisplayExitWindowsWarnings -! FUNCTION: DlgDirListA -! FUNCTION: DlgDirListComboBoxA -! FUNCTION: DlgDirListComboBoxW -! FUNCTION: DlgDirListW -! FUNCTION: DlgDirSelectComboBoxExA -! FUNCTION: DlgDirSelectComboBoxExW -! FUNCTION: DlgDirSelectExA -! FUNCTION: DlgDirSelectExW -! FUNCTION: DragDetect -! FUNCTION: DragObject - - -FUNCTION: BOOL DrawAnimatedRects ( HWND hWnd, int idAni, RECT* lprcFrom, RECT* lprcTo ) ; -! FUNCTION: BOOL DrawCaption ( HWND hWnd, HDC hdc, LPRECT lprc, UINT uFlags ) ; - -! FUNCTION: DrawEdge -! FUNCTION: DrawFocusRect -! FUNCTION: DrawFrame -! FUNCTION: DrawFrameControl -! FUNCTION: DrawIcon -! FUNCTION: DrawIconEx -! FUNCTION: DrawMenuBar -! FUNCTION: DrawMenuBarTemp -! FUNCTION: DrawStateA -! FUNCTION: DrawStateW -! FUNCTION: DrawTextA -! FUNCTION: DrawTextExA -! FUNCTION: DrawTextExW -! FUNCTION: DrawTextW -! FUNCTION: EditWndProc -FUNCTION: BOOL EmptyClipboard ( ) ; -! FUNCTION: EnableMenuItem -! FUNCTION: EnableScrollBar -! FUNCTION: EnableWindow -! FUNCTION: EndDeferWindowPos -! FUNCTION: EndDialog -! FUNCTION: EndMenu - -FUNCTION: BOOL EndPaint ( HWND hWnd, PAINTSTRUCT* lpPaint) ; - -! FUNCTION: EndTask -! FUNCTION: EnterReaderModeHelper -! FUNCTION: EnumChildWindows -FUNCTION: UINT EnumClipboardFormats ( UINT format ) ; -! FUNCTION: EnumDesktopsA -! FUNCTION: EnumDesktopsW -! FUNCTION: EnumDesktopWindows -! FUNCTION: EnumDisplayDevicesA -! FUNCTION: EnumDisplayDevicesW -! FUNCTION: EnumDisplayMonitors -! FUNCTION: EnumDisplaySettingsA -! FUNCTION: EnumDisplaySettingsExA -! FUNCTION: EnumDisplaySettingsExW -! FUNCTION: EnumDisplaySettingsW -! FUNCTION: EnumPropsA -! FUNCTION: EnumPropsExA -! FUNCTION: EnumPropsExW -! FUNCTION: EnumPropsW -! FUNCTION: EnumThreadWindows -! FUNCTION: EnumWindows -! FUNCTION: EnumWindowStationsA -! FUNCTION: EnumWindowStationsW -! FUNCTION: EqualRect -! FUNCTION: ExcludeUpdateRgn -! FUNCTION: ExitWindowsEx -! FUNCTION: FillRect -! FUNCTION: FindWindowA -! FUNCTION: FindWindowExA -! FUNCTION: FindWindowExW -! FUNCTION: FindWindowW -! FUNCTION: FlashWindow -! FUNCTION: FlashWindowEx -! FUNCTION: FrameRect -! FUNCTION: FreeDDElParam -! FUNCTION: GetActiveWindow -! FUNCTION: GetAltTabInfo -! FUNCTION: GetAltTabInfoA -! FUNCTION: GetAltTabInfoW -! FUNCTION: GetAncestor -! FUNCTION: GetAppCompatFlags -! FUNCTION: GetAppCompatFlags2 -! FUNCTION: GetAsyncKeyState -! FUNCTION: GetCapture -! FUNCTION: GetCaretBlinkTime -! FUNCTION: GetCaretPos -FUNCTION: BOOL GetClassInfoA ( HINSTANCE hInst, LPCTSTR lpszClass, LPWNDCLASS lpwcx ) ; -FUNCTION: BOOL GetClassInfoW ( HINSTANCE hInst, LPCWSTR lpszClass, LPWNDCLASS lpwcx ) ; -: GetClassInfo \ GetClassInfoW \ GetClassInfoA unicode-exec ; - -FUNCTION: BOOL GetClassInfoExA ( HINSTANCE hInst, LPCTSTR lpszClass, LPWNDCLASSEX lpwcx ) ; -FUNCTION: BOOL GetClassInfoExW ( HINSTANCE hInst, LPCWSTR lpszClass, LPWNDCLASSEX lpwcx ) ; -: GetClassInfoEx \ GetClassInfoExW \ GetClassInfoExA unicode-exec ; - -FUNCTION: ULONG_PTR GetClassLongA ( HWND hWnd, int nIndex ) ; -FUNCTION: ULONG_PTR GetClassLongW ( HWND hWnd, int nIndex ) ; -: GetClassLong \ GetClassLongW \ GetClassLongA unicode-exec ; -: GetClassLongPtr \ GetClassLongW \ GetClassLongA unicode-exec ; - - -! FUNCTION: GetClassNameA -! FUNCTION: GetClassNameW -! FUNCTION: GetClassWord -! FUNCTION: BOOL GetClientRect ( HWND hWnd, LPRECT lpRect ) ; - -FUNCTION: HANDLE GetClipboardData ( UINT uFormat ) ; - -! FUNCTION: GetClipboardFormatNameA -! FUNCTION: GetClipboardFormatNameW -FUNCTION: HWND GetClipboardOwner ( ) ; -FUNCTION: DWORD GetClipboardSequenceNumber ( ) ; -! FUNCTION: GetClipboardViewer -! FUNCTION: GetClipCursor -! FUNCTION: GetComboBoxInfo -! FUNCTION: GetCursor -! FUNCTION: GetCursorFrameInfo -! FUNCTION: GetCursorInfo -! FUNCTION: GetCursorPos -FUNCTION: HDC GetDC ( HWND hWnd ) ; -FUNCTION: HDC GetDCEx ( HWND hWnd, HRGN hrgnClip, DWORD flags ) ; -! FUNCTION: GetDesktopWindow -! FUNCTION: GetDialogBaseUnits -! FUNCTION: GetDlgCtrlID -! FUNCTION: GetDlgItem -! FUNCTION: GetDlgItemInt -! FUNCTION: GetDlgItemTextA -! FUNCTION: GetDlgItemTextW -! FUNCTION: GetDoubleClickTime -FUNCTION: HWND GetFocus ( ) ; -! FUNCTION: GetForegroundWindow -! FUNCTION: GetGuiResources -! FUNCTION: GetGUIThreadInfo -! FUNCTION: GetIconInfo -! FUNCTION: GetInputDesktop -! FUNCTION: GetInputState -! FUNCTION: GetInternalWindowPos -! FUNCTION: GetKBCodePage -! FUNCTION: GetKeyboardLayout -! FUNCTION: GetKeyboardLayoutList -! FUNCTION: GetKeyboardLayoutNameA -! FUNCTION: GetKeyboardLayoutNameW -! FUNCTION: GetKeyboardState -! FUNCTION: GetKeyboardType -! FUNCTION: GetKeyNameTextA -! FUNCTION: GetKeyNameTextW -FUNCTION: SHORT GetKeyState ( int nVirtKey ) ; -! FUNCTION: GetLastActivePopup -! FUNCTION: GetLastInputInfo -! FUNCTION: GetLayeredWindowAttributes -! FUNCTION: GetListBoxInfo -! FUNCTION: GetMenu -! FUNCTION: GetMenuBarInfo -! FUNCTION: GetMenuCheckMarkDimensions -! FUNCTION: GetMenuContextHelpId -! FUNCTION: GetMenuDefaultItem -! FUNCTION: GetMenuInfo -! FUNCTION: GetMenuItemCount -! FUNCTION: GetMenuItemID -! FUNCTION: GetMenuItemInfoA -! FUNCTION: GetMenuItemInfoW -! FUNCTION: GetMenuItemRect -! FUNCTION: GetMenuState -! FUNCTION: GetMenuStringA -! FUNCTION: GetMenuStringW - -FUNCTION: BOOL GetMessageA ( LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax ) ; -FUNCTION: BOOL GetMessageW ( LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax ) ; -: GetMessage \ GetMessageW \ GetMessageA unicode-exec ; - -! FUNCTION: GetMessageExtraInfo -! FUNCTION: GetMessagePos -! FUNCTION: GetMessageTime -! FUNCTION: GetMonitorInfoA -! FUNCTION: GetMonitorInfoW -! FUNCTION: GetMouseMovePointsEx -! FUNCTION: GetNextDlgGroupItem -! FUNCTION: GetNextDlgTabItem -! FUNCTION: GetOpenClipboardWindow -FUNCTION: HWND GetParent ( HWND hWnd ) ; -FUNCTION: int GetPriorityClipboardFormat ( UINT* paFormatPriorityList, int cFormats ) ; -! FUNCTION: GetProcessDefaultLayout -! FUNCTION: GetProcessWindowStation -! FUNCTION: GetProgmanWindow -! FUNCTION: GetPropA -! FUNCTION: GetPropW -! FUNCTION: GetQueueStatus -! FUNCTION: GetRawInputBuffer -! FUNCTION: GetRawInputData -! FUNCTION: GetRawInputDeviceInfoA -! FUNCTION: GetRawInputDeviceInfoW -! FUNCTION: GetRawInputDeviceList -! FUNCTION: GetReasonTitleFromReasonCode -! FUNCTION: GetRegisteredRawInputDevices -! FUNCTION: GetScrollBarInfo -! FUNCTION: GetScrollInfo -! FUNCTION: GetScrollPos -! FUNCTION: GetScrollRange -! FUNCTION: GetShellWindow -! FUNCTION: GetSubMenu -! FUNCTION: GetSysColor -FUNCTION: HBRUSH GetSysColorBrush ( int nIndex ) ; -! FUNCTION: GetSystemMenu -! FUNCTION: GetSystemMetrics -! FUNCTION: GetTabbedTextExtentA -! FUNCTION: GetTabbedTextExtentW -! FUNCTION: GetTaskmanWindow -! FUNCTION: GetThreadDesktop -! FUNCTION: GetTitleBarInfo - - -FUNCTION: HWND GetTopWindow ( HWND hWnd ) ; -! FUNCTION: BOOL GetUpdateRect ( HWND hWnd, LPRECT lpRect, BOOL bErase ) ; -FUNCTION: int GetUpdateRgn ( HWND hWnd, HRGN hRgn, BOOL bErase ) ; - - -! FUNCTION: GetUserObjectInformationA -! FUNCTION: GetUserObjectInformationW -! FUNCTION: GetUserObjectSecurity -FUNCTION: HWND GetWindow ( HWND hWnd, UINT uCmd ) ; -! FUNCTION: GetWindowContextHelpId -! FUNCTION: GetWindowDC -! FUNCTION: GetWindowInfo -! FUNCTION: GetWindowLongA -! FUNCTION: GetWindowLongW -! FUNCTION: GetWindowModuleFileName -! FUNCTION: GetWindowModuleFileNameA -! FUNCTION: GetWindowModuleFileNameW -! FUNCTION: GetWindowPlacement -! FUNCTION: BOOL GetWindowRect ( HWND hWnd, LPRECT lpRect ) ; -! FUNCTION: GetWindowRgn -! FUNCTION: GetWindowRgnBox -! FUNCTION: GetWindowTextA -! FUNCTION: GetWindowTextLengthA -! FUNCTION: GetWindowTextLengthW -! FUNCTION: GetWindowTextW -! FUNCTION: GetWindowThreadProcessId -! FUNCTION: GetWindowWord -! FUNCTION: GetWinStationInfo -! FUNCTION: GrayStringA -! FUNCTION: GrayStringW -! FUNCTION: HideCaret -! FUNCTION: HiliteMenuItem -! FUNCTION: ImpersonateDdeClientWindow -! FUNCTION: IMPGetIMEA -! FUNCTION: IMPGetIMEW -! FUNCTION: IMPQueryIMEA -! FUNCTION: IMPQueryIMEW -! FUNCTION: IMPSetIMEA -! FUNCTION: IMPSetIMEW -! FUNCTION: InflateRect -! FUNCTION: InitializeLpkHooks -! FUNCTION: InitializeWin32EntryTable -! FUNCTION: InSendMessage -! FUNCTION: InSendMessageEx -! FUNCTION: InsertMenuA -! FUNCTION: InsertMenuItemA -! FUNCTION: InsertMenuItemW -! FUNCTION: InsertMenuW -! FUNCTION: InternalGetWindowText -! FUNCTION: IntersectRect -! FUNCTION: InvalidateRect -! FUNCTION: InvalidateRgn -! FUNCTION: InvertRect -! FUNCTION: IsCharAlphaA -! FUNCTION: IsCharAlphaNumericA -! FUNCTION: IsCharAlphaNumericW -! FUNCTION: IsCharAlphaW -! FUNCTION: IsCharLowerA -! FUNCTION: IsCharLowerW -! FUNCTION: IsCharUpperA -! FUNCTION: IsCharUpperW -FUNCTION: BOOL IsChild ( HWND hWndParent, HWND hWnd ) ; -FUNCTION: BOOL IsClipboardFormatAvailable ( UINT format ) ; -! FUNCTION: IsDialogMessage -! FUNCTION: IsDialogMessageA -! FUNCTION: IsDialogMessageW -! FUNCTION: IsDlgButtonChecked -FUNCTION: BOOL IsGUIThread ( BOOL bConvert ) ; -FUNCTION: BOOL IsHungAppWindow ( HWND hWnd ) ; -FUNCTION: BOOL IsIconic ( HWND hWnd ) ; -FUNCTION: BOOL IsMenu ( HMENU hMenu ) ; -! FUNCTION: BOOL IsRectEmpty -! FUNCTION: BOOL IsServerSideWindow -FUNCTION: BOOL IsWindow ( HWND hWnd ) ; -! FUNCTION: BOOL IsWindowEnabled -! FUNCTION: BOOL IsWindowInDestroy -FUNCTION: BOOL IsWindowUnicode ( HWND hWnd ) ; -FUNCTION: BOOL IsWindowVisible ( HWND hWnd ) ; -! FUNCTION: BOOL IsWinEventHookInstalled -FUNCTION: BOOL IsZoomed ( HWND hWnd ) ; -! FUNCTION: keybd_event -! FUNCTION: KillSystemTimer -! FUNCTION: KillTimer -! FUNCTION: LoadAcceleratorsA -! FUNCTION: LoadAcceleratorsW -! FUNCTION: LoadBitmapA -! FUNCTION: LoadBitmapW -! FUNCTION: LoadCursorFromFileA -! FUNCTION: LoadCursorFromFileW - - -! FUNCTION: HCURSOR LoadCursorA ( HINSTANCE hInstance, LPCTSTR lpCursorName ) ; -! FUNCTION: HCURSOR LoadCursorW ( HINSTANCE hInstance, LPCWSTR lpCursorName ) ; -FUNCTION: HCURSOR LoadCursorA ( HINSTANCE hInstance, ushort lpCursorName ) ; -FUNCTION: HCURSOR LoadCursorW ( HINSTANCE hInstance, ushort lpCursorName ) ; -: LoadCursor \ LoadCursorW \ LoadCursorA unicode-exec ; - -! FUNCTION: HICON LoadIconA ( HINSTANCE hInstance, LPCTSTR lpIconName ) ; -! FUNCTION: HICON LoadIconW ( HINSTANCE hInstance, LPCWSTR lpIconName ) ; -FUNCTION: HICON LoadIconA ( HINSTANCE hInstance, ushort lpIconName ) ; -FUNCTION: HICON LoadIconW ( HINSTANCE hInstance, ushort lpIconName ) ; -: LoadIcon \ LoadIconW \ LoadIconA unicode-exec ; - -! FUNCTION: LoadImageA -! FUNCTION: LoadImageW -! FUNCTION: LoadKeyboardLayoutA -! FUNCTION: LoadKeyboardLayoutEx -! FUNCTION: LoadKeyboardLayoutW -! FUNCTION: LoadLocalFonts -! FUNCTION: LoadMenuA -! FUNCTION: LoadMenuIndirectA -! FUNCTION: LoadMenuIndirectW -! FUNCTION: LoadMenuW -! FUNCTION: LoadRemoteFonts -! FUNCTION: LoadStringA -! FUNCTION: LoadStringW -! FUNCTION: LockSetForegroundWindow -! FUNCTION: LockWindowStation -! FUNCTION: LockWindowUpdate -! FUNCTION: LockWorkStation -! FUNCTION: LookupIconIdFromDirectory -! FUNCTION: LookupIconIdFromDirectoryEx -! FUNCTION: MapDialogRect -! FUNCTION: MapVirtualKeyA -! FUNCTION: MapVirtualKeyExA -! FUNCTION: MapVirtualKeyExW -! FUNCTION: MapVirtualKeyW -! FUNCTION: MapWindowPoints -! FUNCTION: MB_GetString -! FUNCTION: MBToWCSEx -! FUNCTION: MenuItemFromPoint -! FUNCTION: MenuWindowProcA -! FUNCTION: MenuWindowProcW - - -: MB_ICONASTERISK HEX: 00000040 ; -: MB_ICONEXCLAMATION HEX: 00000030 ; -: MB_ICONHAND HEX: 00000010 ; -: MB_ICONQUESTION HEX: 00000020 ; -: MB_OK HEX: 00000000 ; -! -1 is Simple beep -FUNCTION: BOOL MessageBeep ( UINT uType ) ; - -FUNCTION: int MessageBoxA ( - HWND hWnd, - LPCSTR lpText, - LPCSTR lpCaption, - UINT uType ) ; - -FUNCTION: int MessageBoxW ( - HWND hWnd, - LPCWSTR lpText, - LPCWSTR lpCaption, - UINT uType) ; - -FUNCTION: int MessageBoxExA ( HWND hWnd, - LPCSTR lpText, - LPCSTR lpCaption, - UINT uType, - WORD wLanguageId - ) ; - -FUNCTION: int MessageBoxExW ( - HWND hWnd, - LPCWSTR lpText, - LPCWSTR lpCaption, - UINT uType, - WORD wLanguageId ) ; - -FUNCTION: int MessageBoxIndirectA ( - MSGBOXPARAMSA* params ) ; - -FUNCTION: int MessageBoxIndirectW ( - MSGBOXPARAMSW* params ) ; - - -: MessageBox ( -- ) - \ MessageBoxW \ MessageBoxA unicode-exec ; - -: MessageBoxEx ( -- ) - \ MessageBoxExW \ MessageBoxExA unicode-exec ; - -: MessageBoxIndirect ( -- ) - \ MessageBoxIndirectW \ MessageBoxIndirectA unicode-exec ; - -! FUNCTION: MessageBoxTimeoutA ! dllexported, not in header -! FUNCTION: MessageBoxTimeoutW ! dllexported, not in header - -! FUNCTION: ModifyMenuA -! FUNCTION: ModifyMenuW -! FUNCTION: MonitorFromPoint -! FUNCTION: MonitorFromRect -! FUNCTION: MonitorFromWindow -! FUNCTION: mouse_event - - - -FUNCTION: BOOL MoveWindow ( - HWND hWnd, - int X, - int Y, - int nWidth, - int nHeight, - BOOL bRepaint ) ; - - -! FUNCTION: MsgWaitForMultipleObjects -! FUNCTION: MsgWaitForMultipleObjectsEx -! FUNCTION: NotifyWinEvent -! FUNCTION: OemKeyScan -! FUNCTION: OemToCharA -! FUNCTION: OemToCharBuffA -! FUNCTION: OemToCharBuffW -! FUNCTION: OemToCharW -! FUNCTION: OffsetRect -FUNCTION: BOOL OpenClipboard ( HWND hWndNewOwner ) ; -! FUNCTION: OpenDesktopA -! FUNCTION: OpenDesktopW -! FUNCTION: OpenIcon -! FUNCTION: OpenInputDesktop -! FUNCTION: OpenWindowStationA -! FUNCTION: OpenWindowStationW -! FUNCTION: PackDDElParam -! FUNCTION: PaintDesktop -! FUNCTION: PaintMenuBar -FUNCTION: BOOL PeekMessageA ( LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax, UINT wRemoveMsg ) ; -FUNCTION: BOOL PeekMessageW ( LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax, UINT wRemoveMsg ) ; -: PeekMessage \ PeekMessageW \ PeekMessageA unicode-exec ; - -! FUNCTION: PostMessageA -! FUNCTION: PostMessageW -FUNCTION: void PostQuitMessage ( int nExitCode ) ; -! FUNCTION: PostThreadMessageA -! FUNCTION: PostThreadMessageW -! FUNCTION: PrintWindow -! FUNCTION: PrivateExtractIconExA -! FUNCTION: PrivateExtractIconExW -! FUNCTION: PrivateExtractIconsA -! FUNCTION: PrivateExtractIconsW -! FUNCTION: PrivateSetDbgTag -! FUNCTION: PrivateSetRipFlags -! FUNCTION: PtInRect -! FUNCTION: QuerySendMessage -! FUNCTION: QueryUserCounters -! FUNCTION: RealChildWindowFromPoint -! FUNCTION: RealGetWindowClass -! FUNCTION: RealGetWindowClassA -! FUNCTION: RealGetWindowClassW -! FUNCTION: ReasonCodeNeedsBugID -! FUNCTION: ReasonCodeNeedsComment -! FUNCTION: RecordShutdownReason -! FUNCTION: RedrawWindow - -FUNCTION: ATOM RegisterClassA ( WNDCLASS* lpWndClass) ; -FUNCTION: ATOM RegisterClassW ( WNDCLASS* lpWndClass ) ; -FUNCTION: ATOM RegisterClassExA ( WNDCLASSEX* lpwcx ) ; -FUNCTION: ATOM RegisterClassExW ( WNDCLASSEX* lpwcx ) ; - -: RegisterClass \ RegisterClassW \ RegisterClassA unicode-exec ; -: RegisterClassEx \ RegisterClassExW \ RegisterClassExA unicode-exec ; - -! FUNCTION: RegisterClipboardFormatA -! FUNCTION: RegisterClipboardFormatW -! FUNCTION: RegisterDeviceNotificationA -! FUNCTION: RegisterDeviceNotificationW -! FUNCTION: RegisterHotKey -! FUNCTION: RegisterLogonProcess -! FUNCTION: RegisterMessagePumpHook -! FUNCTION: RegisterRawInputDevices -! FUNCTION: RegisterServicesProcess -! FUNCTION: RegisterShellHookWindow -! FUNCTION: RegisterSystemThread -! FUNCTION: RegisterTasklist -! FUNCTION: RegisterUserApiHook -! FUNCTION: RegisterWindowMessageA -! FUNCTION: RegisterWindowMessageW -! FUNCTION: ReleaseCapture -FUNCTION: int ReleaseDC ( HWND hWnd, HDC hDC ) ; -! FUNCTION: RemoveMenu -! FUNCTION: RemovePropA -! FUNCTION: RemovePropW -! FUNCTION: ReplyMessage -! FUNCTION: ResolveDesktopForWOW -! FUNCTION: ReuseDDElParam -! FUNCTION: ScreenToClient -! FUNCTION: ScrollChildren -! FUNCTION: ScrollDC -! FUNCTION: ScrollWindow -! FUNCTION: ScrollWindowEx -! FUNCTION: SendDlgItemMessageA -! FUNCTION: SendDlgItemMessageW -! FUNCTION: SendIMEMessageExA -! FUNCTION: SendIMEMessageExW -! FUNCTION: UINT SendInput ( UINT nInputs, LPINPUT pInputs, int cbSize ) ; -! FUNCTION: SendMessageA -! FUNCTION: SendMessageCallbackA -! FUNCTION: SendMessageCallbackW -! FUNCTION: SendMessageTimeoutA -! FUNCTION: SendMessageTimeoutW -! FUNCTION: SendMessageW -! FUNCTION: SendNotifyMessageA -! FUNCTION: SendNotifyMessageW -! FUNCTION: SetActiveWindow -! FUNCTION: SetCapture -! FUNCTION: SetCaretBlinkTime -! FUNCTION: SetCaretPos - -FUNCTION: ULONG_PTR SetClassLongW ( HWND hWnd, int nIndex, LONG_PTR dwNewLong ) ; -FUNCTION: ULONG_PTR SetClassLongA ( HWND hWnd, int nIndex, LONG_PTR dwNewLong ) ; -: SetClassLongPtr \ SetClassLongW \ SetClassLongA unicode-exec ; -: SetClassLong \ SetClassLongW \ SetClassLongA unicode-exec ; - -! FUNCTION: SetClassWord -FUNCTION: HANDLE SetClipboardData ( UINT uFormat, HANDLE hMem ) ; -! FUNCTION: SetClipboardViewer -! FUNCTION: SetConsoleReserveKeys -! FUNCTION: SetCursor -! FUNCTION: SetCursorContents -! FUNCTION: SetCursorPos -! FUNCTION: SetDebugErrorLevel -! FUNCTION: SetDeskWallpaper -! FUNCTION: SetDlgItemInt -! FUNCTION: SetDlgItemTextA -! FUNCTION: SetDlgItemTextW -! FUNCTION: SetDoubleClickTime -FUNCTION: HWND SetFocus ( HWND hWnd ) ; -FUNCTION: BOOL SetForegroundWindow ( HWND hWnd ) ; -! FUNCTION: SetInternalWindowPos -! FUNCTION: SetKeyboardState -! type is ignored -FUNCTION: void SetLastErrorEx ( DWORD dwErrCode, DWORD dwType ) ; -: SetLastError 0 SetLastErrorEx ; -! FUNCTION: SetLayeredWindowAttributes -! FUNCTION: SetLogonNotifyWindow -! FUNCTION: SetMenu -! FUNCTION: SetMenuContextHelpId -! FUNCTION: SetMenuDefaultItem -! FUNCTION: SetMenuInfo -! FUNCTION: SetMenuItemBitmaps -! FUNCTION: SetMenuItemInfoA -! FUNCTION: SetMenuItemInfoW -! FUNCTION: SetMessageExtraInfo -! FUNCTION: SetMessageQueue -! FUNCTION: SetParent -! FUNCTION: SetProcessDefaultLayout -! FUNCTION: SetProcessWindowStation -! FUNCTION: SetProgmanWindow -! FUNCTION: SetPropA -! FUNCTION: SetPropW -! FUNCTION: SetRect -! FUNCTION: SetRectEmpty -! FUNCTION: SetScrollInfo -! FUNCTION: SetScrollPos -! FUNCTION: SetScrollRange -! FUNCTION: SetShellWindow -! FUNCTION: SetShellWindowEx -! FUNCTION: SetSysColors -! FUNCTION: SetSysColorsTemp -! FUNCTION: SetSystemCursor -! FUNCTION: SetSystemMenu -! FUNCTION: SetSystemTimer -! FUNCTION: SetTaskmanWindow -! FUNCTION: SetThreadDesktop -! FUNCTION: SetTimer -! FUNCTION: SetUserObjectInformationA -! FUNCTION: SetUserObjectInformationW -! FUNCTION: SetUserObjectSecurity -! FUNCTION: SetWindowContextHelpId -! FUNCTION: SetWindowLongA -! FUNCTION: SetWindowLongW -! FUNCTION: SetWindowPlacement -! FUNCTION: SetWindowPos -! FUNCTION: SetWindowRgn -! FUNCTION: SetWindowsHookA -! FUNCTION: SetWindowsHookExA -! FUNCTION: SetWindowsHookExW -! FUNCTION: SetWindowsHookW -! FUNCTION: SetWindowStationUser -! FUNCTION: SetWindowTextA -! FUNCTION: SetWindowTextW -! FUNCTION: SetWindowWord -! FUNCTION: SetWinEventHook -! FUNCTION: ShowCaret -! FUNCTION: ShowCursor -! FUNCTION: ShowOwnedPopups -! FUNCTION: ShowScrollBar -! FUNCTION: ShowStartGlass - -FUNCTION: BOOL ShowWindow ( HWND hWnd, int nCmdShow ) ; - -! FUNCTION: ShowWindowAsync -! FUNCTION: SoftModalMessageBox -! FUNCTION: SubtractRect -! FUNCTION: SwapMouseButton -! FUNCTION: SwitchDesktop -! FUNCTION: SwitchToThisWindow -! FUNCTION: SystemParametersInfoA -! FUNCTION: SystemParametersInfoW -! FUNCTION: TabbedTextOutA -! FUNCTION: TabbedTextOutW -! FUNCTION: TileChildWindows -! FUNCTION: TileWindows -! FUNCTION: ToAscii -! FUNCTION: ToAsciiEx -! FUNCTION: ToUnicode -! FUNCTION: ToUnicodeEx -! FUNCTION: TrackMouseEvent -! FUNCTION: TrackPopupMenu -! FUNCTION: TrackPopupMenuEx -! FUNCTION: TranslateAccelerator -! FUNCTION: TranslateAcceleratorA -! FUNCTION: TranslateAcceleratorW -! FUNCTION: TranslateMDISysAccel -FUNCTION: BOOL TranslateMessage ( MSG* lpMsg ) ; - -! FUNCTION: UnhookWindowsHook -! FUNCTION: UnhookWindowsHookEx -! FUNCTION: UnhookWinEvent -! FUNCTION: UnionRect -! FUNCTION: UnloadKeyboardLayout -! FUNCTION: UnlockWindowStation -! FUNCTION: UnpackDDElParam -FUNCTION: BOOL UnregisterClassA ( LPCTSTR lpClassName, HINSTANCE hInstance ) ; -FUNCTION: BOOL UnregisterClassW ( LPCWSTR lpClassName, HINSTANCE hInstance ) ; -: UnregisterClass \ UnregisterClassW \ UnregisterClassA unicode-exec ; -! FUNCTION: UnregisterDeviceNotification -! FUNCTION: UnregisterHotKey -! FUNCTION: UnregisterMessagePumpHook -! FUNCTION: UnregisterUserApiHook -! FUNCTION: UpdateLayeredWindow -! FUNCTION: UpdatePerUserSystemParameters - - -FUNCTION: BOOL UpdateWindow ( HWND hWnd ) ; - -! FUNCTION: User32InitializeImmEntryTable -! FUNCTION: UserClientDllInitialize -! FUNCTION: UserHandleGrantAccess -! FUNCTION: UserLpkPSMTextOut -! FUNCTION: UserLpkTabbedTextOut -! FUNCTION: UserRealizePalette -! FUNCTION: UserRegisterWowHandlers -! FUNCTION: ValidateRect -! FUNCTION: ValidateRgn -! FUNCTION: VkKeyScanA -! FUNCTION: VkKeyScanExA -! FUNCTION: VkKeyScanExW -! FUNCTION: VkKeyScanW -! FUNCTION: VRipOutput -! FUNCTION: VTagOutput -! FUNCTION: WaitForInputIdle -! FUNCTION: WaitMessage -! FUNCTION: WCSToMBEx -! FUNCTION: Win32PoolAllocationStats -! FUNCTION: WindowFromDC -! FUNCTION: WindowFromPoint -! FUNCTION: WinHelpA -! FUNCTION: WinHelpW -! FUNCTION: WINNLSEnableIME -! FUNCTION: WINNLSGetEnableStatus -! FUNCTION: WINNLSGetIMEHotkey -! FUNCTION: wsprintfA -! FUNCTION: wsprintfW -! FUNCTION: wvsprintfA -! FUNCTION: wvsprintfW - diff --git a/library/windows/utils.factor b/library/windows/utils.factor deleted file mode 100644 index bd203c3048..0000000000 --- a/library/windows/utils.factor +++ /dev/null @@ -1,14 +0,0 @@ -USING: alien parser namespaces kernel syntax words math io prettyprint ; -IN: win32-api - -: win32-error=0 zero? [ win32-error ] when ; -: win32-error>0 0 > [ win32-error ] when ; -: win32-error<0 0 < [ win32-error ] when ; -: win32-error<>0 zero? [ win32-error ] unless ; - -: lo-word ( wparam -- lo ) HEX: ffff bitand ; -: hi-word ( wparam -- hi ) -16 shift ; - -: msgbox ( str -- ) - f swap "DebugMsg" MB_OK MessageBox drop ; - diff --git a/library/windows/win32-errors.factor b/library/windows/win32-errors.factor deleted file mode 100644 index 15549ae27a..0000000000 --- a/library/windows/win32-errors.factor +++ /dev/null @@ -1,70 +0,0 @@ -! :folding=indent:collapseFolds=1: - -! $Id: win32-errors.factor,v 1.11 2005/12/22 02:30:00 erg Exp $ -! -! Copyright (C) 2004 Mackenzie Straight. -! -! Redistribution and use in source and binary forms, with or without -! modification, are permitted provided that the following conditions are met: -! -! 1. Redistributions of source code must retain the above copyright notice, -! this list of conditions and the following disclaimer. -! -! 2. Redistributions in binary form must reproduce the above copyright notice, -! this list of conditions and the following disclaimer in the documentation -! and/or other materials provided with the distribution. -! -! THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -! INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -! FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -! DEVELOPERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -! SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -! PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -! OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -! WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -! ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -IN: win32-api -USE: errors -USE: kernel -USE: io-internals -USE: lists -USE: math -USE: parser -USE: alien -USE: words -USE: sequences - -: CONSTANT: CREATE - [ [ [ parsed ] each ] cons define-compound POSTPONE: parsing ] - [ ] ; parsing - -CONSTANT: ERROR_SUCCESS 0 ; -CONSTANT: ERROR_HANDLE_EOF 38 ; -CONSTANT: ERROR_IO_PENDING 997 ; -CONSTANT: WAIT_TIMEOUT 258 ; - -: FORMAT_MESSAGE_ALLOCATE_BUFFER HEX: 00000100 ; -: FORMAT_MESSAGE_IGNORE_INSERTS HEX: 00000200 ; -: FORMAT_MESSAGE_FROM_STRING HEX: 00000400 ; -: FORMAT_MESSAGE_FROM_HMODULE HEX: 00000800 ; -: FORMAT_MESSAGE_FROM_SYSTEM HEX: 00001000 ; -: FORMAT_MESSAGE_ARGUMENT_ARRAY HEX: 00002000 ; -: FORMAT_MESSAGE_MAX_WIDTH_MASK HEX: 000000FF ; - -: MAKELANGID ( primary sub -- lang ) - 10 shift bitor ; - -: LANG_NEUTRAL 0 ; -: SUBLANG_DEFAULT 1 ; - -: GetLastError ( -- int ) - "int" "kernel32" "GetLastError" [ ] alien-invoke ; - -: win32-error-message ( id -- string ) - "char*" f "error_message" [ "int" ] alien-invoke ; - -: win32-throw-error ( -- ) - GetLastError win32-error-message throw ; - diff --git a/library/windows/win32-io-internals.factor b/library/windows/win32-io-internals.factor deleted file mode 100644 index ea9c3edbfa..0000000000 --- a/library/windows/win32-io-internals.factor +++ /dev/null @@ -1,125 +0,0 @@ -! $Id: win32-io-internals.factor,v 1.15 2006/01/28 20:49:31 spestov Exp $ -! -! Copyright (C) 2004, 2005 Mackenzie Straight. -! -! Redistribution and use in source and binary forms, with or without -! modification, are permitted provided that the following conditions are met: -! -! 1. Redistributions of source code must retain the above copyright notice, -! this list of conditions and the following disclaimer. -! -! 2. Redistributions in binary form must reproduce the above copyright notice, -! this list of conditions and the following disclaimer in the documentation -! and/or other materials provided with the distribution. -! -! THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -! INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -! FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -! DEVELOPERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -! SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -! PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -! OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -! WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -! ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -IN: win32-io-internals -USING: alien errors kernel kernel-internals lists math namespaces threads - vectors win32-api io generic io-internals sequences ; - -SYMBOL: completion-port -SYMBOL: io-queue - -TUPLE: io-queue free-list callbacks ; -TUPLE: io-callback overlapped quotation stream ; - -GENERIC: expire - -: expected-error? ( -- bool ) - [ - ERROR_IO_PENDING ERROR_HANDLE_EOF ERROR_SUCCESS WAIT_TIMEOUT - ] member? ; - -: handle-io-error ( -- ) - GetLastError expected-error? [ win32-throw-error ] unless ; - -: queue-error ( len/status -- len/status ) - GetLastError expected-error? [ drop f ] unless ; - -: add-completion ( handle -- ) - completion-port get f 1 CreateIoCompletionPort drop ; - -: get-access ( -- file-mode ) - "file-mode" get uncons - GENERIC_WRITE 0 ? >r - GENERIC_READ 0 ? r> bitor ; - -: get-sharemode ( -- share-mode ) - FILE_SHARE_READ FILE_SHARE_WRITE bitor ; - -: get-create ( -- creation-disposition ) - "file-mode" get uncons [ - [ OPEN_ALWAYS ] [ CREATE_ALWAYS ] if - ] [ - [ OPEN_EXISTING ] [ 0 ] if - ] if ; - -: win32-open-file ( file r w -- handle ) - [ - cons "file-mode" set - get-access get-sharemode f get-create FILE_FLAG_OVERLAPPED f - CreateFile dup INVALID_HANDLE_VALUE = [ win32-throw-error ] when - dup add-completion - ] with-scope ; - -: ( -- overlapped ) - "overlapped-ext" ; - -C: io-queue ( -- queue ) - V{ } clone over set-io-queue-callbacks ; - -C: io-callback ( -- callback ) - io-queue get io-queue-callbacks [ push ] 2keep - length 1 - [ set-overlapped-ext-user-data ] keep - swap [ set-io-callback-overlapped ] keep ; - -: alloc-io-callback ( quot stream -- overlapped ) - io-queue get io-queue-free-list [ - uncons io-queue get [ set-io-queue-free-list ] keep - io-queue-callbacks nth - ] [ ] if* - [ set-io-callback-stream ] keep - [ set-io-callback-quotation ] keep - io-callback-overlapped ; - -: get-io-callback ( index -- callback ) - dup io-queue get io-queue-callbacks nth swap - io-queue get [ io-queue-free-list cons ] keep set-io-queue-free-list - [ f swap set-io-callback-stream ] keep - io-callback-quotation ; - -: (wait-for-io) ( timeout -- error overlapped len ) - >r completion-port get 0 0 0 - pick over r> -rot >r >r GetQueuedCompletionStatus r> r> ; - -: overlapped>callback ( overlapped -- callback ) - *int dup zero? [ - drop f - ] [ - overlapped-ext-user-data get-io-callback - ] if ; - -: cancel-timedout ( -- ) - io-queue get - io-queue-callbacks [ io-callback-stream [ expire ] when* ] each ; - -: wait-for-io ( timeout -- callback len ) - (wait-for-io) overlapped>callback swap *int - rot [ queue-error ] unless ; - -: win32-init-io ( -- ) - stdio off - INVALID_HANDLE_VALUE f f 1 CreateIoCompletionPort - completion-port set - io-queue set ; - diff --git a/library/windows/win32-io.factor b/library/windows/win32-io.factor deleted file mode 100644 index b35591e5cd..0000000000 --- a/library/windows/win32-io.factor +++ /dev/null @@ -1,124 +0,0 @@ -! :folding=indent:collapseFolds=1: - -! $Id: win32-io.factor,v 1.4 2005/07/23 06:11:07 eiz Exp $ -! -! Copyright (C) 2004 Mackenzie Straight. -! -! Redistribution and use in source and binary forms, with or without -! modification, are permitted provided that the following conditions are met: -! -! 1. Redistributions of source code must retain the above copyright notice, -! this list of conditions and the following disclaimer. -! -! 2. Redistributions in binary form must reproduce the above copyright notice, -! this list of conditions and the following disclaimer in the documentation -! and/or other materials provided with the distribution. -! -! THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -! INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -! FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -! DEVELOPERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -! SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -! PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -! OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -! WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -! ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -IN: win32-api -USE: kernel -USE: alien - -BEGIN-STRUCT: overlapped-ext - FIELD: int internal - FIELD: int internal-high - FIELD: int offset - FIELD: int offset-high - FIELD: void* event - FIELD: int user-data -END-STRUCT - -: GENERIC_READ HEX: 80000000 ; -: GENERIC_WRITE HEX: 40000000 ; -: GENERIC_EXECUTE HEX: 20000000 ; -: GENERIC_ALL HEX: 10000000 ; - -: CREATE_NEW 1 ; -: CREATE_ALWAYS 2 ; -: OPEN_EXISTING 3 ; -: OPEN_ALWAYS 4 ; -: TRUNCATE_EXISTING 5 ; - -: FILE_SHARE_READ 1 ; -: FILE_SHARE_WRITE 2 ; -: FILE_SHARE_DELETE 4 ; - -: FILE_FLAG_WRITE_THROUGH HEX: 80000000 ; -: FILE_FLAG_OVERLAPPED HEX: 40000000 ; -: FILE_FLAG_NO_BUFFERING HEX: 20000000 ; -: FILE_FLAG_RANDOM_ACCESS HEX: 10000000 ; -: FILE_FLAG_SEQUENTIAL_SCAN HEX: 08000000 ; -: FILE_FLAG_DELETE_ON_CLOSE HEX: 04000000 ; -: FILE_FLAG_BACKUP_SEMANTICS HEX: 02000000 ; -: FILE_FLAG_POSIX_SEMANTICS HEX: 01000000 ; -: FILE_FLAG_OPEN_REPARSE_POINT HEX: 00200000 ; -: FILE_FLAG_OPEN_NO_RECALL HEX: 00100000 ; -: FILE_FLAG_FIRST_PIPE_INSTANCE HEX: 00080000 ; - -: STD_INPUT_HANDLE -10 ; -: STD_OUTPUT_HANDLE -11 ; -: STD_ERROR_HANDLE -12 ; - -: INVALID_HANDLE_VALUE -1 ; -: INVALID_FILE_SIZE HEX: FFFFFFFF ; - -: INFINITE HEX: FFFFFFFF ; - -: GetStdHandle ( id -- handle ) - "void*" "kernel32" "GetStdHandle" [ "int" ] alien-invoke ; - -: GetFileSize ( handle out -- int ) - "int" "kernel32" "GetFileSize" [ "void*" "void*" ] alien-invoke ; - -: SetConsoleTextAttribute ( handle attrs -- ? ) - "bool" "kernel32" "SetConsoleTextAttribute" [ "void*" "int" ] - alien-invoke ; - -: GetConsoleTitle ( buf size -- len ) - "int" "kernel32" "GetConsoleTitleA" [ "int" "int" ] alien-invoke ; - -: SetConsoleTitle ( str -- ? ) - "bool" "kernel32" "SetConsoleTitleA" [ "char*" ] alien-invoke ; - -: ReadFile ( handle buffer len out-len overlapped -- ? ) - "bool" "kernel32" "ReadFile" - [ "void*" "int" "int" "void*" "overlapped-ext*" ] - alien-invoke ; - -: WriteFile ( handle buffer len out-len overlapped -- ? ) - "bool" "kernel32" "WriteFile" - [ "void*" "int" "int" "void*" "overlapped-ext*" ] - alien-invoke ; - -: CreateIoCompletionPort ( handle existing-port key numthreads -- ) - "void*" "kernel32" "CreateIoCompletionPort" - [ "void*" "void*" "void*" "int" ] - alien-invoke ; - -: GetQueuedCompletionStatus - ( port out-len out-key out-overlapped timeout -- ? ) - "bool" "kernel32" "GetQueuedCompletionStatus" - [ "void*" "void*" "void*" "void*" "int" ] - alien-invoke ; - -: CreateFile ( name access sharemode security create flags template -- handle ) - "void*" "kernel32" "CreateFileA" - [ "char*" "int" "int" "void*" "int" "int" "void*" ] - alien-invoke ; - -: CloseHandle ( handle -- ? ) - "bool" "kernel32" "CloseHandle" [ "void*" ] alien-invoke ; - -: CancelIo ( handle -- ) - "bool" "kernel32" "CancelIo" [ "void*" ] alien-invoke drop ; - diff --git a/library/windows/win32-server.factor b/library/windows/win32-server.factor deleted file mode 100644 index 3d6ac78756..0000000000 --- a/library/windows/win32-server.factor +++ /dev/null @@ -1,126 +0,0 @@ -! $Id: win32-server.factor,v 1.13 2006/01/28 20:49:31 spestov Exp $ -! -! Copyright (C) 2004, 2005 Mackenzie Straight. -! -! Redistribution and use in source and binary forms, with or without -! modification, are permitted provided that the following conditions are met: -! -! 1. Redistributions of source code must retain the above copyright notice, -! this list of conditions and the following disclaimer. -! -! 2. Redistributions in binary form must reproduce the above copyright notice, -! this list of conditions and the following disclaimer in the documentation -! and/or other materials provided with the distribution. -! -! THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -! INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -! FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -! DEVELOPERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -! SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -! PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -! OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -! WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -! ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -IN: win32-stream -USING: alien errors generic kernel kernel-internals lists math namespaces - prettyprint sequences io strings threads win32-api - win32-io-internals io-internals ; - -TUPLE: win32-server this ; -TUPLE: win32-client-stream host port ; -SYMBOL: winsock -SYMBOL: socket - -: maybe-init-winsock ( -- ) - winsock get [ - HEX: 0202 WSAStartup drop winsock on - ] unless ; - -: handle-socket-error ( -- ) - WSAGetLastError [ - ERROR_IO_PENDING ERROR_SUCCESS - ] member? [ - WSAGetLastError win32-error-message throw - ] unless ; - -: new-socket ( -- socket ) - AF_INET SOCK_STREAM 0 f f WSA_FLAG_OVERLAPPED WSASocket ; - -: setup-sockaddr ( port -- sockaddr ) - "sockaddr-in" swap - htons over set-sockaddr-in-port - INADDR_ANY over set-sockaddr-in-addr - AF_INET over set-sockaddr-in-family ; - -: bind-socket ( port socket -- ) - swap setup-sockaddr "sockaddr-in" c-size wsa-bind zero? [ - handle-socket-error - ] unless ; - -: listen-socket ( socket -- ) - 20 wsa-listen zero? [ handle-socket-error ] unless ; - -: sockaddr> ( sockaddr -- port host ) - dup sockaddr-in-port ntohs swap sockaddr-in-addr inet-ntoa ; - -: extract-remote-host ( buffer -- port host ) - buffer-ptr 0 32 32 0 - 0 - 0 - dup >r 0 - GetAcceptExSockaddrs r> *int sockaddr> ; - -C: win32-client-stream ( buf stream -- stream ) - [ set-delegate extract-remote-host ] keep - [ set-win32-client-stream-host ] keep - [ set-win32-client-stream-port ] keep ; - -M: win32-client-stream client-stream-host win32-client-stream-host ; -M: win32-client-stream client-stream-port win32-client-stream-port ; - -C: win32-server ( port -- server ) - swap [ - maybe-init-winsock new-socket swap over bind-socket dup listen-socket - dup add-completion - socket set - dup stream set - ] make-hash over set-win32-server-this ; - -M: win32-server stream-close ( server -- ) - win32-server-this [ socket get CloseHandle drop ] bind ; - -M: win32-server set-timeout ( timeout server -- ) - win32-server-this [ timeout set ] bind ; - -M: win32-server expire ( -- ) - win32-server-this [ - timeout get [ millis cutoff get > [ socket get CancelIo ] when ] when - ] bind ; - -: client-sockaddr ( host port -- sockaddr ) - setup-sockaddr [ - >r gethostbyname handle-socket-error hostent-addr - r> set-sockaddr-in-addr - ] keep ; - -IN: io -: accept ( server -- client ) - win32-server-this [ - update-timeout new-socket 64 - [ - stream get alloc-io-callback init-overlapped - >r >r >r socket get r> r> - buffer-ptr 0 32 32 f r> AcceptEx - [ handle-socket-error ] unless stop - ] callcc1 pending-error drop - swap dup add-completion - dupd swap buffer-free - ] bind ; - -: ( host port -- stream ) - maybe-init-winsock client-sockaddr new-socket - [ swap "sockaddr-in" c-size connect drop handle-socket-error ] keep - dup add-completion ; - diff --git a/library/windows/win32-stream.factor b/library/windows/win32-stream.factor deleted file mode 100644 index 943f1a2ae8..0000000000 --- a/library/windows/win32-stream.factor +++ /dev/null @@ -1,187 +0,0 @@ -! $Id: win32-stream.factor,v 1.16 2006/01/28 20:49:31 spestov Exp $ -! -! Copyright (C) 2004, 2005 Mackenzie Straight. -! -! Redistribution and use in source and binary forms, with or without -! modification, are permitted provided that the following conditions are met: -! -! 1. Redistributions of source code must retain the above copyright notice, -! this list of conditions and the following disclaimer. -! -! 2. Redistributions in binary form must reproduce the above copyright notice, -! this list of conditions and the following disclaimer in the documentation -! and/or other materials provided with the distribution. -! -! THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -! INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -! FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -! DEVELOPERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -! SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -! PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -! OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -! WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -! ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -IN: win32-stream -USING: alien generic io-internals kernel -kernel-internals lists math namespaces prettyprint sequences -io strings threads win32-api win32-io-internals ; - -TUPLE: win32-stream this ; ! FIXME: rewrite using tuples -GENERIC: win32-stream-handle -GENERIC: do-write - -SYMBOL: handle -SYMBOL: in-buffer -SYMBOL: out-buffer -SYMBOL: fileptr -SYMBOL: file-size -SYMBOL: stream -SYMBOL: timeout -SYMBOL: cutoff - -: pending-error ( len/status -- len/status ) - dup [ win32-throw-error ] unless ; - -: init-overlapped ( overlapped -- overlapped ) - 0 over set-overlapped-ext-internal - 0 over set-overlapped-ext-internal-high - fileptr get dup 0 ? over set-overlapped-ext-offset - 0 over set-overlapped-ext-offset-high - f over set-overlapped-ext-event ; - -: update-file-pointer ( whence -- ) - file-size get [ fileptr [ + ] change ] [ drop ] if ; - -: update-timeout ( -- ) - timeout get [ millis + cutoff set ] when* ; - -: flush-output ( -- ) - update-timeout [ - stream get alloc-io-callback init-overlapped >r - handle get out-buffer get [ buffer@ ] keep buffer-length - f r> WriteFile [ handle-io-error ] unless stop - ] callcc1 pending-error - - dup update-file-pointer - out-buffer get [ buffer-consume ] keep - buffer-length 0 > [ flush-output ] when ; - -: maybe-flush-output ( -- ) - out-buffer get buffer-length 0 > [ flush-output ] when ; - -M: integer do-write ( int -- ) - out-buffer get [ buffer-capacity zero? [ flush-output ] when ] keep - >r ch>string r> >buffer ; - -M: string do-write ( str -- ) - dup length out-buffer get buffer-capacity <= [ - out-buffer get >buffer - ] [ - dup length out-buffer get buffer-size > [ - dup length out-buffer get extend-buffer do-write - ] [ flush-output do-write ] if - ] if ; - -: fill-input ( -- ) - update-timeout [ - stream get alloc-io-callback init-overlapped >r - handle get in-buffer get [ buffer@ ] keep - buffer-capacity file-size get [ fileptr get - min ] when* - f r> - ReadFile [ handle-io-error ] unless stop - ] callcc1 pending-error - - dup in-buffer get n>buffer update-file-pointer ; - -: consume-input ( count -- str ) - in-buffer get buffer-length zero? [ fill-input ] when - in-buffer get buffer-size min - dup in-buffer get buffer-first-n - swap in-buffer get buffer-consume ; - -: >string-or-f ( sbuf -- str-or-? ) - dup length 0 > [ >string ] [ drop f ] if ; - -: do-read-count ( sbuf count -- str ) - dup zero? [ - drop >string - ] [ - dup consume-input - dup length dup zero? [ - 3drop >string-or-f - ] [ - >r swap r> - >r swap [ swap nappend ] keep r> do-read-count - ] if - ] if ; - -: peek-input ( -- str ) - 1 in-buffer get buffer-first-n ; - -M: win32-stream stream-write ( str stream -- ) - win32-stream-this [ do-write ] bind ; - -M: win32-stream stream-write1 ( char stream -- ) - win32-stream-this [ >fixnum do-write ] bind ; - -M: win32-stream stream-read ( count stream -- str ) - win32-stream-this [ dup swap do-read-count ] bind ; - -M: win32-stream stream-read1 ( stream -- str ) - win32-stream-this [ - 1 consume-input dup length zero? [ drop f ] when first - ] bind ; - -M: win32-stream stream-readln ( stream -- str ) - win32-stream-this [ readln ] bind ; - -M: win32-stream stream-terpri - win32-stream-this [ CHAR: \n do-write ] bind ; - -M: win32-stream stream-flush ( stream -- ) - win32-stream-this [ maybe-flush-output ] bind ; - -M: win32-stream stream-close ( stream -- ) - win32-stream-this [ - maybe-flush-output - handle get CloseHandle drop - in-buffer get buffer-free - out-buffer get buffer-free - ] bind ; - -M: win32-stream stream-format ( string style stream -- ) - win32-stream-this [ drop do-write ] bind ; - -M: win32-stream win32-stream-handle ( stream -- handle ) - win32-stream-this [ handle get ] bind ; - -M: win32-stream set-timeout ( timeout stream -- ) - win32-stream-this [ timeout set ] bind ; - -M: win32-stream expire ( stream -- ) - win32-stream-this [ - timeout get [ millis cutoff get > [ handle get CancelIo ] when ] when - ] bind ; - -M: win32-stream with-nested-stream ( quot style stream -- ) - win32-stream-this [ drop stream get swap with-stream* ] bind ; - -C: win32-stream ( handle -- stream ) - swap [ - dup f GetFileSize dup -1 = not [ - file-size set - ] [ drop f file-size set ] if - handle set - 4096 in-buffer set - 4096 out-buffer set - 0 fileptr set - dup stream set - ] make-hash over set-win32-stream-this ; - -: ( path -- stream ) - t f win32-open-file ; - -: ( path -- stream ) - f t win32-open-file ; - diff --git a/library/windows/windows-messages.factor b/library/windows/windows-messages.factor deleted file mode 100644 index 3c1f5ad5e2..0000000000 --- a/library/windows/windows-messages.factor +++ /dev/null @@ -1,1003 +0,0 @@ -USING: hashtables kernel math namespaces parser prettyprint words ; -IN: win32-api-messages - -SYMBOL: windows-messages - -USE: inspector - -: maybe-create-windows-messages - windows-messages get hashtable? - [ H{ } clone global [ windows-messages set ] bind ] unless ; - -: add-windows-message ( -- ) - word [ unparse ] keep execute maybe-create-windows-messages - windows-messages get set-hash ; parsing - -: get-windows-message-name ( n -- name ) - windows-messages get hash* [ drop "unknown message" ] unless ; - -: WM_NULL HEX: 0000 ; inline add-windows-message -: WM_CREATE HEX: 0001 ; inline add-windows-message -: WM_DESTROY HEX: 0002 ; inline add-windows-message -: WM_MOVE HEX: 0003 ; inline add-windows-message -: WM_SIZE HEX: 0005 ; inline add-windows-message -: WM_ACTIVATE HEX: 0006 ; inline add-windows-message -: WM_SETFOCUS HEX: 0007 ; inline add-windows-message -: WM_KILLFOCUS HEX: 0008 ; inline add-windows-message -: WM_ENABLE HEX: 000A ; inline add-windows-message -: WM_SETREDRAW HEX: 000B ; inline add-windows-message -: WM_SETTEXT HEX: 000C ; inline add-windows-message -: WM_GETTEXT HEX: 000D ; inline add-windows-message -: WM_GETTEXTLENGTH HEX: 000E ; inline add-windows-message -: WM_PAINT HEX: 000F ; inline add-windows-message -: WM_CLOSE HEX: 0010 ; inline add-windows-message -: WM_QUERYENDSESSION HEX: 0011 ; inline add-windows-message -: WM_QUERYOPEN HEX: 0013 ; inline add-windows-message -: WM_ENDSESSION HEX: 0016 ; inline add-windows-message -: WM_QUIT HEX: 0012 ; inline add-windows-message -: WM_ERASEBKGND HEX: 0014 ; inline add-windows-message -: WM_SYSCOLORCHANGE HEX: 0015 ; inline add-windows-message -: WM_SHOWWINDOW HEX: 0018 ; inline add-windows-message -: WM_WININICHANGE HEX: 001A ; inline add-windows-message -: WM_SETTINGCHANGE HEX: 001A ; inline add-windows-message -: WM_DEVMODECHANGE HEX: 001B ; inline add-windows-message -: WM_ACTIVATEAPP HEX: 001C ; inline add-windows-message -: WM_FONTCHANGE HEX: 001D ; inline add-windows-message -: WM_TIMECHANGE HEX: 001E ; inline add-windows-message -: WM_CANCELMODE HEX: 001F ; inline add-windows-message -: WM_SETCURSOR HEX: 0020 ; inline add-windows-message -: WM_MOUSEACTIVATE HEX: 0021 ; inline add-windows-message -: WM_CHILDACTIVATE HEX: 0022 ; inline add-windows-message -: WM_QUEUESYNC HEX: 0023 ; inline add-windows-message -: WM_GETMINMAXINFO HEX: 0024 ; inline add-windows-message -: WM_PAINTICON HEX: 0026 ; inline add-windows-message -: WM_ICONERASEBKGND HEX: 0027 ; inline add-windows-message -: WM_NEXTDLGCTL HEX: 0028 ; inline add-windows-message -: WM_SPOOLERSTATUS HEX: 002A ; inline add-windows-message -: WM_DRAWITEM HEX: 002B ; inline add-windows-message -: WM_MEASUREITEM HEX: 002C ; inline add-windows-message -: WM_DELETEITEM HEX: 002D ; inline add-windows-message -: WM_VKEYTOITEM HEX: 002E ; inline add-windows-message -: WM_CHARTOITEM HEX: 002F ; inline add-windows-message -: WM_SETFONT HEX: 0030 ; inline add-windows-message -: WM_GETFONT HEX: 0031 ; inline add-windows-message -: WM_SETHOTKEY HEX: 0032 ; inline add-windows-message -: WM_GETHOTKEY HEX: 0033 ; inline add-windows-message -: WM_QUERYDRAGICON HEX: 0037 ; inline add-windows-message -: WM_COMPAREITEM HEX: 0039 ; inline add-windows-message -: WM_GETOBJECT HEX: 003D ; inline add-windows-message -: WM_COMPACTING HEX: 0041 ; inline add-windows-message -: WM_COMMNOTIFY HEX: 0044 ; inline add-windows-message -: WM_WINDOWPOSCHANGING HEX: 0046 ; inline add-windows-message -: WM_WINDOWPOSCHANGED HEX: 0047 ; inline add-windows-message -: WM_POWER HEX: 0048 ; inline add-windows-message -: WM_COPYDATA HEX: 004A ; inline add-windows-message -: WM_CANCELJOURNAL HEX: 004B ; inline add-windows-message -: WM_NOTIFY HEX: 004E ; inline add-windows-message -: WM_INPUTLANGCHANGEREQUEST HEX: 0050 ; inline add-windows-message -: WM_INPUTLANGCHANGE HEX: 0051 ; inline add-windows-message -: WM_TCARD HEX: 0052 ; inline add-windows-message -: WM_HELP HEX: 0053 ; inline add-windows-message -: WM_USERCHANGED HEX: 0054 ; inline add-windows-message -: WM_NOTIFYFORMAT HEX: 0055 ; inline add-windows-message -: WM_CONTEXTMENU HEX: 007B ; inline add-windows-message -: WM_STYLECHANGING HEX: 007C ; inline add-windows-message -: WM_STYLECHANGED HEX: 007D ; inline add-windows-message -: WM_DISPLAYCHANGE HEX: 007E ; inline add-windows-message -: WM_GETICON HEX: 007F ; inline add-windows-message -: WM_SETICON HEX: 0080 ; inline add-windows-message -: WM_NCCREATE HEX: 0081 ; inline add-windows-message -: WM_NCDESTROY HEX: 0082 ; inline add-windows-message -: WM_NCCALCSIZE HEX: 0083 ; inline add-windows-message -: WM_NCHITTEST HEX: 0084 ; inline add-windows-message -: WM_NCPAINT HEX: 0085 ; inline add-windows-message -: WM_NCACTIVATE HEX: 0086 ; inline add-windows-message -: WM_GETDLGCODE HEX: 0087 ; inline add-windows-message -: WM_SYNCPAINT HEX: 0088 ; inline add-windows-message -: WM_NCMOUSEMOVE HEX: 00A0 ; inline add-windows-message -: WM_NCLBUTTONDOWN HEX: 00A1 ; inline add-windows-message -: WM_NCLBUTTONUP HEX: 00A2 ; inline add-windows-message -: WM_NCLBUTTONDBLCLK HEX: 00A3 ; inline add-windows-message -: WM_NCRBUTTONDOWN HEX: 00A4 ; inline add-windows-message -: WM_NCRBUTTONUP HEX: 00A5 ; inline add-windows-message -: WM_NCRBUTTONDBLCLK HEX: 00A6 ; inline add-windows-message -: WM_NCMBUTTONDOWN HEX: 00A7 ; inline add-windows-message -: WM_NCMBUTTONUP HEX: 00A8 ; inline add-windows-message -: WM_NCMBUTTONDBLCLK HEX: 00A9 ; inline add-windows-message -: WM_NCXBUTTONDOWN HEX: 00AB ; inline add-windows-message -: WM_NCXBUTTONUP HEX: 00AC ; inline add-windows-message -: WM_NCXBUTTONDBLCLK HEX: 00AD ; inline add-windows-message -: WM_INPUT HEX: 00FF ; inline add-windows-message -: WM_KEYFIRST HEX: 0100 ; inline add-windows-message -: WM_KEYDOWN HEX: 0100 ; inline add-windows-message -: WM_KEYUP HEX: 0101 ; inline add-windows-message -: WM_CHAR HEX: 0102 ; inline add-windows-message -: WM_DEADCHAR HEX: 0103 ; inline add-windows-message -: WM_SYSKEYDOWN HEX: 0104 ; inline add-windows-message -: WM_SYSKEYUP HEX: 0105 ; inline add-windows-message -: WM_SYSCHAR HEX: 0106 ; inline add-windows-message -: WM_SYSDEADCHAR HEX: 0107 ; inline add-windows-message -: WM_UNICHAR HEX: 0109 ; inline add-windows-message -: WM_KEYLAST_NT501 HEX: 0109 ; inline add-windows-message -: UNICODE_NOCHAR HEX: FFFF ; inline add-windows-message -: WM_KEYLAST_PRE501 HEX: 0108 ; inline add-windows-message -: WM_IME_STARTCOMPOSITION HEX: 010D ; inline add-windows-message -: WM_IME_ENDCOMPOSITION HEX: 010E ; inline add-windows-message -: WM_IME_COMPOSITION HEX: 010F ; inline add-windows-message -: WM_IME_KEYLAST HEX: 010F ; inline add-windows-message -: WM_INITDIALOG HEX: 0110 ; inline add-windows-message -: WM_COMMAND HEX: 0111 ; inline add-windows-message -: WM_SYSCOMMAND HEX: 0112 ; inline add-windows-message -: WM_TIMER HEX: 0113 ; inline add-windows-message -: WM_HSCROLL HEX: 0114 ; inline add-windows-message -: WM_VSCROLL HEX: 0115 ; inline add-windows-message -: WM_INITMENU HEX: 0116 ; inline add-windows-message -: WM_INITMENUPOPUP HEX: 0117 ; inline add-windows-message -: WM_MENUSELECT HEX: 011F ; inline add-windows-message -: WM_MENUCHAR HEX: 0120 ; inline add-windows-message -: WM_ENTERIDLE HEX: 0121 ; inline add-windows-message -: WM_MENURBUTTONUP HEX: 0122 ; inline add-windows-message -: WM_MENUDRAG HEX: 0123 ; inline add-windows-message -: WM_MENUGETOBJECT HEX: 0124 ; inline add-windows-message -: WM_UNINITMENUPOPUP HEX: 0125 ; inline add-windows-message -: WM_MENUCOMMAND HEX: 0126 ; inline add-windows-message -: WM_CHANGEUISTATE HEX: 0127 ; inline add-windows-message -: WM_UPDATEUISTATE HEX: 0128 ; inline add-windows-message -: WM_QUERYUISTATE HEX: 0129 ; inline add-windows-message -: WM_CTLCOLORMSGBOX HEX: 0132 ; inline add-windows-message -: WM_CTLCOLOREDIT HEX: 0133 ; inline add-windows-message -: WM_CTLCOLORLISTBOX HEX: 0134 ; inline add-windows-message -: WM_CTLCOLORBTN HEX: 0135 ; inline add-windows-message -: WM_CTLCOLORDLG HEX: 0136 ; inline add-windows-message -: WM_CTLCOLORSCROLLBAR HEX: 0137 ; inline add-windows-message -: WM_CTLCOLORSTATIC HEX: 0138 ; inline add-windows-message -: WM_MOUSEFIRST HEX: 0200 ; inline add-windows-message -: WM_MOUSEMOVE HEX: 0200 ; inline add-windows-message -: WM_LBUTTONDOWN HEX: 0201 ; inline add-windows-message -: WM_LBUTTONUP HEX: 0202 ; inline add-windows-message -: WM_LBUTTONDBLCLK HEX: 0203 ; inline add-windows-message -: WM_RBUTTONDOWN HEX: 0204 ; inline add-windows-message -: WM_RBUTTONUP HEX: 0205 ; inline add-windows-message -: WM_RBUTTONDBLCLK HEX: 0206 ; inline add-windows-message -: WM_MBUTTONDOWN HEX: 0207 ; inline add-windows-message -: WM_MBUTTONUP HEX: 0208 ; inline add-windows-message -: WM_MBUTTONDBLCLK HEX: 0209 ; inline add-windows-message -: WM_MOUSEWHEEL HEX: 020A ; inline add-windows-message -: WM_XBUTTONDOWN HEX: 020B ; inline add-windows-message -: WM_XBUTTONUP HEX: 020C ; inline add-windows-message -: WM_XBUTTONDBLCLK HEX: 020D ; inline add-windows-message -: WM_MOUSELAST_5 HEX: 020D ; inline add-windows-message -: WM_MOUSELAST_4 HEX: 020A ; inline add-windows-message -: WM_MOUSELAST_PRE_4 HEX: 0209 ; inline add-windows-message -: WM_PARENTNOTIFY HEX: 0210 ; inline add-windows-message -: WM_ENTERMENULOOP HEX: 0211 ; inline add-windows-message -: WM_EXITMENULOOP HEX: 0212 ; inline add-windows-message -: WM_NEXTMENU HEX: 0213 ; inline add-windows-message -: WM_SIZING HEX: 0214 ; inline add-windows-message -: WM_CAPTURECHANGED HEX: 0215 ; inline add-windows-message -: WM_MOVING HEX: 0216 ; inline add-windows-message -: WM_POWERBROADCAST HEX: 0218 ; inline add-windows-message -: WM_DEVICECHANGE HEX: 0219 ; inline add-windows-message -: WM_MDICREATE HEX: 0220 ; inline add-windows-message -: WM_MDIDESTROY HEX: 0221 ; inline add-windows-message -: WM_MDIACTIVATE HEX: 0222 ; inline add-windows-message -: WM_MDIRESTORE HEX: 0223 ; inline add-windows-message -: WM_MDINEXT HEX: 0224 ; inline add-windows-message -: WM_MDIMAXIMIZE HEX: 0225 ; inline add-windows-message -: WM_MDITILE HEX: 0226 ; inline add-windows-message -: WM_MDICASCADE HEX: 0227 ; inline add-windows-message -: WM_MDIICONARRANGE HEX: 0228 ; inline add-windows-message -: WM_MDIGETACTIVE HEX: 0229 ; inline add-windows-message -: WM_MDISETMENU HEX: 0230 ; inline add-windows-message -: WM_ENTERSIZEMOVE HEX: 0231 ; inline add-windows-message -: WM_EXITSIZEMOVE HEX: 0232 ; inline add-windows-message -: WM_DROPFILES HEX: 0233 ; inline add-windows-message -: WM_MDIREFRESHMENU HEX: 0234 ; inline add-windows-message -: WM_IME_SETCONTEXT HEX: 0281 ; inline add-windows-message -: WM_IME_NOTIFY HEX: 0282 ; inline add-windows-message -: WM_IME_CONTROL HEX: 0283 ; inline add-windows-message -: WM_IME_COMPOSITIONFULL HEX: 0284 ; inline add-windows-message -: WM_IME_SELECT HEX: 0285 ; inline add-windows-message -: WM_IME_CHAR HEX: 0286 ; inline add-windows-message -: WM_IME_REQUEST HEX: 0288 ; inline add-windows-message -: WM_IME_KEYDOWN HEX: 0290 ; inline add-windows-message -: WM_IME_KEYUP HEX: 0291 ; inline add-windows-message -: WM_MOUSEHOVER HEX: 02A1 ; inline add-windows-message -: WM_MOUSELEAVE HEX: 02A3 ; inline add-windows-message -: WM_NCMOUSEHOVER HEX: 02A0 ; inline add-windows-message -: WM_NCMOUSELEAVE HEX: 02A2 ; inline add-windows-message -: WM_WTSSESSION_CHANGE HEX: 02B1 ; inline add-windows-message -: WM_TABLET_FIRST HEX: 02c0 ; inline add-windows-message -: WM_TABLET_LAST HEX: 02df ; inline add-windows-message -: WM_CUT HEX: 0300 ; inline add-windows-message -: WM_COPY HEX: 0301 ; inline add-windows-message -: WM_PASTE HEX: 0302 ; inline add-windows-message -: WM_CLEAR HEX: 0303 ; inline add-windows-message -: WM_UNDO HEX: 0304 ; inline add-windows-message -: WM_RENDERFORMAT HEX: 0305 ; inline add-windows-message -: WM_RENDERALLFORMATS HEX: 0306 ; inline add-windows-message -: WM_DESTROYCLIPBOARD HEX: 0307 ; inline add-windows-message -: WM_DRAWCLIPBOARD HEX: 0308 ; inline add-windows-message -: WM_PAINTCLIPBOARD HEX: 0309 ; inline add-windows-message -: WM_VSCROLLCLIPBOARD HEX: 030A ; inline add-windows-message -: WM_SIZECLIPBOARD HEX: 030B ; inline add-windows-message -: WM_ASKCBFORMATNAME HEX: 030C ; inline add-windows-message -: WM_CHANGECBCHAIN HEX: 030D ; inline add-windows-message -: WM_HSCROLLCLIPBOARD HEX: 030E ; inline add-windows-message -: WM_QUERYNEWPALETTE HEX: 030F ; inline add-windows-message -: WM_PALETTEISCHANGING HEX: 0310 ; inline add-windows-message -: WM_PALETTECHANGED HEX: 0311 ; inline add-windows-message -: WM_HOTKEY HEX: 0312 ; inline add-windows-message -: WM_PRINT HEX: 0317 ; inline add-windows-message -: WM_PRINTCLIENT HEX: 0318 ; inline add-windows-message -: WM_APPCOMMAND HEX: 0319 ; inline add-windows-message -: WM_THEMECHANGED HEX: 031A ; inline add-windows-message -: WM_HANDHELDFIRST HEX: 0358 ; inline add-windows-message -: WM_HANDHELDLAST HEX: 035F ; inline add-windows-message -: WM_AFXFIRST HEX: 0360 ; inline add-windows-message -: WM_AFXLAST HEX: 037F ; inline add-windows-message -: WM_PENWINFIRST HEX: 0380 ; inline add-windows-message -: WM_PENWINLAST HEX: 038F ; inline add-windows-message -: WM_APP HEX: 8000 ; inline add-windows-message -: WM_USER HEX: 0400 ; inline add-windows-message -: EM_GETSEL HEX: 00B0 ; inline add-windows-message -: EM_SETSEL HEX: 00B1 ; inline add-windows-message -: EM_GETRECT HEX: 00B2 ; inline add-windows-message -: EM_SETRECT HEX: 00B3 ; inline add-windows-message -: EM_SETRECTNP HEX: 00B4 ; inline add-windows-message -: EM_SCROLL HEX: 00B5 ; inline add-windows-message -: EM_LINESCROLL HEX: 00B6 ; inline add-windows-message -: EM_SCROLLCARET HEX: 00B7 ; inline add-windows-message -: EM_GETMODIFY HEX: 00B8 ; inline add-windows-message -: EM_SETMODIFY HEX: 00B9 ; inline add-windows-message -: EM_GETLINECOUNT HEX: 00BA ; inline add-windows-message -: EM_LINEINDEX HEX: 00BB ; inline add-windows-message -: EM_SETHANDLE HEX: 00BC ; inline add-windows-message -: EM_GETHANDLE HEX: 00BD ; inline add-windows-message -: EM_GETTHUMB HEX: 00BE ; inline add-windows-message -: EM_LINELENGTH HEX: 00C1 ; inline add-windows-message -: EM_REPLACESEL HEX: 00C2 ; inline add-windows-message -: EM_GETLINE HEX: 00C4 ; inline add-windows-message -: EM_LIMITTEXT HEX: 00C5 ; inline add-windows-message -: EM_CANUNDO HEX: 00C6 ; inline add-windows-message -: EM_UNDO HEX: 00C7 ; inline add-windows-message -: EM_FMTLINES HEX: 00C8 ; inline add-windows-message -: EM_LINEFROMCHAR HEX: 00C9 ; inline add-windows-message -: EM_SETTABSTOPS HEX: 00CB ; inline add-windows-message -: EM_SETPASSWORDCHAR HEX: 00CC ; inline add-windows-message -: EM_EMPTYUNDOBUFFER HEX: 00CD ; inline add-windows-message -: EM_GETFIRSTVISIBLELINE HEX: 00CE ; inline add-windows-message -: EM_SETREADONLY HEX: 00CF ; inline add-windows-message -: EM_SETWORDBREAKPROC HEX: 00D0 ; inline add-windows-message -: EM_GETWORDBREAKPROC HEX: 00D1 ; inline add-windows-message -: EM_GETPASSWORDCHAR HEX: 00D2 ; inline add-windows-message -: EM_SETMARGINS HEX: 00D3 ; inline add-windows-message -: EM_GETMARGINS HEX: 00D4 ; inline add-windows-message -: EM_SETLIMITTEXT EM_LIMITTEXT ; inline add-windows-message -: EM_GETLIMITTEXT HEX: 00D5 ; inline add-windows-message -: EM_POSFROMCHAR HEX: 00D6 ; inline add-windows-message -: EM_CHARFROMPOS HEX: 00D7 ; inline add-windows-message -: EM_SETIMESTATUS HEX: 00D8 ; inline add-windows-message -: EM_GETIMESTATUS HEX: 00D9 ; inline add-windows-message -: BM_GETCHECK HEX: 00F0 ; inline add-windows-message -: BM_SETCHECK HEX: 00F1 ; inline add-windows-message -: BM_GETSTATE HEX: 00F2 ; inline add-windows-message -: BM_SETSTATE HEX: 00F3 ; inline add-windows-message -: BM_SETSTYLE HEX: 00F4 ; inline add-windows-message -: BM_CLICK HEX: 00F5 ; inline add-windows-message -: BM_GETIMAGE HEX: 00F6 ; inline add-windows-message -: BM_SETIMAGE HEX: 00F7 ; inline add-windows-message -: STM_SETICON HEX: 0170 ; inline add-windows-message -: STM_GETICON HEX: 0171 ; inline add-windows-message -: STM_SETIMAGE HEX: 0172 ; inline add-windows-message -: STM_GETIMAGE HEX: 0173 ; inline add-windows-message -: STM_MSGMAX HEX: 0174 ; inline add-windows-message -: DM_GETDEFID WM_USER ; inline add-windows-message -: DM_SETDEFID WM_USER 1 + ; inline add-windows-message -: DM_REPOSITION WM_USER 2 + ; inline add-windows-message -: LB_ADDSTRING HEX: 0180 ; inline add-windows-message -: LB_INSERTSTRING HEX: 0181 ; inline add-windows-message -: LB_DELETESTRING HEX: 0182 ; inline add-windows-message -: LB_SELITEMRANGEEX HEX: 0183 ; inline add-windows-message -: LB_RESETCONTENT HEX: 0184 ; inline add-windows-message -: LB_SETSEL HEX: 0185 ; inline add-windows-message -: LB_SETCURSEL HEX: 0186 ; inline add-windows-message -: LB_GETSEL HEX: 0187 ; inline add-windows-message -: LB_GETCURSEL HEX: 0188 ; inline add-windows-message -: LB_GETTEXT HEX: 0189 ; inline add-windows-message -: LB_GETTEXTLEN HEX: 018A ; inline add-windows-message -: LB_GETCOUNT HEX: 018B ; inline add-windows-message -: LB_SELECTSTRING HEX: 018C ; inline add-windows-message -: LB_DIR HEX: 018D ; inline add-windows-message -: LB_GETTOPINDEX HEX: 018E ; inline add-windows-message -: LB_FINDSTRING HEX: 018F ; inline add-windows-message -: LB_GETSELCOUNT HEX: 0190 ; inline add-windows-message -: LB_GETSELITEMS HEX: 0191 ; inline add-windows-message -: LB_SETTABSTOPS HEX: 0192 ; inline add-windows-message -: LB_GETHORIZONTALEXTENT HEX: 0193 ; inline add-windows-message -: LB_SETHORIZONTALEXTENT HEX: 0194 ; inline add-windows-message -: LB_SETCOLUMNWIDTH HEX: 0195 ; inline add-windows-message -: LB_ADDFILE HEX: 0196 ; inline add-windows-message -: LB_SETTOPINDEX HEX: 0197 ; inline add-windows-message -: LB_GETITEMRECT HEX: 0198 ; inline add-windows-message -: LB_GETITEMDATA HEX: 0199 ; inline add-windows-message -: LB_SETITEMDATA HEX: 019A ; inline add-windows-message -: LB_SELITEMRANGE HEX: 019B ; inline add-windows-message -: LB_SETANCHORINDEX HEX: 019C ; inline add-windows-message -: LB_GETANCHORINDEX HEX: 019D ; inline add-windows-message -: LB_SETCARETINDEX HEX: 019E ; inline add-windows-message -: LB_GETCARETINDEX HEX: 019F ; inline add-windows-message -: LB_SETITEMHEIGHT HEX: 01A0 ; inline add-windows-message -: LB_GETITEMHEIGHT HEX: 01A1 ; inline add-windows-message -: LB_FINDSTRINGEXACT HEX: 01A2 ; inline add-windows-message -: LB_SETLOCALE HEX: 01A5 ; inline add-windows-message -: LB_GETLOCALE HEX: 01A6 ; inline add-windows-message -: LB_SETCOUNT HEX: 01A7 ; inline add-windows-message -: LB_INITSTORAGE HEX: 01A8 ; inline add-windows-message -: LB_ITEMFROMPOINT HEX: 01A9 ; inline add-windows-message -: LB_MULTIPLEADDSTRING HEX: 01B1 ; inline add-windows-message -: LB_GETLISTBOXINFO HEX: 01B2 ; inline add-windows-message -: LB_MSGMAX_501 HEX: 01B3 ; inline add-windows-message -: LB_MSGMAX_WCE4 HEX: 01B1 ; inline add-windows-message -: LB_MSGMAX_4 HEX: 01B0 ; inline add-windows-message -: LB_MSGMAX_PRE4 HEX: 01A8 ; inline add-windows-message -: CB_GETEDITSEL HEX: 0140 ; inline add-windows-message -: CB_LIMITTEXT HEX: 0141 ; inline add-windows-message -: CB_SETEDITSEL HEX: 0142 ; inline add-windows-message -: CB_ADDSTRING HEX: 0143 ; inline add-windows-message -: CB_DELETESTRING HEX: 0144 ; inline add-windows-message -: CB_DIR HEX: 0145 ; inline add-windows-message -: CB_GETCOUNT HEX: 0146 ; inline add-windows-message -: CB_GETCURSEL HEX: 0147 ; inline add-windows-message -: CB_GETLBTEXT HEX: 0148 ; inline add-windows-message -: CB_GETLBTEXTLEN HEX: 0149 ; inline add-windows-message -: CB_INSERTSTRING HEX: 014A ; inline add-windows-message -: CB_RESETCONTENT HEX: 014B ; inline add-windows-message -: CB_FINDSTRING HEX: 014C ; inline add-windows-message -: CB_SELECTSTRING HEX: 014D ; inline add-windows-message -: CB_SETCURSEL HEX: 014E ; inline add-windows-message -: CB_SHOWDROPDOWN HEX: 014F ; inline add-windows-message -: CB_GETITEMDATA HEX: 0150 ; inline add-windows-message -: CB_SETITEMDATA HEX: 0151 ; inline add-windows-message -: CB_GETDROPPEDCONTROLRECT HEX: 0152 ; inline add-windows-message -: CB_SETITEMHEIGHT HEX: 0153 ; inline add-windows-message -: CB_GETITEMHEIGHT HEX: 0154 ; inline add-windows-message -: CB_SETEXTENDEDUI HEX: 0155 ; inline add-windows-message -: CB_GETEXTENDEDUI HEX: 0156 ; inline add-windows-message -: CB_GETDROPPEDSTATE HEX: 0157 ; inline add-windows-message -: CB_FINDSTRINGEXACT HEX: 0158 ; inline add-windows-message -: CB_SETLOCALE HEX: 0159 ; inline add-windows-message -: CB_GETLOCALE HEX: 015A ; inline add-windows-message -: CB_GETTOPINDEX HEX: 015B ; inline add-windows-message -: CB_SETTOPINDEX HEX: 015C ; inline add-windows-message -: CB_GETHORIZONTALEXTENT HEX: 015d ; inline add-windows-message -: CB_SETHORIZONTALEXTENT HEX: 015e ; inline add-windows-message -: CB_GETDROPPEDWIDTH HEX: 015f ; inline add-windows-message -: CB_SETDROPPEDWIDTH HEX: 0160 ; inline add-windows-message -: CB_INITSTORAGE HEX: 0161 ; inline add-windows-message -: CB_MULTIPLEADDSTRING HEX: 0163 ; inline add-windows-message -: CB_GETCOMBOBOXINFO HEX: 0164 ; inline add-windows-message -: CB_MSGMAX_501 HEX: 0165 ; inline add-windows-message -: CB_MSGMAX_WCE400 HEX: 0163 ; inline add-windows-message -: CB_MSGMAX_400 HEX: 0162 ; inline add-windows-message -: CB_MSGMAX_PRE400 HEX: 015B ; inline add-windows-message -: SBM_SETPOS HEX: 00E0 ; inline add-windows-message -: SBM_GETPOS HEX: 00E1 ; inline add-windows-message -: SBM_SETRANGE HEX: 00E2 ; inline add-windows-message -: SBM_SETRANGEREDRAW HEX: 00E6 ; inline add-windows-message -: SBM_GETRANGE HEX: 00E3 ; inline add-windows-message -: SBM_ENABLE_ARROWS HEX: 00E4 ; inline add-windows-message -: SBM_SETSCROLLINFO HEX: 00E9 ; inline add-windows-message -: SBM_GETSCROLLINFO HEX: 00EA ; inline add-windows-message -: SBM_GETSCROLLBARINFO HEX: 00EB ; inline add-windows-message -: LVM_FIRST HEX: 1000 ; inline add-windows-message ! ListView messages -: TV_FIRST HEX: 1100 ; inline add-windows-message ! TreeView messages -: HDM_FIRST HEX: 1200 ; inline add-windows-message ! Header messages -: TCM_FIRST HEX: 1300 ; inline add-windows-message ! Tab control messages -: PGM_FIRST HEX: 1400 ; inline add-windows-message ! Pager control messages -: ECM_FIRST HEX: 1500 ; inline add-windows-message ! Edit control messages -: BCM_FIRST HEX: 1600 ; inline add-windows-message ! Button control messages -: CBM_FIRST HEX: 1700 ; inline add-windows-message ! Combobox control messages -: CCM_FIRST HEX: 2000 ; inline add-windows-message ! Common control shared messages -: CCM_LAST CCM_FIRST HEX: 0200 + ; inline add-windows-message -: CCM_SETBKCOLOR CCM_FIRST 1 + ; inline add-windows-message -: CCM_SETCOLORSCHEME CCM_FIRST 2 + ; inline add-windows-message -: CCM_GETCOLORSCHEME CCM_FIRST 3 + ; inline add-windows-message -: CCM_GETDROPTARGET CCM_FIRST 4 + ; inline add-windows-message -: CCM_SETUNICODEFORMAT CCM_FIRST 5 + ; inline add-windows-message -: CCM_GETUNICODEFORMAT CCM_FIRST 6 + ; inline add-windows-message -: CCM_SETVERSION CCM_FIRST 7 + ; inline add-windows-message -: CCM_GETVERSION CCM_FIRST 8 + ; inline add-windows-message -: CCM_SETNOTIFYWINDOW CCM_FIRST 9 + ; inline add-windows-message -: CCM_SETWINDOWTHEME CCM_FIRST HEX: b + ; inline add-windows-message -: CCM_DPISCALE CCM_FIRST HEX: c + ; inline add-windows-message -: HDM_GETITEMCOUNT HDM_FIRST 0 + ; inline add-windows-message -: HDM_INSERTITEMA HDM_FIRST 1 + ; inline add-windows-message -: HDM_INSERTITEMW HDM_FIRST 10 + ; inline add-windows-message -: HDM_DELETEITEM HDM_FIRST 2 + ; inline add-windows-message -: HDM_GETITEMA HDM_FIRST 3 + ; inline add-windows-message -: HDM_GETITEMW HDM_FIRST 11 + ; inline add-windows-message -: HDM_SETITEMA HDM_FIRST 4 + ; inline add-windows-message -: HDM_SETITEMW HDM_FIRST 12 + ; inline add-windows-message -: HDM_LAYOUT HDM_FIRST 5 + ; inline add-windows-message -: HDM_HITTEST HDM_FIRST 6 + ; inline add-windows-message -: HDM_GETITEMRECT HDM_FIRST 7 + ; inline add-windows-message -: HDM_SETIMAGELIST HDM_FIRST 8 + ; inline add-windows-message -: HDM_GETIMAGELIST HDM_FIRST 9 + ; inline add-windows-message -: HDM_ORDERTOINDEX HDM_FIRST 15 + ; inline add-windows-message -: HDM_CREATEDRAGIMAGE HDM_FIRST 16 + ; inline add-windows-message -: HDM_GETORDERARRAY HDM_FIRST 17 + ; inline add-windows-message -: HDM_SETORDERARRAY HDM_FIRST 18 + ; inline add-windows-message -: HDM_SETHOTDIVIDER HDM_FIRST 19 + ; inline add-windows-message -: HDM_SETBITMAPMARGIN HDM_FIRST 20 + ; inline add-windows-message -: HDM_GETBITMAPMARGIN HDM_FIRST 21 + ; inline add-windows-message -: HDM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT ; inline add-windows-message -: HDM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT ; inline add-windows-message -: HDM_SETFILTERCHANGETIMEOUT HDM_FIRST 22 + ; inline add-windows-message -: HDM_EDITFILTER HDM_FIRST 23 + ; inline add-windows-message -: HDM_CLEARFILTER HDM_FIRST 24 + ; inline add-windows-message -: TB_ENABLEBUTTON WM_USER 1 + ; inline add-windows-message -: TB_CHECKBUTTON WM_USER 2 + ; inline add-windows-message -: TB_PRESSBUTTON WM_USER 3 + ; inline add-windows-message -: TB_HIDEBUTTON WM_USER 4 + ; inline add-windows-message -: TB_INDETERMINATE WM_USER 5 + ; inline add-windows-message -: TB_MARKBUTTON WM_USER 6 + ; inline add-windows-message -: TB_ISBUTTONENABLED WM_USER 9 + ; inline add-windows-message -: TB_ISBUTTONCHECKED WM_USER 10 + ; inline add-windows-message -: TB_ISBUTTONPRESSED WM_USER 11 + ; inline add-windows-message -: TB_ISBUTTONHIDDEN WM_USER 12 + ; inline add-windows-message -: TB_ISBUTTONINDETERMINATE WM_USER 13 + ; inline add-windows-message -: TB_ISBUTTONHIGHLIGHTED WM_USER 14 + ; inline add-windows-message -: TB_SETSTATE WM_USER 17 + ; inline add-windows-message -: TB_GETSTATE WM_USER 18 + ; inline add-windows-message -: TB_ADDBITMAP WM_USER 19 + ; inline add-windows-message -: TB_ADDBUTTONSA WM_USER 20 + ; inline add-windows-message -: TB_INSERTBUTTONA WM_USER 21 + ; inline add-windows-message -: TB_ADDBUTTONS WM_USER 20 + ; inline add-windows-message -: TB_INSERTBUTTON WM_USER 21 + ; inline add-windows-message -: TB_DELETEBUTTON WM_USER 22 + ; inline add-windows-message -: TB_GETBUTTON WM_USER 23 + ; inline add-windows-message -: TB_BUTTONCOUNT WM_USER 24 + ; inline add-windows-message -: TB_COMMANDTOINDEX WM_USER 25 + ; inline add-windows-message -: TB_SAVERESTOREA WM_USER 26 + ; inline add-windows-message -: TB_SAVERESTOREW WM_USER 76 + ; inline add-windows-message -: TB_CUSTOMIZE WM_USER 27 + ; inline add-windows-message -: TB_ADDSTRINGA WM_USER 28 + ; inline add-windows-message -: TB_ADDSTRINGW WM_USER 77 + ; inline add-windows-message -: TB_GETITEMRECT WM_USER 29 + ; inline add-windows-message -: TB_BUTTONSTRUCTSIZE WM_USER 30 + ; inline add-windows-message -: TB_SETBUTTONSIZE WM_USER 31 + ; inline add-windows-message -: TB_SETBITMAPSIZE WM_USER 32 + ; inline add-windows-message -: TB_AUTOSIZE WM_USER 33 + ; inline add-windows-message -: TB_GETTOOLTIPS WM_USER 35 + ; inline add-windows-message -: TB_SETTOOLTIPS WM_USER 36 + ; inline add-windows-message -: TB_SETPARENT WM_USER 37 + ; inline add-windows-message -: TB_SETROWS WM_USER 39 + ; inline add-windows-message -: TB_GETROWS WM_USER 40 + ; inline add-windows-message -: TB_SETCMDID WM_USER 42 + ; inline add-windows-message -: TB_CHANGEBITMAP WM_USER 43 + ; inline add-windows-message -: TB_GETBITMAP WM_USER 44 + ; inline add-windows-message -: TB_GETBUTTONTEXTA WM_USER 45 + ; inline add-windows-message -: TB_GETBUTTONTEXTW WM_USER 75 + ; inline add-windows-message -: TB_REPLACEBITMAP WM_USER 46 + ; inline add-windows-message -: TB_SETINDENT WM_USER 47 + ; inline add-windows-message -: TB_SETIMAGELIST WM_USER 48 + ; inline add-windows-message -: TB_GETIMAGELIST WM_USER 49 + ; inline add-windows-message -: TB_LOADIMAGES WM_USER 50 + ; inline add-windows-message -: TB_GETRECT WM_USER 51 + ; inline add-windows-message -: TB_SETHOTIMAGELIST WM_USER 52 + ; inline add-windows-message -: TB_GETHOTIMAGELIST WM_USER 53 + ; inline add-windows-message -: TB_SETDISABLEDIMAGELIST WM_USER 54 + ; inline add-windows-message -: TB_GETDISABLEDIMAGELIST WM_USER 55 + ; inline add-windows-message -: TB_SETSTYLE WM_USER 56 + ; inline add-windows-message -: TB_GETSTYLE WM_USER 57 + ; inline add-windows-message -: TB_GETBUTTONSIZE WM_USER 58 + ; inline add-windows-message -: TB_SETBUTTONWIDTH WM_USER 59 + ; inline add-windows-message -: TB_SETMAXTEXTROWS WM_USER 60 + ; inline add-windows-message -: TB_GETTEXTROWS WM_USER 61 + ; inline add-windows-message -: TB_GETOBJECT WM_USER 62 + ; inline add-windows-message -: TB_GETHOTITEM WM_USER 71 + ; inline add-windows-message -: TB_SETHOTITEM WM_USER 72 + ; inline add-windows-message -: TB_SETANCHORHIGHLIGHT WM_USER 73 + ; inline add-windows-message -: TB_GETANCHORHIGHLIGHT WM_USER 74 + ; inline add-windows-message -: TB_MAPACCELERATORA WM_USER 78 + ; inline add-windows-message -: TB_GETINSERTMARK WM_USER 79 + ; inline add-windows-message -: TB_SETINSERTMARK WM_USER 80 + ; inline add-windows-message -: TB_INSERTMARKHITTEST WM_USER 81 + ; inline add-windows-message -: TB_MOVEBUTTON WM_USER 82 + ; inline add-windows-message -: TB_GETMAXSIZE WM_USER 83 + ; inline add-windows-message -: TB_SETEXTENDEDSTYLE WM_USER 84 + ; inline add-windows-message -: TB_GETEXTENDEDSTYLE WM_USER 85 + ; inline add-windows-message -: TB_GETPADDING WM_USER 86 + ; inline add-windows-message -: TB_SETPADDING WM_USER 87 + ; inline add-windows-message -: TB_SETINSERTMARKCOLOR WM_USER 88 + ; inline add-windows-message -: TB_GETINSERTMARKCOLOR WM_USER 89 + ; inline add-windows-message -: TB_SETCOLORSCHEME CCM_SETCOLORSCHEME ; inline add-windows-message -: TB_GETCOLORSCHEME CCM_GETCOLORSCHEME ; inline add-windows-message -: TB_SETUNICODEFORMAT CCM_SETUNICODEFORMAT ; inline add-windows-message -: TB_GETUNICODEFORMAT CCM_GETUNICODEFORMAT ; inline add-windows-message -: TB_MAPACCELERATORW WM_USER 90 + ; inline add-windows-message -: TB_GETBITMAPFLAGS WM_USER 41 + ; inline add-windows-message -: TB_GETBUTTONINFOW WM_USER 63 + ; inline add-windows-message -: TB_SETBUTTONINFOW WM_USER 64 + ; inline add-windows-message -: TB_GETBUTTONINFOA WM_USER 65 + ; inline add-windows-message -: TB_SETBUTTONINFOA WM_USER 66 + ; inline add-windows-message -: TB_INSERTBUTTONW WM_USER 67 + ; inline add-windows-message -: TB_ADDBUTTONSW WM_USER 68 + ; inline add-windows-message -: TB_HITTEST WM_USER 69 + ; inline add-windows-message -: TB_SETDRAWTEXTFLAGS WM_USER 70 + ; inline add-windows-message -: TB_GETSTRINGW WM_USER 91 + ; inline add-windows-message -: TB_GETSTRINGA WM_USER 92 + ; inline add-windows-message -: TB_GETMETRICS WM_USER 101 + ; inline add-windows-message -: TB_SETMETRICS WM_USER 102 + ; inline add-windows-message -: TB_SETWINDOWTHEME CCM_SETWINDOWTHEME ; inline add-windows-message -: RB_INSERTBANDA WM_USER 1 + ; inline add-windows-message -: RB_DELETEBAND WM_USER 2 + ; inline add-windows-message -: RB_GETBARINFO WM_USER 3 + ; inline add-windows-message -: RB_SETBARINFO WM_USER 4 + ; inline add-windows-message -: RB_GETBANDINFO WM_USER 5 + ; inline add-windows-message -: RB_SETBANDINFOA WM_USER 6 + ; inline add-windows-message -: RB_SETPARENT WM_USER 7 + ; inline add-windows-message -: RB_HITTEST WM_USER 8 + ; inline add-windows-message -: RB_GETRECT WM_USER 9 + ; inline add-windows-message -: RB_INSERTBANDW WM_USER 10 + ; inline add-windows-message -: RB_SETBANDINFOW WM_USER 11 + ; inline add-windows-message -: RB_GETBANDCOUNT WM_USER 12 + ; inline add-windows-message -: RB_GETROWCOUNT WM_USER 13 + ; inline add-windows-message -: RB_GETROWHEIGHT WM_USER 14 + ; inline add-windows-message -: RB_IDTOINDEX WM_USER 16 + ; inline add-windows-message -: RB_GETTOOLTIPS WM_USER 17 + ; inline add-windows-message -: RB_SETTOOLTIPS WM_USER 18 + ; inline add-windows-message -: RB_SETBKCOLOR WM_USER 19 + ; inline add-windows-message -: RB_GETBKCOLOR WM_USER 20 + ; inline add-windows-message -: RB_SETTEXTCOLOR WM_USER 21 + ; inline add-windows-message -: RB_GETTEXTCOLOR WM_USER 22 + ; inline add-windows-message -: RB_SIZETORECT WM_USER 23 + ; inline add-windows-message -: RB_SETCOLORSCHEME CCM_SETCOLORSCHEME ; inline add-windows-message -: RB_GETCOLORSCHEME CCM_GETCOLORSCHEME ; inline add-windows-message -: RB_BEGINDRAG WM_USER 24 + ; inline add-windows-message -: RB_ENDDRAG WM_USER 25 + ; inline add-windows-message -: RB_DRAGMOVE WM_USER 26 + ; inline add-windows-message -: RB_GETBARHEIGHT WM_USER 27 + ; inline add-windows-message -: RB_GETBANDINFOW WM_USER 28 + ; inline add-windows-message -: RB_GETBANDINFOA WM_USER 29 + ; inline add-windows-message -: RB_MINIMIZEBAND WM_USER 30 + ; inline add-windows-message -: RB_MAXIMIZEBAND WM_USER 31 + ; inline add-windows-message -: RB_GETDROPTARGET CCM_GETDROPTARGET ; inline add-windows-message -: RB_GETBANDBORDERS WM_USER 34 + ; inline add-windows-message -: RB_SHOWBAND WM_USER 35 + ; inline add-windows-message -: RB_SETPALETTE WM_USER 37 + ; inline add-windows-message -: RB_GETPALETTE WM_USER 38 + ; inline add-windows-message -: RB_MOVEBAND WM_USER 39 + ; inline add-windows-message -: RB_SETUNICODEFORMAT CCM_SETUNICODEFORMAT ; inline add-windows-message -: RB_GETUNICODEFORMAT CCM_GETUNICODEFORMAT ; inline add-windows-message -: RB_GETBANDMARGINS WM_USER 40 + ; inline add-windows-message -: RB_SETWINDOWTHEME CCM_SETWINDOWTHEME ; inline add-windows-message -: RB_PUSHCHEVRON WM_USER 43 + ; inline add-windows-message -: TTM_ACTIVATE WM_USER 1 + ; inline add-windows-message -: TTM_SETDELAYTIME WM_USER 3 + ; inline add-windows-message -: TTM_ADDTOOLA WM_USER 4 + ; inline add-windows-message -: TTM_ADDTOOLW WM_USER 50 + ; inline add-windows-message -: TTM_DELTOOLA WM_USER 5 + ; inline add-windows-message -: TTM_DELTOOLW WM_USER 51 + ; inline add-windows-message -: TTM_NEWTOOLRECTA WM_USER 6 + ; inline add-windows-message -: TTM_NEWTOOLRECTW WM_USER 52 + ; inline add-windows-message -: TTM_RELAYEVENT WM_USER 7 + ; inline add-windows-message -: TTM_GETTOOLINFOA WM_USER 8 + ; inline add-windows-message -: TTM_GETTOOLINFOW WM_USER 53 + ; inline add-windows-message -: TTM_SETTOOLINFOA WM_USER 9 + ; inline add-windows-message -: TTM_SETTOOLINFOW WM_USER 54 + ; inline add-windows-message -: TTM_HITTESTA WM_USER 10 + ; inline add-windows-message -: TTM_HITTESTW WM_USER 55 + ; inline add-windows-message -: TTM_GETTEXTA WM_USER 11 + ; inline add-windows-message -: TTM_GETTEXTW WM_USER 56 + ; inline add-windows-message -: TTM_UPDATETIPTEXTA WM_USER 12 + ; inline add-windows-message -: TTM_UPDATETIPTEXTW WM_USER 57 + ; inline add-windows-message -: TTM_GETTOOLCOUNT WM_USER 13 + ; inline add-windows-message -: TTM_ENUMTOOLSA WM_USER 14 + ; inline add-windows-message -: TTM_ENUMTOOLSW WM_USER 58 + ; inline add-windows-message -: TTM_GETCURRENTTOOLA WM_USER 15 + ; inline add-windows-message -: TTM_GETCURRENTTOOLW WM_USER 59 + ; inline add-windows-message -: TTM_WINDOWFROMPOINT WM_USER 16 + ; inline add-windows-message -: TTM_TRACKACTIVATE WM_USER 17 + ; inline add-windows-message -: TTM_TRACKPOSITION WM_USER 18 + ; inline add-windows-message -: TTM_SETTIPBKCOLOR WM_USER 19 + ; inline add-windows-message -: TTM_SETTIPTEXTCOLOR WM_USER 20 + ; inline add-windows-message -: TTM_GETDELAYTIME WM_USER 21 + ; inline add-windows-message -: TTM_GETTIPBKCOLOR WM_USER 22 + ; inline add-windows-message -: TTM_GETTIPTEXTCOLOR WM_USER 23 + ; inline add-windows-message -: TTM_SETMAXTIPWIDTH WM_USER 24 + ; inline add-windows-message -: TTM_GETMAXTIPWIDTH WM_USER 25 + ; inline add-windows-message -: TTM_SETMARGIN WM_USER 26 + ; inline add-windows-message -: TTM_GETMARGIN WM_USER 27 + ; inline add-windows-message -: TTM_POP WM_USER 28 + ; inline add-windows-message -: TTM_UPDATE WM_USER 29 + ; inline add-windows-message -: TTM_GETBUBBLESIZE WM_USER 30 + ; inline add-windows-message -: TTM_ADJUSTRECT WM_USER 31 + ; inline add-windows-message -: TTM_SETTITLEA WM_USER 32 + ; inline add-windows-message -: TTM_SETTITLEW WM_USER 33 + ; inline add-windows-message -: TTM_POPUP WM_USER 34 + ; inline add-windows-message -: TTM_GETTITLE WM_USER 35 + ; inline add-windows-message -: TTM_SETWINDOWTHEME CCM_SETWINDOWTHEME ; inline add-windows-message -: SB_SETTEXTA WM_USER 1+ ; inline add-windows-message -: SB_SETTEXTW WM_USER 11 + ; inline add-windows-message -: SB_GETTEXTA WM_USER 2 + ; inline add-windows-message -: SB_GETTEXTW WM_USER 13 + ; inline add-windows-message -: SB_GETTEXTLENGTHA WM_USER 3 + ; inline add-windows-message -: SB_GETTEXTLENGTHW WM_USER 12 + ; inline add-windows-message -: SB_SETPARTS WM_USER 4 + ; inline add-windows-message -: SB_GETPARTS WM_USER 6 + ; inline add-windows-message -: SB_GETBORDERS WM_USER 7 + ; inline add-windows-message -: SB_SETMINHEIGHT WM_USER 8 + ; inline add-windows-message -: SB_SIMPLE WM_USER 9 + ; inline add-windows-message -: SB_GETRECT WM_USER 10 + ; inline add-windows-message -: SB_ISSIMPLE WM_USER 14 + ; inline add-windows-message -: SB_SETICON WM_USER 15 + ; inline add-windows-message -: SB_SETTIPTEXTA WM_USER 16 + ; inline add-windows-message -: SB_SETTIPTEXTW WM_USER 17 + ; inline add-windows-message -: SB_GETTIPTEXTA WM_USER 18 + ; inline add-windows-message -: SB_GETTIPTEXTW WM_USER 19 + ; inline add-windows-message -: SB_GETICON WM_USER 20 + ; inline add-windows-message -: SB_SETUNICODEFORMAT CCM_SETUNICODEFORMAT ; inline add-windows-message -: SB_GETUNICODEFORMAT CCM_GETUNICODEFORMAT ; inline add-windows-message -: SB_SETBKCOLOR CCM_SETBKCOLOR ; inline add-windows-message -: SB_SIMPLEID HEX: 00ff ; inline add-windows-message -: TBM_GETPOS WM_USER ; inline add-windows-message -: TBM_GETRANGEMIN WM_USER 1 + ; inline add-windows-message -: TBM_GETRANGEMAX WM_USER 2 + ; inline add-windows-message -: TBM_GETTIC WM_USER 3 + ; inline add-windows-message -: TBM_SETTIC WM_USER 4 + ; inline add-windows-message -: TBM_SETPOS WM_USER 5 + ; inline add-windows-message -: TBM_SETRANGE WM_USER 6 + ; inline add-windows-message -: TBM_SETRANGEMIN WM_USER 7 + ; inline add-windows-message -: TBM_SETRANGEMAX WM_USER 8 + ; inline add-windows-message -: TBM_CLEARTICS WM_USER 9 + ; inline add-windows-message -: TBM_SETSEL WM_USER 10 + ; inline add-windows-message -: TBM_SETSELSTART WM_USER 11 + ; inline add-windows-message -: TBM_SETSELEND WM_USER 12 + ; inline add-windows-message -: TBM_GETPTICS WM_USER 14 + ; inline add-windows-message -: TBM_GETTICPOS WM_USER 15 + ; inline add-windows-message -: TBM_GETNUMTICS WM_USER 16 + ; inline add-windows-message -: TBM_GETSELSTART WM_USER 17 + ; inline add-windows-message -: TBM_GETSELEND WM_USER 18 + ; inline add-windows-message -: TBM_CLEARSEL WM_USER 19 + ; inline add-windows-message -: TBM_SETTICFREQ WM_USER 20 + ; inline add-windows-message -: TBM_SETPAGESIZE WM_USER 21 + ; inline add-windows-message -: TBM_GETPAGESIZE WM_USER 22 + ; inline add-windows-message -: TBM_SETLINESIZE WM_USER 23 + ; inline add-windows-message -: TBM_GETLINESIZE WM_USER 24 + ; inline add-windows-message -: TBM_GETTHUMBRECT WM_USER 25 + ; inline add-windows-message -: TBM_GETCHANNELRECT WM_USER 26 + ; inline add-windows-message -: TBM_SETTHUMBLENGTH WM_USER 27 + ; inline add-windows-message -: TBM_GETTHUMBLENGTH WM_USER 28 + ; inline add-windows-message -: TBM_SETTOOLTIPS WM_USER 29 + ; inline add-windows-message -: TBM_GETTOOLTIPS WM_USER 30 + ; inline add-windows-message -: TBM_SETTIPSIDE WM_USER 31 + ; inline add-windows-message -: TBM_SETBUDDY WM_USER 32 + ; inline add-windows-message -: TBM_GETBUDDY WM_USER 33 + ; inline add-windows-message -: TBM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT ; inline add-windows-message -: TBM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT ; inline add-windows-message -: DL_BEGINDRAG WM_USER 133 + ; inline add-windows-message -: DL_DRAGGING WM_USER 134 + ; inline add-windows-message -: DL_DROPPED WM_USER 135 + ; inline add-windows-message -: DL_CANCELDRAG WM_USER 136 + ; inline add-windows-message -: UDM_SETRANGE WM_USER 101 + ; inline add-windows-message -: UDM_GETRANGE WM_USER 102 + ; inline add-windows-message -: UDM_SETPOS WM_USER 103 + ; inline add-windows-message -: UDM_GETPOS WM_USER 104 + ; inline add-windows-message -: UDM_SETBUDDY WM_USER 105 + ; inline add-windows-message -: UDM_GETBUDDY WM_USER 106 + ; inline add-windows-message -: UDM_SETACCEL WM_USER 107 + ; inline add-windows-message -: UDM_GETACCEL WM_USER 108 + ; inline add-windows-message -: UDM_SETBASE WM_USER 109 + ; inline add-windows-message -: UDM_GETBASE WM_USER 110 + ; inline add-windows-message -: UDM_SETRANGE32 WM_USER 111 + ; inline add-windows-message -: UDM_GETRANGE32 WM_USER 112 + ; inline add-windows-message -: UDM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT ; inline add-windows-message -: UDM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT ; inline add-windows-message -: UDM_SETPOS32 WM_USER 113 + ; inline add-windows-message -: UDM_GETPOS32 WM_USER 114 + ; inline add-windows-message -: PBM_SETRANGE WM_USER 1 + ; inline add-windows-message -: PBM_SETPOS WM_USER 2 + ; inline add-windows-message -: PBM_DELTAPOS WM_USER 3 + ; inline add-windows-message -: PBM_SETSTEP WM_USER 4 + ; inline add-windows-message -: PBM_STEPIT WM_USER 5 + ; inline add-windows-message -: PBM_SETRANGE32 WM_USER 6 + ; inline add-windows-message -: PBM_GETRANGE WM_USER 7 + ; inline add-windows-message -: PBM_GETPOS WM_USER 8 + ; inline add-windows-message -: PBM_SETBARCOLOR WM_USER 9 + ; inline add-windows-message -: PBM_SETBKCOLOR CCM_SETBKCOLOR ; inline add-windows-message -: HKM_SETHOTKEY WM_USER 1 + ; inline add-windows-message -: HKM_GETHOTKEY WM_USER 2 + ; inline add-windows-message -: HKM_SETRULES WM_USER 3 + ; inline add-windows-message -: LVM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT ; inline add-windows-message -: LVM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT ; inline add-windows-message -: LVM_GETBKCOLOR LVM_FIRST 0 + ; inline add-windows-message -: LVM_SETBKCOLOR LVM_FIRST 1 + ; inline add-windows-message -: LVM_GETIMAGELIST LVM_FIRST 2 + ; inline add-windows-message -: LVM_SETIMAGELIST LVM_FIRST 3 + ; inline add-windows-message -: LVM_GETITEMCOUNT LVM_FIRST 4 + ; inline add-windows-message -: LVM_GETITEMA LVM_FIRST 5 + ; inline add-windows-message -: LVM_GETITEMW LVM_FIRST 75 + ; inline add-windows-message -: LVM_SETITEMA LVM_FIRST 6 + ; inline add-windows-message -: LVM_SETITEMW LVM_FIRST 76 + ; inline add-windows-message -: LVM_INSERTITEMA LVM_FIRST 7 + ; inline add-windows-message -: LVM_INSERTITEMW LVM_FIRST 77 + ; inline add-windows-message -: LVM_DELETEITEM LVM_FIRST 8 + ; inline add-windows-message -: LVM_DELETEALLITEMS LVM_FIRST 9 + ; inline add-windows-message -: LVM_GETCALLBACKMASK LVM_FIRST 10 + ; inline add-windows-message -: LVM_SETCALLBACKMASK LVM_FIRST 11 + ; inline add-windows-message -: LVM_FINDITEMA LVM_FIRST 13 + ; inline add-windows-message -: LVM_FINDITEMW LVM_FIRST 83 + ; inline add-windows-message -: LVM_GETITEMRECT LVM_FIRST 14 + ; inline add-windows-message -: LVM_SETITEMPOSITION LVM_FIRST 15 + ; inline add-windows-message -: LVM_GETITEMPOSITION LVM_FIRST 16 + ; inline add-windows-message -: LVM_GETSTRINGWIDTHA LVM_FIRST 17 + ; inline add-windows-message -: LVM_GETSTRINGWIDTHW LVM_FIRST 87 + ; inline add-windows-message -: LVM_HITTEST LVM_FIRST 18 + ; inline add-windows-message -: LVM_ENSUREVISIBLE LVM_FIRST 19 + ; inline add-windows-message -: LVM_SCROLL LVM_FIRST 20 + ; inline add-windows-message -: LVM_REDRAWITEMS LVM_FIRST 21 + ; inline add-windows-message -: LVM_ARRANGE LVM_FIRST 22 + ; inline add-windows-message -: LVM_EDITLABELA LVM_FIRST 23 + ; inline add-windows-message -: LVM_EDITLABELW LVM_FIRST 118 + ; inline add-windows-message -: LVM_GETEDITCONTROL LVM_FIRST 24 + ; inline add-windows-message -: LVM_GETCOLUMNA LVM_FIRST 25 + ; inline add-windows-message -: LVM_GETCOLUMNW LVM_FIRST 95 + ; inline add-windows-message -: LVM_SETCOLUMNA LVM_FIRST 26 + ; inline add-windows-message -: LVM_SETCOLUMNW LVM_FIRST 96 + ; inline add-windows-message -: LVM_INSERTCOLUMNA LVM_FIRST 27 + ; inline add-windows-message -: LVM_INSERTCOLUMNW LVM_FIRST 97 + ; inline add-windows-message -: LVM_DELETECOLUMN LVM_FIRST 28 + ; inline add-windows-message -: LVM_GETCOLUMNWIDTH LVM_FIRST 29 + ; inline add-windows-message -: LVM_SETCOLUMNWIDTH LVM_FIRST 30 + ; inline add-windows-message -: LVM_CREATEDRAGIMAGE LVM_FIRST 33 + ; inline add-windows-message -: LVM_GETVIEWRECT LVM_FIRST 34 + ; inline add-windows-message -: LVM_GETTEXTCOLOR LVM_FIRST 35 + ; inline add-windows-message -: LVM_SETTEXTCOLOR LVM_FIRST 36 + ; inline add-windows-message -: LVM_GETTEXTBKCOLOR LVM_FIRST 37 + ; inline add-windows-message -: LVM_SETTEXTBKCOLOR LVM_FIRST 38 + ; inline add-windows-message -: LVM_GETTOPINDEX LVM_FIRST 39 + ; inline add-windows-message -: LVM_GETCOUNTPERPAGE LVM_FIRST 40 + ; inline add-windows-message -: LVM_GETORIGIN LVM_FIRST 41 + ; inline add-windows-message -: LVM_UPDATE LVM_FIRST 42 + ; inline add-windows-message -: LVM_SETITEMSTATE LVM_FIRST 43 + ; inline add-windows-message -: LVM_GETITEMSTATE LVM_FIRST 44 + ; inline add-windows-message -: LVM_GETITEMTEXTA LVM_FIRST 45 + ; inline add-windows-message -: LVM_GETITEMTEXTW LVM_FIRST 115 + ; inline add-windows-message -: LVM_SETITEMTEXTA LVM_FIRST 46 + ; inline add-windows-message -: LVM_SETITEMTEXTW LVM_FIRST 116 + ; inline add-windows-message -: LVM_SETITEMCOUNT LVM_FIRST 47 + ; inline add-windows-message -: LVM_SORTITEMS LVM_FIRST 48 + ; inline add-windows-message -: LVM_SETITEMPOSITION32 LVM_FIRST 49 + ; inline add-windows-message -: LVM_GETSELECTEDCOUNT LVM_FIRST 50 + ; inline add-windows-message -: LVM_GETITEMSPACING LVM_FIRST 51 + ; inline add-windows-message -: LVM_GETISEARCHSTRINGA LVM_FIRST 52 + ; inline add-windows-message -: LVM_GETISEARCHSTRINGW LVM_FIRST 117 + ; inline add-windows-message -: LVM_SETICONSPACING LVM_FIRST 53 + ; inline add-windows-message -: LVM_SETEXTENDEDLISTVIEWSTYLE LVM_FIRST 54 + ; inline add-windows-message -: LVM_GETEXTENDEDLISTVIEWSTYLE LVM_FIRST 55 + ; inline add-windows-message -: LVM_GETSUBITEMRECT LVM_FIRST 56 + ; inline add-windows-message -: LVM_SUBITEMHITTEST LVM_FIRST 57 + ; inline add-windows-message -: LVM_SETCOLUMNORDERARRAY LVM_FIRST 58 + ; inline add-windows-message -: LVM_GETCOLUMNORDERARRAY LVM_FIRST 59 + ; inline add-windows-message -: LVM_SETHOTITEM LVM_FIRST 60 + ; inline add-windows-message -: LVM_GETHOTITEM LVM_FIRST 61 + ; inline add-windows-message -: LVM_SETHOTCURSOR LVM_FIRST 62 + ; inline add-windows-message -: LVM_GETHOTCURSOR LVM_FIRST 63 + ; inline add-windows-message -: LVM_APPROXIMATEVIEWRECT LVM_FIRST 64 + ; inline add-windows-message -: LVM_SETWORKAREAS LVM_FIRST 65 + ; inline add-windows-message -: LVM_GETWORKAREAS LVM_FIRST 70 + ; inline add-windows-message -: LVM_GETNUMBEROFWORKAREAS LVM_FIRST 73 + ; inline add-windows-message -: LVM_GETSELECTIONMARK LVM_FIRST 66 + ; inline add-windows-message -: LVM_SETSELECTIONMARK LVM_FIRST 67 + ; inline add-windows-message -: LVM_SETHOVERTIME LVM_FIRST 71 + ; inline add-windows-message -: LVM_GETHOVERTIME LVM_FIRST 72 + ; inline add-windows-message -: LVM_SETTOOLTIPS LVM_FIRST 74 + ; inline add-windows-message -: LVM_GETTOOLTIPS LVM_FIRST 78 + ; inline add-windows-message -: LVM_SORTITEMSEX LVM_FIRST 81 + ; inline add-windows-message -: LVM_SETBKIMAGEA LVM_FIRST 68 + ; inline add-windows-message -: LVM_SETBKIMAGEW LVM_FIRST 138 + ; inline add-windows-message -: LVM_GETBKIMAGEA LVM_FIRST 69 + ; inline add-windows-message -: LVM_GETBKIMAGEW LVM_FIRST 139 + ; inline add-windows-message -: LVM_SETSELECTEDCOLUMN LVM_FIRST 140 + ; inline add-windows-message -: LVM_SETTILEWIDTH LVM_FIRST 141 + ; inline add-windows-message -: LVM_SETVIEW LVM_FIRST 142 + ; inline add-windows-message -: LVM_GETVIEW LVM_FIRST 143 + ; inline add-windows-message -: LVM_INSERTGROUP LVM_FIRST 145 + ; inline add-windows-message -: LVM_SETGROUPINFO LVM_FIRST 147 + ; inline add-windows-message -: LVM_GETGROUPINFO LVM_FIRST 149 + ; inline add-windows-message -: LVM_REMOVEGROUP LVM_FIRST 150 + ; inline add-windows-message -: LVM_MOVEGROUP LVM_FIRST 151 + ; inline add-windows-message -: LVM_MOVEITEMTOGROUP LVM_FIRST 154 + ; inline add-windows-message -: LVM_SETGROUPMETRICS LVM_FIRST 155 + ; inline add-windows-message -: LVM_GETGROUPMETRICS LVM_FIRST 156 + ; inline add-windows-message -: LVM_ENABLEGROUPVIEW LVM_FIRST 157 + ; inline add-windows-message -: LVM_SORTGROUPS LVM_FIRST 158 + ; inline add-windows-message -: LVM_INSERTGROUPSORTED LVM_FIRST 159 + ; inline add-windows-message -: LVM_REMOVEALLGROUPS LVM_FIRST 160 + ; inline add-windows-message -: LVM_HASGROUP LVM_FIRST 161 + ; inline add-windows-message -: LVM_SETTILEVIEWINFO LVM_FIRST 162 + ; inline add-windows-message -: LVM_GETTILEVIEWINFO LVM_FIRST 163 + ; inline add-windows-message -: LVM_SETTILEINFO LVM_FIRST 164 + ; inline add-windows-message -: LVM_GETTILEINFO LVM_FIRST 165 + ; inline add-windows-message -: LVM_SETINSERTMARK LVM_FIRST 166 + ; inline add-windows-message -: LVM_GETINSERTMARK LVM_FIRST 167 + ; inline add-windows-message -: LVM_INSERTMARKHITTEST LVM_FIRST 168 + ; inline add-windows-message -: LVM_GETINSERTMARKRECT LVM_FIRST 169 + ; inline add-windows-message -: LVM_SETINSERTMARKCOLOR LVM_FIRST 170 + ; inline add-windows-message -: LVM_GETINSERTMARKCOLOR LVM_FIRST 171 + ; inline add-windows-message -: LVM_SETINFOTIP LVM_FIRST 173 + ; inline add-windows-message -: LVM_GETSELECTEDCOLUMN LVM_FIRST 174 + ; inline add-windows-message -: LVM_ISGROUPVIEWENABLED LVM_FIRST 175 + ; inline add-windows-message -: LVM_GETOUTLINECOLOR LVM_FIRST 176 + ; inline add-windows-message -: LVM_SETOUTLINECOLOR LVM_FIRST 177 + ; inline add-windows-message -: LVM_CANCELEDITLABEL LVM_FIRST 179 + ; inline add-windows-message -: LVM_MAPINDEXTOID LVM_FIRST 180 + ; inline add-windows-message -: LVM_MAPIDTOINDEX LVM_FIRST 181 + ; inline add-windows-message -: TVM_INSERTITEMA TV_FIRST 0 + ; inline add-windows-message -: TVM_INSERTITEMW TV_FIRST 50 + ; inline add-windows-message -: TVM_DELETEITEM TV_FIRST 1 + ; inline add-windows-message -: TVM_EXPAND TV_FIRST 2 + ; inline add-windows-message -: TVM_GETITEMRECT TV_FIRST 4 + ; inline add-windows-message -: TVM_GETCOUNT TV_FIRST 5 + ; inline add-windows-message -: TVM_GETINDENT TV_FIRST 6 + ; inline add-windows-message -: TVM_SETINDENT TV_FIRST 7 + ; inline add-windows-message -: TVM_GETIMAGELIST TV_FIRST 8 + ; inline add-windows-message -: TVM_SETIMAGELIST TV_FIRST 9 + ; inline add-windows-message -: TVM_GETNEXTITEM TV_FIRST 10 + ; inline add-windows-message -: TVM_SELECTITEM TV_FIRST 11 + ; inline add-windows-message -: TVM_GETITEMA TV_FIRST 12 + ; inline add-windows-message -: TVM_GETITEMW TV_FIRST 62 + ; inline add-windows-message -: TVM_SETITEMA TV_FIRST 13 + ; inline add-windows-message -: TVM_SETITEMW TV_FIRST 63 + ; inline add-windows-message -: TVM_EDITLABELA TV_FIRST 14 + ; inline add-windows-message -: TVM_EDITLABELW TV_FIRST 65 + ; inline add-windows-message -: TVM_GETEDITCONTROL TV_FIRST 15 + ; inline add-windows-message -: TVM_GETVISIBLECOUNT TV_FIRST 16 + ; inline add-windows-message -: TVM_HITTEST TV_FIRST 17 + ; inline add-windows-message -: TVM_CREATEDRAGIMAGE TV_FIRST 18 + ; inline add-windows-message -: TVM_SORTCHILDREN TV_FIRST 19 + ; inline add-windows-message -: TVM_ENSUREVISIBLE TV_FIRST 20 + ; inline add-windows-message -: TVM_SORTCHILDRENCB TV_FIRST 21 + ; inline add-windows-message -: TVM_ENDEDITLABELNOW TV_FIRST 22 + ; inline add-windows-message -: TVM_GETISEARCHSTRINGA TV_FIRST 23 + ; inline add-windows-message -: TVM_GETISEARCHSTRINGW TV_FIRST 64 + ; inline add-windows-message -: TVM_SETTOOLTIPS TV_FIRST 24 + ; inline add-windows-message -: TVM_GETTOOLTIPS TV_FIRST 25 + ; inline add-windows-message -: TVM_SETINSERTMARK TV_FIRST 26 + ; inline add-windows-message -: TVM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT ; inline add-windows-message -: TVM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT ; inline add-windows-message -: TVM_SETITEMHEIGHT TV_FIRST 27 + ; inline add-windows-message -: TVM_GETITEMHEIGHT TV_FIRST 28 + ; inline add-windows-message -: TVM_SETBKCOLOR TV_FIRST 29 + ; inline add-windows-message -: TVM_SETTEXTCOLOR TV_FIRST 30 + ; inline add-windows-message -: TVM_GETBKCOLOR TV_FIRST 31 + ; inline add-windows-message -: TVM_GETTEXTCOLOR TV_FIRST 32 + ; inline add-windows-message -: TVM_SETSCROLLTIME TV_FIRST 33 + ; inline add-windows-message -: TVM_GETSCROLLTIME TV_FIRST 34 + ; inline add-windows-message -: TVM_SETINSERTMARKCOLOR TV_FIRST 37 + ; inline add-windows-message -: TVM_GETINSERTMARKCOLOR TV_FIRST 38 + ; inline add-windows-message -: TVM_GETITEMSTATE TV_FIRST 39 + ; inline add-windows-message -: TVM_SETLINECOLOR TV_FIRST 40 + ; inline add-windows-message -: TVM_GETLINECOLOR TV_FIRST 41 + ; inline add-windows-message -: TVM_MAPACCIDTOHTREEITEM TV_FIRST 42 + ; inline add-windows-message -: TVM_MAPHTREEITEMTOACCID TV_FIRST 43 + ; inline add-windows-message -: CBEM_INSERTITEMA WM_USER 1 + ; inline add-windows-message -: CBEM_SETIMAGELIST WM_USER 2 + ; inline add-windows-message -: CBEM_GETIMAGELIST WM_USER 3 + ; inline add-windows-message -: CBEM_GETITEMA WM_USER 4 + ; inline add-windows-message -: CBEM_SETITEMA WM_USER 5 + ; inline add-windows-message -: CBEM_DELETEITEM CB_DELETESTRING ; inline add-windows-message -: CBEM_GETCOMBOCONTROL WM_USER 6 + ; inline add-windows-message -: CBEM_GETEDITCONTROL WM_USER 7 + ; inline add-windows-message -: CBEM_SETEXTENDEDSTYLE WM_USER 14 + ; inline add-windows-message -: CBEM_GETEXTENDEDSTYLE WM_USER 9 + ; inline add-windows-message -: CBEM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT ; inline add-windows-message -: CBEM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT ; inline add-windows-message -: CBEM_SETEXSTYLE WM_USER 8 + ; inline add-windows-message -: CBEM_GETEXSTYLE WM_USER 9 + ; inline add-windows-message -: CBEM_HASEDITCHANGED WM_USER 10 + ; inline add-windows-message -: CBEM_INSERTITEMW WM_USER 11 + ; inline add-windows-message -: CBEM_SETITEMW WM_USER 12 + ; inline add-windows-message -: CBEM_GETITEMW WM_USER 13 + ; inline add-windows-message -: TCM_GETIMAGELIST TCM_FIRST 2 + ; inline add-windows-message -: TCM_SETIMAGELIST TCM_FIRST 3 + ; inline add-windows-message -: TCM_GETITEMCOUNT TCM_FIRST 4 + ; inline add-windows-message -: TCM_GETITEMA TCM_FIRST 5 + ; inline add-windows-message -: TCM_GETITEMW TCM_FIRST 60 + ; inline add-windows-message -: TCM_SETITEMA TCM_FIRST 6 + ; inline add-windows-message -: TCM_SETITEMW TCM_FIRST 61 + ; inline add-windows-message -: TCM_INSERTITEMA TCM_FIRST 7 + ; inline add-windows-message -: TCM_INSERTITEMW TCM_FIRST 62 + ; inline add-windows-message -: TCM_DELETEITEM TCM_FIRST 8 + ; inline add-windows-message -: TCM_DELETEALLITEMS TCM_FIRST 9 + ; inline add-windows-message -: TCM_GETITEMRECT TCM_FIRST 10 + ; inline add-windows-message -: TCM_GETCURSEL TCM_FIRST 11 + ; inline add-windows-message -: TCM_SETCURSEL TCM_FIRST 12 + ; inline add-windows-message -: TCM_HITTEST TCM_FIRST 13 + ; inline add-windows-message -: TCM_SETITEMEXTRA TCM_FIRST 14 + ; inline add-windows-message -: TCM_ADJUSTRECT TCM_FIRST 40 + ; inline add-windows-message -: TCM_SETITEMSIZE TCM_FIRST 41 + ; inline add-windows-message -: TCM_REMOVEIMAGE TCM_FIRST 42 + ; inline add-windows-message -: TCM_SETPADDING TCM_FIRST 43 + ; inline add-windows-message -: TCM_GETROWCOUNT TCM_FIRST 44 + ; inline add-windows-message -: TCM_GETTOOLTIPS TCM_FIRST 45 + ; inline add-windows-message -: TCM_SETTOOLTIPS TCM_FIRST 46 + ; inline add-windows-message -: TCM_GETCURFOCUS TCM_FIRST 47 + ; inline add-windows-message -: TCM_SETCURFOCUS TCM_FIRST 48 + ; inline add-windows-message -: TCM_SETMINTABWIDTH TCM_FIRST 49 + ; inline add-windows-message -: TCM_DESELECTALL TCM_FIRST 50 + ; inline add-windows-message -: TCM_HIGHLIGHTITEM TCM_FIRST 51 + ; inline add-windows-message -: TCM_SETEXTENDEDSTYLE TCM_FIRST 52 + ; inline add-windows-message -: TCM_GETEXTENDEDSTYLE TCM_FIRST 53 + ; inline add-windows-message -: TCM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT ; inline add-windows-message -: TCM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT ; inline add-windows-message -: ACM_OPENA WM_USER 100 + ; inline add-windows-message -: ACM_OPENW WM_USER 103 + ; inline add-windows-message -: ACM_PLAY WM_USER 101 + ; inline add-windows-message -: ACM_STOP WM_USER 102 + ; inline add-windows-message -: MCM_FIRST HEX: 1000 ; inline add-windows-message -: MCM_GETCURSEL MCM_FIRST 1 + ; inline add-windows-message -: MCM_SETCURSEL MCM_FIRST 2 + ; inline add-windows-message -: MCM_GETMAXSELCOUNT MCM_FIRST 3 + ; inline add-windows-message -: MCM_SETMAXSELCOUNT MCM_FIRST 4 + ; inline add-windows-message -: MCM_GETSELRANGE MCM_FIRST 5 + ; inline add-windows-message -: MCM_SETSELRANGE MCM_FIRST 6 + ; inline add-windows-message -: MCM_GETMONTHRANGE MCM_FIRST 7 + ; inline add-windows-message -: MCM_SETDAYSTATE MCM_FIRST 8 + ; inline add-windows-message -: MCM_GETMINREQRECT MCM_FIRST 9 + ; inline add-windows-message -: MCM_SETCOLOR MCM_FIRST 10 + ; inline add-windows-message -: MCM_GETCOLOR MCM_FIRST 11 + ; inline add-windows-message -: MCM_SETTODAY MCM_FIRST 12 + ; inline add-windows-message -: MCM_GETTODAY MCM_FIRST 13 + ; inline add-windows-message -: MCM_HITTEST MCM_FIRST 14 + ; inline add-windows-message -: MCM_SETFIRSTDAYOFWEEK MCM_FIRST 15 + ; inline add-windows-message -: MCM_GETFIRSTDAYOFWEEK MCM_FIRST 16 + ; inline add-windows-message -: MCM_GETRANGE MCM_FIRST 17 + ; inline add-windows-message -: MCM_SETRANGE MCM_FIRST 18 + ; inline add-windows-message -: MCM_GETMONTHDELTA MCM_FIRST 19 + ; inline add-windows-message -: MCM_SETMONTHDELTA MCM_FIRST 20 + ; inline add-windows-message -: MCM_GETMAXTODAYWIDTH MCM_FIRST 21 + ; inline add-windows-message -: MCM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT ; inline add-windows-message -: MCM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT ; inline add-windows-message -: DTM_FIRST HEX: 1000 ; inline add-windows-message -: DTM_GETSYSTEMTIME DTM_FIRST 1 + ; inline add-windows-message -: DTM_SETSYSTEMTIME DTM_FIRST 2 + ; inline add-windows-message -: DTM_GETRANGE DTM_FIRST 3 + ; inline add-windows-message -: DTM_SETRANGE DTM_FIRST 4 + ; inline add-windows-message -: DTM_SETFORMATA DTM_FIRST 5 + ; inline add-windows-message -: DTM_SETFORMATW DTM_FIRST 50 + ; inline add-windows-message -: DTM_SETMCCOLOR DTM_FIRST 6 + ; inline add-windows-message -: DTM_GETMCCOLOR DTM_FIRST 7 + ; inline add-windows-message -: DTM_GETMONTHCAL DTM_FIRST 8 + ; inline add-windows-message -: DTM_SETMCFONT DTM_FIRST 9 + ; inline add-windows-message -: DTM_GETMCFONT DTM_FIRST 10 + ; inline add-windows-message -: PGM_SETCHILD PGM_FIRST 1 + ; inline add-windows-message -: PGM_RECALCSIZE PGM_FIRST 2 + ; inline add-windows-message -: PGM_FORWARDMOUSE PGM_FIRST 3 + ; inline add-windows-message -: PGM_SETBKCOLOR PGM_FIRST 4 + ; inline add-windows-message -: PGM_GETBKCOLOR PGM_FIRST 5 + ; inline add-windows-message -: PGM_SETBORDER PGM_FIRST 6 + ; inline add-windows-message -: PGM_GETBORDER PGM_FIRST 7 + ; inline add-windows-message -: PGM_SETPOS PGM_FIRST 8 + ; inline add-windows-message -: PGM_GETPOS PGM_FIRST 9 + ; inline add-windows-message -: PGM_SETBUTTONSIZE PGM_FIRST 10 + ; inline add-windows-message -: PGM_GETBUTTONSIZE PGM_FIRST 11 + ; inline add-windows-message -: PGM_GETBUTTONSTATE PGM_FIRST 12 + ; inline add-windows-message -: PGM_GETDROPTARGET CCM_GETDROPTARGET ; inline add-windows-message -: BCM_GETIDEALSIZE BCM_FIRST 1 + ; inline add-windows-message -: BCM_SETIMAGELIST BCM_FIRST 2 + ; inline add-windows-message -: BCM_GETIMAGELIST BCM_FIRST 3 + ; inline add-windows-message -: BCM_SETTEXTMARGIN BCM_FIRST 4 + ; inline add-windows-message -: BCM_GETTEXTMARGIN BCM_FIRST 5 + ; inline add-windows-message -: EM_SETCUEBANNER ECM_FIRST 1 + ; inline add-windows-message -: EM_GETCUEBANNER ECM_FIRST 2 + ; inline add-windows-message -: EM_SHOWBALLOONTIP ECM_FIRST 3 + ; inline add-windows-message -: EM_HIDEBALLOONTIP ECM_FIRST 4 + ; inline add-windows-message -: CB_SETMINVISIBLE CBM_FIRST 1 + ; inline add-windows-message -: CB_GETMINVISIBLE CBM_FIRST 2 + ; inline add-windows-message -: LM_HITTEST WM_USER HEX: 0300 + ; inline add-windows-message -: LM_GETIDEALHEIGHT WM_USER HEX: 0301 + ; inline add-windows-message -: LM_SETITEM WM_USER HEX: 0302 + ; inline add-windows-message -: LM_GETITEM WM_USER HEX: 0303 + ; inline add-windows-message diff --git a/library/windows/winsock.factor b/library/windows/winsock.factor deleted file mode 100644 index f127b7b26d..0000000000 --- a/library/windows/winsock.factor +++ /dev/null @@ -1,107 +0,0 @@ -! :folding=indent:collapseFolds=1: - -! $Id: winsock.factor,v 1.8 2005/09/12 15:10:33 erg Exp $ -! -! Copyright (C) 2004 Mackenzie Straight. -! -! Redistribution and use in source and binary forms, with or without -! modification, are permitted provided that the following conditions are met: -! -! 1. Redistributions of source code must retain the above copyright notice, -! this list of conditions and the following disclaimer. -! -! 2. Redistributions in binary form must reproduce the above copyright notice, -! this list of conditions and the following disclaimer in the documentation -! and/or other materials provided with the distribution. -! -! THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -! INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -! FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -! DEVELOPERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -! SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -! PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -! OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -! WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -! ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -IN: win32-api -USE: alien -USE: kernel -USE: kernel-internals -USE: sequences-internals -USE: arrays - -: HEX: 190 ; - -: AF_INET 2 ; -: SOCK_STREAM 1 ; -: WSA_FLAG_OVERLAPPED 1 ; -: INADDR_ANY 0 ; - -BEGIN-STRUCT: sockaddr-in - FIELD: short family - FIELD: short port - FIELD: int addr - FIELD: char pad - FIELD: char pad - FIELD: char pad - FIELD: char pad - FIELD: char pad - FIELD: char pad - FIELD: char pad - FIELD: char pad -END-STRUCT - -: WSAStartup ( version out-data -- int ) - "int" "winsock" "WSAStartup" [ "short" "void*" ] alien-invoke ; - -: WSASocket ( af type protocol protocol-info g flags -- socket ) - "void*" "winsock" "WSASocketA" [ "int" "int" "int" "void*" "void*" "int" ] - alien-invoke ; - -: htons ( short -- short ) - "ushort" "winsock" "htons" [ "ushort" ] alien-invoke ; - -: ntohs ( short -- short ) - "ushort" "winsock" "ntohs" [ "ushort" ] alien-invoke ; - -: wsa-bind ( socket sockaddr len -- status ) - "int" "winsock" "bind" [ "void*" "sockaddr-in*" "int" ] alien-invoke ; - -: wsa-listen ( socket backlog -- status ) - "int" "winsock" "listen" [ "void*" "int" ] alien-invoke ; - -: WSAGetLastError ( -- error ) - "int" "winsock" "WSAGetLastError" [ ] alien-invoke ; - -: inet-ntoa ( in-addr -- str ) - "char*" "winsock" "inet_ntoa" [ "int" ] alien-invoke ; - -: AcceptEx -( listen accept out-buf recv-len addr-len remote-len out-len overlapped -- ? ) - "bool" "mswsock" "AcceptEx" - [ "void*" "void*" "void*" "int" "int" "int" "void*" "void*" ] - alien-invoke ; - -: GetAcceptExSockaddrs ( stack effect is too long to put here -- ) - "void" "mswsock" "GetAcceptExSockaddrs" - [ "void*" "int" "int" "int" "void*" "void*" "void*" "void*" ] alien-invoke ; - -BEGIN-STRUCT: hostent - FIELD: char* name - FIELD: void* aliases - FIELD: short addrtype - FIELD: short length - FIELD: void* addr-list -END-STRUCT - -: hostent-addr hostent-addr-list *void* *uint ; - -: gethostbyname ( name -- hostent ) - "hostent*" "winsock" "gethostbyname" [ "char*" ] alien-invoke ; - -: connect ( socket sockaddr addrlen -- int ) - "int" "winsock" "connect" [ "void*" "sockaddr-in*" "int" ] - alien-invoke ; - diff --git a/vm/Config.windows b/vm/Config.windows index 155b8cf343..75dd8d1f12 100644 --- a/vm/Config.windows +++ b/vm/Config.windows @@ -1,3 +1,4 @@ CFLAGS += -DWINDOWS LIBS = -lm PLAF_SUFFIX = .exe +PLAF_OBJS = vm/os-windows.o diff --git a/vm/alien.c b/vm/alien.c index 5832c020bc..829f34a777 100644 --- a/vm/alien.c +++ b/vm/alien.c @@ -1,210 +1,210 @@ -#include "factor.h" - -/* test if alien is no longer valid (it survived an image save/load) */ -void primitive_expired(void) -{ - CELL object = dpeek(); - - if(type_of(object) == ALIEN_TYPE) - { - ALIEN *alien = untag_alien_fast(object); - drepl(tag_boolean(alien->expired)); - } - else if(object == F) - drepl(T); - else - drepl(F); -} - -/* gets the address of an object representing a C pointer */ -void *alien_offset(CELL object) -{ - ALIEN *alien; - F_ARRAY *array; - - switch(type_of(object)) - { - case BYTE_ARRAY_TYPE: - array = untag_byte_array_fast(object); - return array + 1; - case ALIEN_TYPE: - alien = untag_alien_fast(object); - if(alien->expired) - general_error(ERROR_EXPIRED,object,F,true); - return alien_offset(alien->alien) + alien->displacement; - case F_TYPE: - return NULL; - default: - type_error(ALIEN_TYPE,object); - return (void*)-1; /* can't happen */ - } -} - -/* pop an object representing a C pointer */ -void *unbox_alien(void) -{ - return alien_offset(dpop()); -} - -/* pop ( alien n ) from datastack, return alien's address plus n */ -INLINE void *alien_pointer(void) -{ - F_FIXNUM offset = unbox_signed_cell(); - return unbox_alien() + offset; -} - -/* make an alien */ -ALIEN *make_alien(CELL delegate, CELL displacement) -{ - ALIEN *alien = allot_object(ALIEN_TYPE,sizeof(ALIEN)); - alien->alien = delegate; - alien->displacement = displacement; - alien->expired = false; - return alien; -} - -/* make an alien and push */ -void box_alien(CELL ptr) -{ - if(ptr == 0) - dpush(F); - else - dpush(tag_object(make_alien(F,ptr))); -} - -/* make an alien pointing at an offset of another alien */ -void primitive_displaced_alien(void) -{ - CELL alien; - CELL displacement; - maybe_gc(sizeof(ALIEN)); - alien = dpop(); - displacement = unbox_unsigned_cell(); - if(alien == F && displacement == 0) - dpush(F); - else - dpush(tag_object(make_alien(alien,displacement))); -} - -/* address of an object representing a C pointer */ -void primitive_alien_address(void) -{ - box_unsigned_cell((CELL)alien_offset(dpop())); -} - -/* image loading */ -void fixup_alien(ALIEN *d) -{ - data_fixup(&d->alien); - d->expired = true; -} - -/* GC */ -void collect_alien(ALIEN *d) -{ - copy_handle(&d->alien); -} - -/* define words to read/write numericals values at an alien address */ -#define DEF_ALIEN_SLOT(name,type,boxer) \ -void primitive_alien_##name (void) \ -{ \ - box_##boxer (*(type*)alien_pointer()); \ -} \ -void primitive_set_alien_##name (void) \ -{ \ - type* ptr = alien_pointer(); \ - type value = unbox_##boxer(); \ - *ptr = value; \ -} - -DEF_ALIEN_SLOT(signed_cell,F_FIXNUM,signed_cell) -DEF_ALIEN_SLOT(unsigned_cell,CELL,unsigned_cell) -DEF_ALIEN_SLOT(signed_8,s64,signed_8) -DEF_ALIEN_SLOT(unsigned_8,u64,unsigned_8) -DEF_ALIEN_SLOT(signed_4,s32,signed_4) -DEF_ALIEN_SLOT(unsigned_4,u32,unsigned_4) -DEF_ALIEN_SLOT(signed_2,s16,signed_2) -DEF_ALIEN_SLOT(unsigned_2,u16,unsigned_2) -DEF_ALIEN_SLOT(signed_1,u8,signed_1) -DEF_ALIEN_SLOT(unsigned_1,u8,unsigned_1) -DEF_ALIEN_SLOT(float,float,float) -DEF_ALIEN_SLOT(double,double,double) - -/* for FFI calls passing structs by value */ -void unbox_value_struct(void *dest, CELL size) -{ - memcpy(dest,unbox_alien(),size); -} - -/* for FFI callbacks receiving structs by value */ -void box_value_struct(void *src, CELL size) -{ - F_ARRAY *array = byte_array(size); - memcpy(array + 1,src,size); - dpush(tag_object(array)); -} - -/* for FFI calls returning an 8-byte struct. This only -happends on Intel Mac OS X */ -void box_value_pair(CELL x, CELL y) -{ - F_ARRAY *array = byte_array(8); - put(AREF(array,0),x); - put(AREF(array,1),y); - dpush(tag_object(array)); -} - -void primitive_dlopen(void) -{ - DLL* dll; - F_STRING* path; - - maybe_gc(sizeof(DLL)); - - path = untag_string(dpop()); - dll = allot_object(DLL_TYPE,sizeof(DLL)); - dll->path = tag_object(path); - ffi_dlopen(dll,true); - - dpush(tag_object(dll)); -} - -void primitive_dlsym(void) -{ - CELL dll; - F_STRING *sym; - DLL *d; - - maybe_gc(0); - - dll = dpop(); - sym = untag_string(dpop()); - - if(dll == F) - d = NULL; - else - { - d = untag_dll(dll); - if(d->dll == NULL) - general_error(ERROR_EXPIRED,dll,F,true); - } - - dpush(tag_cell((CELL)ffi_dlsym(d,sym,true))); -} - -void primitive_dlclose(void) -{ - ffi_dlclose(untag_dll(dpop())); -} - -void fixup_dll(DLL* dll) -{ - data_fixup(&dll->path); - ffi_dlopen(dll,false); -} - -void collect_dll(DLL* dll) -{ - copy_handle(&dll->path); -} +#include "factor.h" + +/* test if alien is no longer valid (it survived an image save/load) */ +void primitive_expired(void) +{ + CELL object = dpeek(); + + if(type_of(object) == ALIEN_TYPE) + { + ALIEN *alien = untag_alien_fast(object); + drepl(tag_boolean(alien->expired)); + } + else if(object == F) + drepl(T); + else + drepl(F); +} + +/* gets the address of an object representing a C pointer */ +void *alien_offset(CELL object) +{ + ALIEN *alien; + F_ARRAY *array; + + switch(type_of(object)) + { + case BYTE_ARRAY_TYPE: + array = untag_byte_array_fast(object); + return array + 1; + case ALIEN_TYPE: + alien = untag_alien_fast(object); + if(alien->expired) + general_error(ERROR_EXPIRED,object,F,true); + return alien_offset(alien->alien) + alien->displacement; + case F_TYPE: + return NULL; + default: + type_error(ALIEN_TYPE,object); + return (void*)-1; /* can't happen */ + } +} + +/* pop an object representing a C pointer */ +void *unbox_alien(void) +{ + return alien_offset(dpop()); +} + +/* pop ( alien n ) from datastack, return alien's address plus n */ +INLINE void *alien_pointer(void) +{ + F_FIXNUM offset = unbox_signed_cell(); + return unbox_alien() + offset; +} + +/* make an alien */ +ALIEN *make_alien(CELL delegate, CELL displacement) +{ + ALIEN *alien = allot_object(ALIEN_TYPE,sizeof(ALIEN)); + alien->alien = delegate; + alien->displacement = displacement; + alien->expired = false; + return alien; +} + +/* make an alien and push */ +void box_alien(CELL ptr) +{ + if(ptr == 0) + dpush(F); + else + dpush(tag_object(make_alien(F,ptr))); +} + +/* make an alien pointing at an offset of another alien */ +void primitive_displaced_alien(void) +{ + CELL alien; + CELL displacement; + maybe_gc(sizeof(ALIEN)); + alien = dpop(); + displacement = unbox_unsigned_cell(); + if(alien == F && displacement == 0) + dpush(F); + else + dpush(tag_object(make_alien(alien,displacement))); +} + +/* address of an object representing a C pointer */ +void primitive_alien_address(void) +{ + box_unsigned_cell((CELL)alien_offset(dpop())); +} + +/* image loading */ +void fixup_alien(ALIEN *d) +{ + data_fixup(&d->alien); + d->expired = true; +} + +/* GC */ +void collect_alien(ALIEN *d) +{ + copy_handle(&d->alien); +} + +/* define words to read/write numericals values at an alien address */ +#define DEF_ALIEN_SLOT(name,type,boxer) \ +void primitive_alien_##name (void) \ +{ \ + box_##boxer (*(type*)alien_pointer()); \ +} \ +void primitive_set_alien_##name (void) \ +{ \ + type* ptr = alien_pointer(); \ + type value = unbox_##boxer(); \ + *ptr = value; \ +} + +DEF_ALIEN_SLOT(signed_cell,F_FIXNUM,signed_cell) +DEF_ALIEN_SLOT(unsigned_cell,CELL,unsigned_cell) +DEF_ALIEN_SLOT(signed_8,s64,signed_8) +DEF_ALIEN_SLOT(unsigned_8,u64,unsigned_8) +DEF_ALIEN_SLOT(signed_4,s32,signed_4) +DEF_ALIEN_SLOT(unsigned_4,u32,unsigned_4) +DEF_ALIEN_SLOT(signed_2,s16,signed_2) +DEF_ALIEN_SLOT(unsigned_2,u16,unsigned_2) +DEF_ALIEN_SLOT(signed_1,u8,signed_1) +DEF_ALIEN_SLOT(unsigned_1,u8,unsigned_1) +DEF_ALIEN_SLOT(float,float,float) +DEF_ALIEN_SLOT(double,double,double) + +/* for FFI calls passing structs by value */ +void unbox_value_struct(void *dest, CELL size) +{ + memcpy(dest,unbox_alien(),size); +} + +/* for FFI callbacks receiving structs by value */ +void box_value_struct(void *src, CELL size) +{ + F_ARRAY *array = byte_array(size); + memcpy(array + 1,src,size); + dpush(tag_object(array)); +} + +/* for FFI calls returning an 8-byte struct. This only +happends on Intel Mac OS X */ +void box_value_pair(CELL x, CELL y) +{ + F_ARRAY *array = byte_array(8); + put(AREF(array,0),x); + put(AREF(array,1),y); + dpush(tag_object(array)); +} + +void primitive_dlopen(void) +{ + DLL* dll; + F_STRING* path; + + maybe_gc(sizeof(DLL)); + + path = untag_string(dpop()); + dll = allot_object(DLL_TYPE,sizeof(DLL)); + dll->path = tag_object(path); + ffi_dlopen(dll,true); + + dpush(tag_object(dll)); +} + +void primitive_dlsym(void) +{ + CELL dll; + F_STRING *sym; + DLL *d; + + maybe_gc(0); + + dll = dpop(); + sym = untag_string(dpop()); + + if(dll == F) + d = NULL; + else + { + d = untag_dll(dll); + if(d->dll == NULL) + general_error(ERROR_EXPIRED,dll,F,true); + } + + dpush(tag_cell((CELL)ffi_dlsym(d,sym,true))); +} + +void primitive_dlclose(void) +{ + ffi_dlclose(untag_dll(dpop())); +} + +void fixup_dll(DLL* dll) +{ + data_fixup(&dll->path); + ffi_dlopen(dll,false); +} + +void collect_dll(DLL* dll) +{ + copy_handle(&dll->path); +} diff --git a/vm/os-windows.c b/vm/os-windows.c index 7b41e09b58..effd9410c0 100644 --- a/vm/os-windows.c +++ b/vm/os-windows.c @@ -1,234 +1,234 @@ -#include "factor.h" - -/* frees memory allocated by win32 api calls */ -char *buffer_to_c_string(char *buffer) -{ - int capacity = strlen(buffer); - F_STRING *_c_str = allot_string(capacity / CHARS + 1); - u8 *c_str = (u8*)(_c_str + 1); - strcpy(c_str, buffer); - LocalFree(buffer); - return (char*)c_str; -} - -F_STRING *get_error_message() -{ - DWORD id = GetLastError(); - return from_c_string(error_message(id)); -} - -char *error_message(DWORD id) -{ - char *buffer; - int index; - - FormatMessage( - FORMAT_MESSAGE_ALLOCATE_BUFFER | - FORMAT_MESSAGE_FROM_SYSTEM, - NULL, - id, - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), - (LPTSTR) &buffer, - 0, NULL); - - /* strip whitespace from end */ - index = strlen(buffer) - 1; - while(index >= 0 && isspace(buffer[index])) - buffer[index--] = 0; - - return buffer_to_c_string(buffer); -} - -s64 current_millis(void) -{ - FILETIME t; - GetSystemTimeAsFileTime(&t); - return (((s64)t.dwLowDateTime | (s64)t.dwHighDateTime<<32) - EPOCH_OFFSET) - / 10000; -} - -void ffi_dlopen (DLL *dll, bool error) -{ - HMODULE module; - char *path = to_c_string(untag_string(dll->path),true); - - module = LoadLibrary(path); - - if (!module) - { - dll->dll = NULL; - if(error) - general_error(ERROR_FFI, tag_object(get_error_message()),true); - else - return; - } - - dll->dll = module; -} - -void *ffi_dlsym (DLL *dll, F_STRING *symbol, bool error) -{ - void *sym = GetProcAddress(dll ? (HMODULE)dll->dll : GetModuleHandle(NULL), - to_c_string(symbol,true)); - - if (!sym) - { - if(error) - general_error(ERROR_FFI, tag_object(get_error_message()),true); - else - return NULL; - } - - return sym; -} - -void ffi_dlclose (DLL *dll) -{ - FreeLibrary((HMODULE)dll->dll); - dll->dll = NULL; -} - -void primitive_stat(void) -{ - F_STRING *path; - WIN32_FILE_ATTRIBUTE_DATA st; - - maybe_gc(0); - path = untag_string(dpop()); - - if(!GetFileAttributesEx(to_c_string(path,true), GetFileExInfoStandard, &st)) - { - dpush(F); - } - else - { - CELL dirp = tag_boolean(st.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY); - CELL size = tag_bignum(s48_long_long_to_bignum( - (s64)st.nFileSizeLow | (s64)st.nFileSizeHigh << 32)); - CELL mtime = tag_integer((int) - ((*(s64*)&st.ftLastWriteTime - EPOCH_OFFSET) / 10000000)); - dpush(make_array_4(dirp,tag_fixnum(0),size,mtime)); - } -} - -void primitive_read_dir(void) -{ - F_STRING *path; - HANDLE dir; - WIN32_FIND_DATA find_data; - F_ARRAY *result; - CELL result_count = 0; - - maybe_gc(0); - - result = array(ARRAY_TYPE,100,F); - - path = untag_string(dpop()); - if (INVALID_HANDLE_VALUE != (dir = FindFirstFile(".\\*", &find_data))) - { - do - { - CELL name = tag_object(from_c_string( - find_data.cFileName)); - - if(result_count == array_capacity(result)) - { - result = resize_array(result, - result_count * 2,F); - } - - put(AREF(result,result_count),name); - result_count++; - } - while (FindNextFile(dir, &find_data)); - CloseHandle(dir); - } - - result = resize_array(result,result_count,F); - - dpush(tag_object(result)); -} - -void primitive_cwd(void) -{ - char buf[MAX_PATH]; - - maybe_gc(0); - if(!GetCurrentDirectory(MAX_PATH, buf)) - io_error(); - - box_c_string(buf); -} - -void primitive_cd(void) -{ - maybe_gc(0); - SetCurrentDirectory(pop_c_string()); -} - -BOUNDED_BLOCK *alloc_bounded_block(CELL size) -{ - SYSTEM_INFO si; - char *mem; - DWORD ignore; - - GetSystemInfo(&si); - if((mem = (char *)VirtualAlloc(NULL, si.dwPageSize*2 + size, MEM_COMMIT, PAGE_EXECUTE_READWRITE)) == 0) - fatal_error("VirtualAlloc() failed in alloc_bounded_block()",0); - - if (!VirtualProtect(mem, si.dwPageSize, PAGE_NOACCESS, &ignore)) - fatal_error("Cannot allocate low guard page", (CELL)mem); - - if (!VirtualProtect(mem+size+si.dwPageSize, si.dwPageSize, PAGE_NOACCESS, &ignore)) - fatal_error("Cannot allocate high guard page", (CELL)mem); - - BOUNDED_BLOCK *block = safe_malloc(sizeof(BOUNDED_BLOCK)); - - block->start = (int)mem + si.dwPageSize; - block->size = size; - - return block; -} - -void dealloc_bounded_block(BOUNDED_BLOCK *block) -{ - SYSTEM_INFO si; - GetSystemInfo(&si); - if(!VirtualFree((void*)(block->start - si.dwPageSize), 0, MEM_RELEASE)) - fatal_error("VirtualFree() failed",0); - free(block); -} - -/* SEH support. Proceed with caution. */ -typedef long exception_handler_t( - void *rec, void *frame, void *context, void *dispatch); - -typedef struct exception_record { - struct exception_record *next_handler; - void *handler_func; -} exception_record_t; - -void seh_call(void (*func)(), exception_handler_t *handler) -{ - exception_record_t record; - asm("mov %%fs:0, %0" : "=r" (record.next_handler)); - asm("mov %0, %%fs:0" : : "r" (&record)); - record.handler_func = handler; - func(); - asm("mov %0, %%fs:0" : "=r" (record.next_handler)); -} - -static long exception_handler(void *rec, void *frame, void *ctx, void *dispatch) -{ - signal_error(SIGSEGV); -} - -void platform_run(void) -{ - seh_call(run_toplevel, exception_handler); -} - -const char *default_image_path(void) -{ - return "factor.image"; -} +#include "factor.h" + +/* frees memory allocated by win32 api calls */ +char *buffer_to_char_string(char *buffer) +{ + int capacity = strlen(buffer); + F_STRING *_c_str = allot_string(capacity / CHARS + 1); + u8 *c_str = (u8*)(_c_str + 1); + strcpy(c_str, buffer); + LocalFree(buffer); + return (char*)c_str; +} + +F_STRING *get_error_message() +{ + DWORD id = GetLastError(); + return from_char_string(error_message(id)); +} + +char *error_message(DWORD id) +{ + char *buffer; + int index; + + FormatMessage( + FORMAT_MESSAGE_ALLOCATE_BUFFER | + FORMAT_MESSAGE_FROM_SYSTEM, + NULL, + id, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + (LPTSTR) &buffer, + 0, NULL); + + /* strip whitespace from end */ + index = strlen(buffer) - 1; + while(index >= 0 && isspace(buffer[index])) + buffer[index--] = 0; + + return buffer_to_char_string(buffer); +} + +s64 current_millis(void) +{ + FILETIME t; + GetSystemTimeAsFileTime(&t); + return (((s64)t.dwLowDateTime | (s64)t.dwHighDateTime<<32) - EPOCH_OFFSET) + / 10000; +} + +void ffi_dlopen (DLL *dll, bool error) +{ + HMODULE module; + char *path = to_char_string(untag_string(dll->path),true); + + module = LoadLibrary(path); + + if (!module) + { + dll->dll = NULL; + if(error) + general_error(ERROR_FFI, tag_object(get_error_message()),F,true); + else + return; + } + + dll->dll = module; +} + +void *ffi_dlsym (DLL *dll, F_STRING *symbol, bool error) +{ + void *sym = GetProcAddress(dll ? (HMODULE)dll->dll : GetModuleHandle(NULL), + to_char_string(symbol,true)); + + if (!sym) + { + if(error) + general_error(ERROR_FFI, tag_object(get_error_message()),F,true); + else + return NULL; + } + + return sym; +} + +void ffi_dlclose (DLL *dll) +{ + FreeLibrary((HMODULE)dll->dll); + dll->dll = NULL; +} + +void primitive_stat(void) +{ + F_STRING *path; + WIN32_FILE_ATTRIBUTE_DATA st; + + maybe_gc(0); + path = untag_string(dpop()); + + if(!GetFileAttributesEx(to_char_string(path,true), GetFileExInfoStandard, &st)) + { + dpush(F); + } + else + { + CELL dirp = tag_boolean(st.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY); + CELL size = tag_bignum(s48_long_long_to_bignum( + (s64)st.nFileSizeLow | (s64)st.nFileSizeHigh << 32)); + CELL mtime = tag_integer((int) + ((*(s64*)&st.ftLastWriteTime - EPOCH_OFFSET) / 10000000)); + dpush(make_array_4(dirp,tag_fixnum(0),size,mtime)); + } +} + +void primitive_read_dir(void) +{ + F_STRING *path; + HANDLE dir; + WIN32_FIND_DATA find_data; + F_ARRAY *result; + CELL result_count = 0; + + maybe_gc(0); + + result = array(ARRAY_TYPE,100,F); + + path = untag_string(dpop()); + if (INVALID_HANDLE_VALUE != (dir = FindFirstFile(".\\*", &find_data))) + { + do + { + CELL name = tag_object(from_char_string( + find_data.cFileName)); + + if(result_count == array_capacity(result)) + { + result = resize_array(result, + result_count * 2,F); + } + + put(AREF(result,result_count),name); + result_count++; + } + while (FindNextFile(dir, &find_data)); + CloseHandle(dir); + } + + result = resize_array(result,result_count,F); + + dpush(tag_object(result)); +} + +void primitive_cwd(void) +{ + char buf[MAX_PATH]; + + maybe_gc(0); + if(!GetCurrentDirectory(MAX_PATH, buf)) + io_error(); + + box_char_string(buf); +} + +void primitive_cd(void) +{ + maybe_gc(0); + SetCurrentDirectory(pop_char_string()); +} + +BOUNDED_BLOCK *alloc_bounded_block(CELL size) +{ + SYSTEM_INFO si; + char *mem; + DWORD ignore; + + GetSystemInfo(&si); + if((mem = (char *)VirtualAlloc(NULL, si.dwPageSize*2 + size, MEM_COMMIT, PAGE_EXECUTE_READWRITE)) == 0) + fatal_error("VirtualAlloc() failed in alloc_bounded_block()",0); + + if (!VirtualProtect(mem, si.dwPageSize, PAGE_NOACCESS, &ignore)) + fatal_error("Cannot allocate low guard page", (CELL)mem); + + if (!VirtualProtect(mem+size+si.dwPageSize, si.dwPageSize, PAGE_NOACCESS, &ignore)) + fatal_error("Cannot allocate high guard page", (CELL)mem); + + BOUNDED_BLOCK *block = safe_malloc(sizeof(BOUNDED_BLOCK)); + + block->start = (int)mem + si.dwPageSize; + block->size = size; + + return block; +} + +void dealloc_bounded_block(BOUNDED_BLOCK *block) +{ + SYSTEM_INFO si; + GetSystemInfo(&si); + if(!VirtualFree((void*)(block->start - si.dwPageSize), 0, MEM_RELEASE)) + fatal_error("VirtualFree() failed",0); + free(block); +} + +/* SEH support. Proceed with caution. */ +typedef long exception_handler_t( + void *rec, void *frame, void *context, void *dispatch); + +typedef struct exception_record { + struct exception_record *next_handler; + void *handler_func; +} exception_record_t; + +void seh_call(void (*func)(), exception_handler_t *handler) +{ + exception_record_t record; + asm("mov %%fs:0, %0" : "=r" (record.next_handler)); + asm("mov %0, %%fs:0" : : "r" (&record)); + record.handler_func = handler; + func(); + asm("mov %0, %%fs:0" : "=r" (record.next_handler)); +} + +static long exception_handler(void *rec, void *frame, void *ctx, void *dispatch) +{ + signal_error(SIGSEGV); +} + +void platform_run(void) +{ + seh_call(run_toplevel, exception_handler); +} + +const char *default_image_path(void) +{ + return "factor.image"; +}