diff --git a/library/win32/types.factor b/library/win32/types.factor index bc1bbc4e00..3512b004a8 100644 --- a/library/win32/types.factor +++ b/library/win32/types.factor @@ -1,358 +1,358 @@ -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 -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 - ] [ - 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 +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 +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 + ] [ + 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