#ifndef WINDOWS_H #define WINDOWS_H // Compact windows.h // Retrieve our SDK & DDK versions for proper definition targeting #include #define WINDOWS_API_IMPORT extern "C" __declspec(dllimport) #define CALLBACK __stdcall #define WINAPI __stdcall #define APIENTRY WINAPI #define MAX_PATH 260 typedef unsigned long DWORD, *PDWORD, *LPDWORD; typedef int WINBOOL; typedef WINBOOL BOOL, *LPBOOL; typedef unsigned char BYTE, *PBYTE, *LPBYTE; typedef int INT, *PINT, *LPINT; typedef unsigned int UINT, *PUINT; typedef unsigned short WORD, *PWORD, *LPWORD; typedef float FLOAT, *PFLOAT; typedef int INT; typedef unsigned int UINT; typedef short SHORT; typedef long LONG, *LPLONG; typedef long long LONGLONG; typedef unsigned short USHORT; typedef unsigned long ULONG; typedef unsigned long long ULONGLONG; typedef WORD ATOM; typedef char CHAR; typedef const CHAR* LPCCH, * PCCH; typedef char TCHAR; typedef void VOID, *PVOID, *LPVOID; typedef const void* LPCVOID; typedef __int64 INT_PTR, *PINT_PTR; typedef unsigned __int64 UINT_PTR, *PUINT_PTR; typedef __int64 LONG_PTR, *PLONG_PTR; typedef unsigned __int64 ULONG_PTR, *PULONG_PTR; typedef ULONG_PTR SIZE_T, * PSIZE_T; typedef LONG_PTR SSIZE_T, * PSSIZE_T; typedef signed char INT8, *PINT8; typedef signed short INT16, *PINT16; typedef signed int INT32, * PINT32; typedef signed __int64 INT64, *PINT64; typedef unsigned char UINT8, *PUINT8; typedef unsigned short UINT16, *PUINT16; typedef unsigned int UINT32, *PUINT32; typedef unsigned __int64 UINT64, *PUINT64; typedef signed int LONG32, *PLONG32; typedef unsigned int ULONG32, *PULONG32; typedef unsigned int DWORD32, *PDWORD32; typedef const TCHAR* LPCTSTR; typedef DWORD* PDWORD, *LPDWORD; typedef char* LPSTR; typedef wchar_t* LPWSTR; typedef const char* LPCSTR; // a.k.a Lets Puke C String typedef const wchar_t* LPCWSTR; typedef DWORD LCID; typedef UINT_PTR WPARAM; typedef LONG_PTR LPARAM; typedef ULONG_PTR DWORD_PTR, *PDWORD_PTR; typedef __int64 LONG64, *PLONG64; typedef unsigned __int64 ULONG64, *PULONG64; typedef unsigned __int64 DWORD64, *PDWORD64; typedef unsigned long ULONG, *PULONG; typedef unsigned short USHORT, *PUSHORT; typedef unsigned char UCHAR, *PUCHAR; typedef LONG LRESULT; typedef LONG HRESULT; #ifdef STRICT typedef void* HANDLE; #if 0 && (_MSC_VER > 1000) #define DECLARE_HANDLE(name) struct name##__; typedef struct name##__ *name #else #define DECLARE_HANDLE(name) struct name##__{int unused;}; typedef struct name##__ *name #endif #else typedef PVOID HANDLE; #define DECLARE_HANDLE(name) typedef HANDLE name #endif typedef HANDLE* PHANDLE; typedef HANDLE HMODULE; typedef HANDLE HINSTANCE; typedef HANDLE HWND; typedef HANDLE HWND; typedef HANDLE HMENU; typedef HANDLE HACCEL; typedef HANDLE HBRUSH; typedef HANDLE HFONT; typedef HANDLE HDC; typedef HANDLE HGLRC; typedef HANDLE HICON; typedef HANDLE HRGN; typedef HANDLE HMONITOR; typedef HANDLE HCURSOR; typedef int (WINAPI* FARPROC)(); typedef int (WINAPI* NEARPROC)(); typedef int (WINAPI* PROC)(); typedef LRESULT (CALLBACK* WNDPROC)(HWND, UINT, WPARAM, LPARAM); #define IS_INTRESOURCE(_r) ((((ULONG_PTR)(_r)) >> 16) == 0) #define MAKEINTRESOURCE(i) ((LPSTR)((ULONG_PTR)((WORD)(i)))) #define TRUE 1 #define FALSE 0 #define INVALID_HANDLE_VALUE ((void *)(intptr_t)(-1)) #define HIGH_PRIORITY_CLASS 0x00000080 #define GENERIC_READ 0x80000000 #define GENERIC_WRITE 0x40000000 #define GENERIC_EXECUTE 0x20000000 #define GENERIC_ALL 0x10000000 #define FILE_SHARE_READ 0x00000001 #define FILE_SHARE_WRITE 0x00000002 #define FILE_SHARE_DELETE 0x00000004 #define CREATE_NEW 1 #define CREATE_ALWAYS 2 #define OPEN_EXISTING 3 #define OPEN_ALWAYS 4 #define TRUNCATE_EXISTING 5 #define FILE_SHARE_READ 0x00000001 #define FILE_SHARE_WRITE 0x00000002 #define FILE_SHARE_DELETE 0x00000004 #define FILE_ATTRIBUTE_READONLY 0x00000001 #define FILE_ATTRIBUTE_HIDDEN 0x00000002 #define FILE_ATTRIBUTE_DIRECTORY 0x00000010 #define FILE_ATTRIBUTE_ARCHIVE 0x00000020 #define FILE_ATTRIBUTE_DEVICE 0x00000040 #define FILE_ATTRIBUTE_NORMAL 0x00000080 #define FILE_ATTRIBUTE_TEMPORARY 0x00000100 #define FILE_ATTRIBUTE_COMPRESSED 0x00000800 #define FILE_ATTRIBUTE_ENCRYPTED 0x00004000 #define FILE_ATTRIBUTE_VIRTUAL 0x00010000 #define FILE_ATTRIBUTE_UNPINNED 0x00100000 #define FILE_ATTRIBUTE_RECALL_ON_OPEN 0x00040000 #define FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS 0x00400000 #define STD_INPUT_HANDLE (DWORD)(-10) #define STD_OUTPUT_HANDLE (DWORD)(-11) #define STD_ERROR_HANDLE (DWORD)(-12) #define MEM_COMMIT 0x00001000 #define MEM_RESERVE 0x00002000 #define MEM_LARGE_PAGES 0x20000000 #define PAGE_NOACCESS 0x0 #define PAGE_READWRITE 0x04 #define PAGE_EXECUTE_READWRITE 0x40 #define MEM_RELEASE 0x00008000 /* timer error return values */ #define TIMERR_BASE 96 #define TIMERR_NOERROR (0) /* no error */ #define TIMERR_NOCANDO (TIMERR_BASE+1) /* request not completed */ #define TIMERR_STRUCT (TIMERR_BASE+33) /* time struct size */ // Window class styles #define CS_HREDRAW 0x0002 #define CS_OWNDC 0x0020 #define CS_VREDRAW 0x0001 /* * Window Messages */ #define WM_NULL 0x0000 #define WM_CREATE 0x0001 #define WM_DESTROY 0x0002 #define WM_MOVE 0x0003 #define WM_SIZE 0x0005 #define WM_ACTIVATE 0x0006 /* * WM_ACTIVATE state values */ #define WA_INACTIVE 0 #define WA_ACTIVE 1 #define WA_CLICKACTIVE 2 #define WM_SETFOCUS 0x0007 #define WM_KILLFOCUS 0x0008 #define WM_ENABLE 0x000A #define WM_PAINT 0x000F #define WM_CLOSE 0x0010 #define WM_QUIT 0x0012 #define WM_ACTIVATEAPP 0x001C #define WM_SYSCOLORCHANGE 0x0015 #define WM_SHOWWINDOW 0x0018 #define WM_WINDOWPOSCHANGING 0x0046 #define WM_WINDOWPOSCHANGED 0x0047 #if(_WIN32_WINNT >= 0x0501) #define WM_INPUT_DEVICE_CHANGE 0x00FE #endif /* _WIN32_WINNT >= 0x0501 */ #if(_WIN32_WINNT >= 0x0501) #define WM_INPUT 0x00FF #endif /* _WIN32_WINNT >= 0x0501 */ #define WM_KEYDOWN 0x0100 #define WM_KEYUP 0x0101 #define WM_CHAR 0x0102 #define WM_SYSKEYDOWN 0x0104 #define WM_SYSKEYUP 0x0105 #define WM_SYSCHAR 0x0106 #define WM_SYSCOMMAND 0x0112 /* * System Menu Command Values */ #define SC_SIZE 0xF000 #define SC_MOVE 0xF010 #define SC_MINIMIZE 0xF020 #define SC_MAXIMIZE 0xF030 #define SC_NEXTWINDOW 0xF040 #define SC_PREVWINDOW 0xF050 #define SC_CLOSE 0xF060 #define SC_VSCROLL 0xF070 #define SC_HSCROLL 0xF080 #define SC_MOUSEMENU 0xF090 #define SC_KEYMENU 0xF100 #define SC_ARRANGE 0xF110 #define SC_RESTORE 0xF120 #define SC_TASKLIST 0xF130 #define SC_SCREENSAVE 0xF140 #define SC_HOTKEY 0xF150 #if(WINVER >= 0x0400) #define SC_DEFAULT 0xF160 #define SC_MONITORPOWER 0xF170 #define SC_CONTEXTHELP 0xF180 #define SC_SEPARATOR 0xF00F #endif /* WINVER >= 0x0400 */ /* * Window Styles */ #define WS_OVERLAPPED 0x00000000L #define WS_POPUP 0x80000000L #define WS_CHILD 0x40000000L #define WS_MINIMIZE 0x20000000L #define WS_VISIBLE 0x10000000L #define WS_DISABLED 0x08000000L #define WS_CLIPSIBLINGS 0x04000000L #define WS_CLIPCHILDREN 0x02000000L #define WS_MAXIMIZE 0x01000000L #define WS_CAPTION 0x00C00000L /* WS_BORDER | WS_DLGFRAME */ #define WS_BORDER 0x00800000L #define WS_DLGFRAME 0x00400000L #define WS_VSCROLL 0x00200000L #define WS_HSCROLL 0x00100000L #define WS_SYSMENU 0x00080000L #define WS_THICKFRAME 0x00040000L #define WS_GROUP 0x00020000L #define WS_TABSTOP 0x00010000L #define WS_MINIMIZEBOX 0x00020000L #define WS_MAXIMIZEBOX 0x00010000L #define WS_TILED WS_OVERLAPPED #define WS_ICONIC WS_MINIMIZE #define WS_SIZEBOX WS_THICKFRAME #define WS_TILEDWINDOW WS_OVERLAPPEDWINDOW /* * Common Window Styles */ #define WS_OVERLAPPEDWINDOW (WS_OVERLAPPED | \ WS_CAPTION | \ WS_SYSMENU | \ WS_THICKFRAME | \ WS_MINIMIZEBOX | \ WS_MAXIMIZEBOX) #define WS_POPUPWINDOW (WS_POPUP | \ WS_BORDER | \ WS_SYSMENU) #define WS_CHILDWINDOW (WS_CHILD) /* * Extended Window Styles */ #define WS_EX_DLGMODALFRAME 0x00000001L #define WS_EX_NOPARENTNOTIFY 0x00000004L #define WS_EX_TOPMOST 0x00000008L #define WS_EX_ACCEPTFILES 0x00000010L #define WS_EX_TRANSPARENT 0x00000020L #if(WINVER >= 0x0400) #define WS_EX_MDICHILD 0x00000040L #define WS_EX_TOOLWINDOW 0x00000080L #define WS_EX_WINDOWEDGE 0x00000100L #define WS_EX_CLIENTEDGE 0x00000200L #define WS_EX_CONTEXTHELP 0x00000400L #endif /* WINVER >= 0x0400 */ #if(WINVER >= 0x0400) #define WS_EX_RIGHT 0x00001000L #define WS_EX_LEFT 0x00000000L #define WS_EX_RTLREADING 0x00002000L #define WS_EX_LTRREADING 0x00000000L #define WS_EX_LEFTSCROLLBAR 0x00004000L #define WS_EX_RIGHTSCROLLBAR 0x00000000L #define WS_EX_CONTROLPARENT 0x00010000L #define WS_EX_STATICEDGE 0x00020000L #define WS_EX_APPWINDOW 0x00040000L #define WS_EX_OVERLAPPEDWINDOW (WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE) #define WS_EX_PALETTEWINDOW (WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST) #endif /* WINVER >= 0x0400 */ #if(_WIN32_WINNT >= 0x0500) #define WS_EX_LAYERED 0x00080000 #endif /* _WIN32_WINNT >= 0x0500 */ #if(WINVER >= 0x0500) #define WS_EX_NOINHERITLAYOUT 0x00100000L // Disable inheritence of mirroring by children #endif /* WINVER >= 0x0500 */ #if(WINVER >= 0x0602) #define WS_EX_NOREDIRECTIONBITMAP 0x00200000L #endif /* WINVER >= 0x0602 */ #if(WINVER >= 0x0500) #define WS_EX_LAYOUTRTL 0x00400000L // Right to left mirroring #endif /* WINVER >= 0x0500 */ #if(_WIN32_WINNT >= 0x0501) #define WS_EX_COMPOSITED 0x02000000L #endif /* _WIN32_WINNT >= 0x0501 */ #if(_WIN32_WINNT >= 0x0500) #define WS_EX_NOACTIVATE 0x08000000L #endif /* _WIN32_WINNT >= 0x0500 */ /* * Class styles */ #define CS_VREDRAW 0x0001 #define CS_HREDRAW 0x0002 #define CS_DBLCLKS 0x0008 #define CS_OWNDC 0x0020 #define CS_CLASSDC 0x0040 #define CS_PARENTDC 0x0080 #define CS_NOCLOSE 0x0200 #define CS_SAVEBITS 0x0800 #define CS_BYTEALIGNCLIENT 0x1000 #define CS_BYTEALIGNWINDOW 0x2000 #define CS_GLOBALCLASS 0x4000 #define CS_IME 0x00010000 #if(_WIN32_WINNT >= 0x0501) #define CS_DROPSHADOW 0x00020000 #endif /* _WIN32_WINNT >= 0x0501 */ #define CW_USEDEFAULT ((int)0x80000000) #define SW_FORCEMINIMIZE 11 #define SW_HIDE 0 #define SW_MAXIMIZE 3 #define SW_MINIMIZE 6 #define SW_RESTORE 9 #define SW_SHOW 5 #define SW_SHOWDEFAULT 10 #define SW_SHOWMAXIMIZED 3 #define SW_SHOWMINIMIZED 2 #define SW_SHOWMINNOACTIVE 7 #define SW_SHOWNA 8 #define SW_SHOWNOACTIVATE 4 #define SW_SHOWNORMAL 1 /* * PeekMessage() Options */ #define PM_NOREMOVE 0x0000 #define PM_REMOVE 0x0001 #define PM_NOYIELD 0x0002 /* * WM_KEYUP/DOWN/CHAR HIWORD(lParam) flags */ #define KF_EXTENDED 0x0100 #define KF_DLGMODE 0x0800 #define KF_MENUMODE 0x1000 #define KF_ALTDOWN 0x2000 #define KF_REPEAT 0x4000 #define KF_UP 0x8000 #ifndef NOVIRTUALKEYCODES /* * Virtual Keys, Standard Set */ #define VK_LBUTTON 0x01 #define VK_RBUTTON 0x02 #define VK_CANCEL 0x03 #define VK_MBUTTON 0x04 /* NOT contiguous with L & RBUTTON */ #if(_WIN32_WINNT >= 0x0500) #define VK_XBUTTON1 0x05 /* NOT contiguous with L & RBUTTON */ #define VK_XBUTTON2 0x06 /* NOT contiguous with L & RBUTTON */ #endif /* _WIN32_WINNT >= 0x0500 */ /* * 0x07 : reserved */ #define VK_BACK 0x08 #define VK_TAB 0x09 /* * 0x0A - 0x0B : reserved */ #define VK_CLEAR 0x0C #define VK_RETURN 0x0D /* * 0x0E - 0x0F : unassigned */ #define VK_SHIFT 0x10 #define VK_CONTROL 0x11 #define VK_MENU 0x12 #define VK_PAUSE 0x13 #define VK_CAPITAL 0x14 #define VK_KANA 0x15 #define VK_HANGEUL 0x15 /* old name - should be here for compatibility */ #define VK_HANGUL 0x15 /* * 0x16 : unassigned */ #define VK_JUNJA 0x17 #define VK_FINAL 0x18 #define VK_HANJA 0x19 #define VK_KANJI 0x19 /* * 0x1A : unassigned */ #define VK_ESCAPE 0x1B #define VK_CONVERT 0x1C #define VK_NONCONVERT 0x1D #define VK_ACCEPT 0x1E #define VK_MODECHANGE 0x1F #define VK_SPACE 0x20 #define VK_PRIOR 0x21 #define VK_NEXT 0x22 #define VK_END 0x23 #define VK_HOME 0x24 #define VK_LEFT 0x25 #define VK_UP 0x26 #define VK_RIGHT 0x27 #define VK_DOWN 0x28 #define VK_SELECT 0x29 #define VK_PRINT 0x2A #define VK_EXECUTE 0x2B #define VK_SNAPSHOT 0x2C #define VK_INSERT 0x2D #define VK_DELETE 0x2E #define VK_HELP 0x2F /* * VK_0 - VK_9 are the same as ASCII '0' - '9' (0x30 - 0x39) * 0x3A - 0x40 : unassigned * VK_A - VK_Z are the same as ASCII 'A' - 'Z' (0x41 - 0x5A) */ #define VK_LWIN 0x5B #define VK_RWIN 0x5C #define VK_APPS 0x5D /* * 0x5E : reserved */ #define VK_SLEEP 0x5F #define VK_NUMPAD0 0x60 #define VK_NUMPAD1 0x61 #define VK_NUMPAD2 0x62 #define VK_NUMPAD3 0x63 #define VK_NUMPAD4 0x64 #define VK_NUMPAD5 0x65 #define VK_NUMPAD6 0x66 #define VK_NUMPAD7 0x67 #define VK_NUMPAD8 0x68 #define VK_NUMPAD9 0x69 #define VK_MULTIPLY 0x6A #define VK_ADD 0x6B #define VK_SEPARATOR 0x6C #define VK_SUBTRACT 0x6D #define VK_DECIMAL 0x6E #define VK_DIVIDE 0x6F #define VK_F1 0x70 #define VK_F2 0x71 #define VK_F3 0x72 #define VK_F4 0x73 #define VK_F5 0x74 #define VK_F6 0x75 #define VK_F7 0x76 #define VK_F8 0x77 #define VK_F9 0x78 #define VK_F10 0x79 #define VK_F11 0x7A #define VK_F12 0x7B #define VK_F13 0x7C #define VK_F14 0x7D #define VK_F15 0x7E #define VK_F16 0x7F #define VK_F17 0x80 #define VK_F18 0x81 #define VK_F19 0x82 #define VK_F20 0x83 #define VK_F21 0x84 #define VK_F22 0x85 #define VK_F23 0x86 #define VK_F24 0x87 #if(_WIN32_WINNT >= 0x0604) /* * 0x88 - 0x8F : UI navigation */ #define VK_NAVIGATION_VIEW 0x88 // reserved #define VK_NAVIGATION_MENU 0x89 // reserved #define VK_NAVIGATION_UP 0x8A // reserved #define VK_NAVIGATION_DOWN 0x8B // reserved #define VK_NAVIGATION_LEFT 0x8C // reserved #define VK_NAVIGATION_RIGHT 0x8D // reserved #define VK_NAVIGATION_ACCEPT 0x8E // reserved #define VK_NAVIGATION_CANCEL 0x8F // reserved #endif /* _WIN32_WINNT >= 0x0604 */ #define VK_NUMLOCK 0x90 #define VK_SCROLL 0x91 /* * NEC PC-9800 kbd definitions */ #define VK_OEM_NEC_EQUAL 0x92 // '=' key on numpad /* * Fujitsu/OASYS kbd definitions */ #define VK_OEM_FJ_JISHO 0x92 // 'Dictionary' key #define VK_OEM_FJ_MASSHOU 0x93 // 'Unregister word' key #define VK_OEM_FJ_TOUROKU 0x94 // 'Register word' key #define VK_OEM_FJ_LOYA 0x95 // 'Left OYAYUBI' key #define VK_OEM_FJ_ROYA 0x96 // '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. */ #define VK_LSHIFT 0xA0 #define VK_RSHIFT 0xA1 #define VK_LCONTROL 0xA2 #define VK_RCONTROL 0xA3 #define VK_LMENU 0xA4 #define VK_RMENU 0xA5 #if(_WIN32_WINNT >= 0x0500) #define VK_BROWSER_BACK 0xA6 #define VK_BROWSER_FORWARD 0xA7 #define VK_BROWSER_REFRESH 0xA8 #define VK_BROWSER_STOP 0xA9 #define VK_BROWSER_SEARCH 0xAA #define VK_BROWSER_FAVORITES 0xAB #define VK_BROWSER_HOME 0xAC #define VK_VOLUME_MUTE 0xAD #define VK_VOLUME_DOWN 0xAE #define VK_VOLUME_UP 0xAF #define VK_MEDIA_NEXT_TRACK 0xB0 #define VK_MEDIA_PREV_TRACK 0xB1 #define VK_MEDIA_STOP 0xB2 #define VK_MEDIA_PLAY_PAUSE 0xB3 #define VK_LAUNCH_MAIL 0xB4 #define VK_LAUNCH_MEDIA_SELECT 0xB5 #define VK_LAUNCH_APP1 0xB6 #define VK_LAUNCH_APP2 0xB7 #endif /* _WIN32_WINNT >= 0x0500 */ /* * 0xB8 - 0xB9 : reserved */ #define VK_OEM_1 0xBA // ';:' for US #define VK_OEM_PLUS 0xBB // '+' any country #define VK_OEM_COMMA 0xBC // ',' any country #define VK_OEM_MINUS 0xBD // '-' any country #define VK_OEM_PERIOD 0xBE // '.' any country #define VK_OEM_2 0xBF // '/?' for US #define VK_OEM_3 0xC0 // '`~' for US /* * 0xC1 - 0xC2 : reserved */ #if(_WIN32_WINNT >= 0x0604) /* * 0xC3 - 0xDA : Gamepad input */ #define VK_GAMEPAD_A 0xC3 // reserved #define VK_GAMEPAD_B 0xC4 // reserved #define VK_GAMEPAD_X 0xC5 // reserved #define VK_GAMEPAD_Y 0xC6 // reserved #define VK_GAMEPAD_RIGHT_SHOULDER 0xC7 // reserved #define VK_GAMEPAD_LEFT_SHOULDER 0xC8 // reserved #define VK_GAMEPAD_LEFT_TRIGGER 0xC9 // reserved #define VK_GAMEPAD_RIGHT_TRIGGER 0xCA // reserved #define VK_GAMEPAD_DPAD_UP 0xCB // reserved #define VK_GAMEPAD_DPAD_DOWN 0xCC // reserved #define VK_GAMEPAD_DPAD_LEFT 0xCD // reserved #define VK_GAMEPAD_DPAD_RIGHT 0xCE // reserved #define VK_GAMEPAD_MENU 0xCF // reserved #define VK_GAMEPAD_VIEW 0xD0 // reserved #define VK_GAMEPAD_LEFT_THUMBSTICK_BUTTON 0xD1 // reserved #define VK_GAMEPAD_RIGHT_THUMBSTICK_BUTTON 0xD2 // reserved #define VK_GAMEPAD_LEFT_THUMBSTICK_UP 0xD3 // reserved #define VK_GAMEPAD_LEFT_THUMBSTICK_DOWN 0xD4 // reserved #define VK_GAMEPAD_LEFT_THUMBSTICK_RIGHT 0xD5 // reserved #define VK_GAMEPAD_LEFT_THUMBSTICK_LEFT 0xD6 // reserved #define VK_GAMEPAD_RIGHT_THUMBSTICK_UP 0xD7 // reserved #define VK_GAMEPAD_RIGHT_THUMBSTICK_DOWN 0xD8 // reserved #define VK_GAMEPAD_RIGHT_THUMBSTICK_RIGHT 0xD9 // reserved #define VK_GAMEPAD_RIGHT_THUMBSTICK_LEFT 0xDA // reserved #endif /* _WIN32_WINNT >= 0x0604 */ #define VK_OEM_4 0xDB // '[{' for US #define VK_OEM_5 0xDC // '\|' for US #define VK_OEM_6 0xDD // ']}' for US #define VK_OEM_7 0xDE // ''"' for US #define VK_OEM_8 0xDF /* * 0xE0 : reserved */ /* * Various extended or enhanced keyboards */ #define VK_OEM_AX 0xE1 // 'AX' key on Japanese AX kbd #define VK_OEM_102 0xE2 // "<>" or "\|" on RT 102-key kbd. #define VK_ICO_HELP 0xE3 // Help key on ICO #define VK_ICO_00 0xE4 // 00 key on ICO #if(WINVER >= 0x0400) #define VK_PROCESSKEY 0xE5 #endif /* WINVER >= 0x0400 */ #define VK_ICO_CLEAR 0xE6 #if(_WIN32_WINNT >= 0x0500) #define VK_PACKET 0xE7 #endif /* _WIN32_WINNT >= 0x0500 */ /* * 0xE8 : unassigned */ /* * Nokia/Ericsson definitions */ #define VK_OEM_RESET 0xE9 #define VK_OEM_JUMP 0xEA #define VK_OEM_PA1 0xEB #define VK_OEM_PA2 0xEC #define VK_OEM_PA3 0xED #define VK_OEM_WSCTRL 0xEE #define VK_OEM_CUSEL 0xEF #define VK_OEM_ATTN 0xF0 #define VK_OEM_FINISH 0xF1 #define VK_OEM_COPY 0xF2 #define VK_OEM_AUTO 0xF3 #define VK_OEM_ENLW 0xF4 #define VK_OEM_BACKTAB 0xF5 #define VK_ATTN 0xF6 #define VK_CRSEL 0xF7 #define VK_EXSEL 0xF8 #define VK_EREOF 0xF9 #define VK_PLAY 0xFA #define VK_ZOOM 0xFB #define VK_NONAME 0xFC #define VK_PA1 0xFD #define VK_OEM_CLEAR 0xFE /* * 0xFF : reserved */ #endif /* !NOVIRTUALKEYCODES */ // MessageBox types #define MB_ABORTRETRYIGNORE 0x00000002L #define MB_CANCELTRYCONTINUE 0x00000006L #define MB_OK 0x00000000L #define MB_OKCANCEL 0x00000001L #define MB_YESNO 0x00000004L #define MB_YESNOCANCEL 0x00000003L // MessageBox result codes #define IDABORT 3 #define IDCANCEL 2 #define IDCONTINUE 11 #define IDIGNORE 5 #define IDNO 7 #define IDOK 1 #define IDRETRY 4 #define IDTRYAGAIN 10 #define IDYES 6 /* pixel types */ #define PFD_TYPE_RGBA 0 #define PFD_TYPE_COLORINDEX 1 /* layer types */ #define PFD_MAIN_PLANE 0 #define PFD_OVERLAY_PLANE 1 #define PFD_UNDERLAY_PLANE (-1) /* PIXELFORMATDESCRIPTOR flags */ #define PFD_DOUBLEBUFFER 0x00000001 #define PFD_STEREO 0x00000002 #define PFD_DRAW_TO_WINDOW 0x00000004 #define PFD_DRAW_TO_BITMAP 0x00000008 #define PFD_SUPPORT_GDI 0x00000010 #define PFD_SUPPORT_OPENGL 0x00000020 #define PFD_GENERIC_FORMAT 0x00000040 #define PFD_NEED_PALETTE 0x00000080 #define PFD_NEED_SYSTEM_PALETTE 0x00000100 #define PFD_SWAP_EXCHANGE 0x00000200 #define PFD_SWAP_COPY 0x00000400 #define PFD_SWAP_LAYER_BUFFERS 0x00000800 #define PFD_GENERIC_ACCELERATED 0x00001000 #define PFD_SUPPORT_DIRECTDRAW 0x00002000 #define PFD_DIRECT3D_ACCELERATED 0x00004000 #define PFD_SUPPORT_COMPOSITION 0x00008000 /* PIXELFORMATDESCRIPTOR flags for use in ChoosePixelFormat only */ #define PFD_DEPTH_DONTCARE 0x20000000 #define PFD_DOUBLEBUFFER_DONTCARE 0x40000000 #define PFD_STEREO_DONTCARE 0x80000000 /* * Standard Icon IDs */ #define IDC_ARROW MAKEINTRESOURCE(32512) #ifdef RC_INVOKED #define IDI_APPLICATION 32512 #define IDI_HAND 32513 #define IDI_QUESTION 32514 #define IDI_EXCLAMATION 32515 #define IDI_ASTERISK 32516 #if(WINVER >= 0x0400) #define IDI_WINLOGO 32517 #endif /* WINVER >= 0x0400 */ #if(WINVER >= 0x0600) #define IDI_SHIELD 32518 #endif /* WINVER >= 0x0600 */ #else #define IDI_APPLICATION MAKEINTRESOURCE(32512) #define IDI_HAND MAKEINTRESOURCE(32513) #define IDI_QUESTION MAKEINTRESOURCE(32514) #define IDI_EXCLAMATION MAKEINTRESOURCE(32515) #define IDI_ASTERISK MAKEINTRESOURCE(32516) #if(WINVER >= 0x0400) #define IDI_WINLOGO MAKEINTRESOURCE(32517) #endif /* WINVER >= 0x0400 */ #if(WINVER >= 0x0600) #define IDI_SHIELD MAKEINTRESOURCE(32518) #endif /* WINVER >= 0x0600 */ #endif /* RC_INVOKED */ #if(WINVER >= 0x0400) #define IDI_WARNING IDI_EXCLAMATION #define IDI_ERROR IDI_HAND #define IDI_INFORMATION IDI_ASTERISK #endif /* WINVER >= 0x0400 */ #define COLOR_WINDOW 5 #define ERROR_INVALID_VERSION_ARB 0x2095 #define WGL_CONTEXT_DEBUG_BIT_ARB 0x0001 #define WGL_CONTEXT_FLAGS_ARB 0x2094 #define WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x0002 #define WGL_CONTEXT_LAYER_PLANE_ARB 0x2093 #define WGL_CONTEXT_MAJOR_VERSION_ARB 0x2091 #define WGL_CONTEXT_MINOR_VERSION_ARB 0x2092 #define WGL_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001 #define WGL_CONTEXT_PROFILE_MASK_ARB 0x9126 #define WGL_NUMBER_PIXEL_FORMATS_ARB 0x2000 #define WGL_DRAW_TO_WINDOW_ARB 0x2001 #define WGL_DRAW_TO_BITMAP_ARB 0x2002 #define WGL_ACCELERATION_ARB 0x2003 #define WGL_NEED_PALETTE_ARB 0x2004 #define WGL_NEED_SYSTEM_PALETTE_ARB 0x2005 #define WGL_SWAP_LAYER_BUFFERS_ARB 0x2006 #define WGL_SWAP_METHOD_ARB 0x2007 #define WGL_NUMBER_OVERLAYS_ARB 0x2008 #define WGL_NUMBER_UNDERLAYS_ARB 0x2009 #define WGL_TRANSPARENT_ARB 0x200A #define WGL_TRANSPARENT_RED_VALUE_ARB 0x2037 #define WGL_TRANSPARENT_GREEN_VALUE_ARB 0x2038 #define WGL_TRANSPARENT_BLUE_VALUE_ARB 0x2039 #define WGL_TRANSPARENT_ALPHA_VALUE_ARB 0x203A #define WGL_TRANSPARENT_INDEX_VALUE_ARB 0x203B #define WGL_SHARE_DEPTH_ARB 0x200C #define WGL_SHARE_STENCIL_ARB 0x200D #define WGL_SHARE_ACCUM_ARB 0x200E #define WGL_SUPPORT_GDI_ARB 0x200F #define WGL_SUPPORT_OPENGL_ARB 0x2010 #define WGL_DOUBLE_BUFFER_ARB 0x2011 #define WGL_STEREO_ARB 0x2012 #define WGL_PIXEL_TYPE_ARB 0x2013 #define WGL_COLOR_BITS_ARB 0x2014 #define WGL_RED_BITS_ARB 0x2015 #define WGL_RED_SHIFT_ARB 0x2016 #define WGL_GREEN_BITS_ARB 0x2017 #define WGL_GREEN_SHIFT_ARB 0x2018 #define WGL_BLUE_BITS_ARB 0x2019 #define WGL_BLUE_SHIFT_ARB 0x201A #define WGL_ALPHA_BITS_ARB 0x201B #define WGL_ALPHA_SHIFT_ARB 0x201C #define WGL_ACCUM_BITS_ARB 0x201D #define WGL_ACCUM_RED_BITS_ARB 0x201E #define WGL_ACCUM_GREEN_BITS_ARB 0x201F #define WGL_ACCUM_BLUE_BITS_ARB 0x2020 #define WGL_ACCUM_ALPHA_BITS_ARB 0x2021 #define WGL_DEPTH_BITS_ARB 0x2022 #define WGL_STENCIL_BITS_ARB 0x2023 #define WGL_AUX_BUFFERS_ARB 0x2024 #define WGL_NO_ACCELERATION_ARB 0x2025 #define WGL_GENERIC_ACCELERATION_ARB 0x2026 #define WGL_FULL_ACCELERATION_ARB 0x2027 #define WGL_SWAP_EXCHANGE_ARB 0x2028 #define WGL_SWAP_COPY_ARB 0x2029 #define WGL_SWAP_UNDEFINED_ARB 0x202A #define WGL_TYPE_RGBA_ARB 0x202B #define WGL_TYPE_COLORINDEX_ARB 0x202C #define _O_TEXT 0x4000 /* file mode is text (translated) */ #define _O_BINARY 0x8000 /* file mode is binary (untranslated) */ enum MMRESULT : unsigned int { MMSYSERR_NOERROR = 0, MMSYSERR_ERROR = 1, MMSYSERR_BADDEVICEID = 2, MMSYSERR_NOTENABLED = 3, MMSYSERR_ALLOCATED = 4, MMSYSERR_INVALHANDLE = 5, MMSYSERR_NODRIVER = 6, MMSYSERR_NOMEM = 7, MMSYSERR_NOTSUPPORTED = 8, MMSYSERR_BADERRNUM = 9, MMSYSERR_INVALFLAG = 10, MMSYSERR_INVALPARAM = 11, MMSYSERR_HANDLEBUSY = 12, MMSYSERR_INVALIDALIAS = 13, MMSYSERR_BADDB = 14, MMSYSERR_KEYNOTFOUND = 15, MMSYSERR_READERROR = 16, MMSYSERR_WRITEERROR = 17, MMSYSERR_DELETEERROR = 18, MMSYSERR_VALNOTFOUND = 19, MMSYSERR_NODRIVERCB = 20, WAVERR_BADFORMAT = 32, WAVERR_STILLPLAYING = 33, WAVERR_UNPREPARED = 34 }; typedef union _LARGE_INTEGER { struct { DWORD LowPart; LONG HighPart; } DUMMYSTRUCTNAME; struct { DWORD LowPart; LONG HighPart; } u; LONGLONG QuadPart; } LARGE_INTEGER, *PLARGE_INTEGER; typedef struct _OVERLAPPED { ULONG_PTR Internal; ULONG_PTR InternalHigh; union { struct { DWORD Offset; DWORD OffsetHigh; }; void* Pointer; }; HANDLE hEvent; } OVERLAPPED, *LPOVERLAPPED; typedef union _ULARGE_INTEGER { struct { DWORD LowPart; DWORD HighPart; } DUMMYSTRUCTNAME; struct { DWORD LowPart; DWORD HighPart; } u; ULONGLONG QuadPart; } ULARGE_INTEGER; typedef struct _FILETIME { DWORD dwLowDateTime; DWORD dwHighDateTime; } FILETIME; typedef struct _WIN32_FILE_ATTRIBUTE_DATA { DWORD dwFileAttributes; FILETIME ftCreationTime; FILETIME ftLastAccessTime; FILETIME ftLastWriteTime; DWORD nFileSizeHigh; DWORD nFileSizeLow; } WIN32_FILE_ATTRIBUTE_DATA; typedef struct _SECURITY_ATTRIBUTES { DWORD nLength; LPVOID lpSecurityDescriptor; BOOL bInheritHandle; } SECURITY_ATTRIBUTES, *PSECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES; typedef enum _GET_FILEEX_INFO_LEVELS { GetFileExInfoStandard, GetFileExMaxInfoLevel } GET_FILEEX_INFO_LEVELS; typedef struct tagWNDCLASSA { UINT style; WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; HINSTANCE hInstance; HICON hIcon; HCURSOR hCursor; HBRUSH hbrBackground; LPCSTR lpszMenuName; LPCSTR lpszClassName; } WNDCLASSA, *PWNDCLASSA, *NPWNDCLASSA, *LPWNDCLASSA; typedef struct tagWNDCLASSEXA { UINT cbSize; UINT style; WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; HINSTANCE hInstance; HICON hIcon; HCURSOR hCursor; HBRUSH hbrBackground; LPCSTR lpszMenuName; LPCSTR lpszClassName; HICON hIconSm; } WNDCLASSEXA, *PWNDCLASSEXA, *NPWNDCLASSEXA, *LPWNDCLASSEXA; typedef struct tagPOINT { LONG x; LONG y; } POINT, * PPOINT, * NPPOINT, * LPPOINT; /* * Message structure */ typedef struct tagMSG { HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt; } MSG, * PMSG, * NPMSG, * LPMSG; typedef struct _MEMORY_BASIC_INFORMATION { PVOID BaseAddress; PVOID AllocationBase; DWORD AllocationProtect; SIZE_T RegionSize; DWORD State; DWORD Protect; DWORD Type; } MEMORY_BASIC_INFORMATION, *PMEMORY_BASIC_INFORMATION; typedef struct _WIN32_FIND_DATA { DWORD dwFileAttributes; FILETIME ftCreationTime; FILETIME ftLastAccessTime; FILETIME ftLastWriteTime; DWORD nFileSizeHigh; DWORD nFileSizeLow; DWORD dwOID; TCHAR cFileName[MAX_PATH]; } WIN32_FIND_DATA; typedef struct _WIN32_FIND_DATAA { DWORD dwFileAttributes; FILETIME ftCreationTime; FILETIME ftLastAccessTime; FILETIME ftLastWriteTime; DWORD nFileSizeHigh; DWORD nFileSizeLow; DWORD dwReserved0; DWORD dwReserved1; CHAR cFileName[MAX_PATH]; CHAR cAlternateFileName[14]; DWORD dwFileType; DWORD dwCreatorType; WORD wFinderFlags; } WIN32_FIND_DATAA, *PWIN32_FIND_DATAA, *LPWIN32_FIND_DATAA; typedef struct tagPIXELFORMATDESCRIPTOR { WORD nSize; WORD nVersion; DWORD dwFlags; BYTE iPixelType; BYTE cColorBits; BYTE cRedBits; BYTE cRedShift; BYTE cGreenBits; BYTE cGreenShift; BYTE cBlueBits; BYTE cBlueShift; BYTE cAlphaBits; BYTE cAlphaShift; BYTE cAccumBits; BYTE cAccumRedBits; BYTE cAccumGreenBits; BYTE cAccumBlueBits; BYTE cAccumAlphaBits; BYTE cDepthBits; BYTE cStencilBits; BYTE cAuxBuffers; BYTE iLayerType; BYTE bReserved; DWORD dwLayerMask; DWORD dwVisibleMask; DWORD dwDamageMask; } PIXELFORMATDESCRIPTOR, *PPIXELFORMATDESCRIPTOR, *LPPIXELFORMATDESCRIPTOR; WINDOWS_API_IMPORT BOOL WINAPI WINAPI CloseHandle(HANDLE object); WINDOWS_API_IMPORT HANDLE WINAPI GetCurrentProcess(); WINDOWS_API_IMPORT DWORD WINAPI GetModuleFileNameA(HMODULE hModule, LPSTR lpFilename, DWORD nSize); WINDOWS_API_IMPORT HMODULE WINAPI GetModuleHandleA(LPCSTR lpModuleName); WINDOWS_API_IMPORT BOOL WINAPI SetPriorityClass(HANDLE hProcess, DWORD dwPriorityClass); WINDOWS_API_IMPORT BOOL WINAPI PathIsRelativeA(LPCSTR pszPath); WINDOWS_API_IMPORT HMODULE WINAPI LoadLibraryA(LPCSTR lpLibFileName); WINDOWS_API_IMPORT HMODULE WINAPI LoadLibraryExA(LPCSTR lpLibFileName, HANDLE hFile, DWORD dwFlags); WINDOWS_API_IMPORT BOOL WINAPI FreeLibrary(HMODULE hLibModule); WINDOWS_API_IMPORT FARPROC WINAPI GetProcAddress(HMODULE hModule, LPCSTR lpProcName); WINDOWS_API_IMPORT BOOL WINAPI AllocConsole(void); WINDOWS_API_IMPORT void WINAPI ExitProcess(UINT uExitCode); WINDOWS_API_IMPORT HANDLE WINAPI CreateFileA(LPCSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile); WINDOWS_API_IMPORT BOOL WINAPI ReadFile(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped); WINDOWS_API_IMPORT BOOL WINAPI WriteFile(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped); WINDOWS_API_IMPORT BOOL WINAPI FlushFileBuffers(HANDLE hFile); WINDOWS_API_IMPORT BOOL WINAPI GetFileSizeEx(HANDLE hFile, PLARGE_INTEGER lpFileSize); WINDOWS_API_IMPORT BOOL WINAPI SetStdHandle( DWORD nStdHandle, HANDLE hHandle); WINDOWS_API_IMPORT void WINAPI OutputDebugStringA(LPCSTR lpOutputString); WINDOWS_API_IMPORT LPVOID WINAPI VirtualAlloc(LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect); WINDOWS_API_IMPORT BOOL WINAPI VirtualFree(LPVOID lpAddress, SIZE_T dwSize, DWORD dwFreeType); #ifndef __INTRIN_H WINDOWS_API_IMPORT LONG WINAPI _InterlockedCompareExchange(LONG volatile *Destination, LONG ExChange, LONG Comperand); WINDOWS_API_IMPORT LONG64 WINAPI _InterlockedExchange64(LONG64 volatile *Target, LONG64 Value); WINDOWS_API_IMPORT LONG64 WINAPI _InterlockedExchangeAdd64(LONG64 volatile *Addend, LONG64 Value); #endif WINDOWS_API_IMPORT MMRESULT WINAPI timeBeginPeriod(UINT uPeriod); WINDOWS_API_IMPORT ATOM WINAPI RegisterClassA(const WNDCLASSA *lpWndClass); WINDOWS_API_IMPORT ATOM WINAPI RegisterClassExA(const WNDCLASSEXA *Arg1); WINDOWS_API_IMPORT LRESULT WINAPI DefWindowProcA(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); WINDOWS_API_IMPORT HWND WINAPI CreateWindowExA(DWORD dwExStyle, LPCSTR lpClassName, LPCSTR lpWindowName, DWORD dwStyle, int X, int Y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam); WINDOWS_API_IMPORT BOOL WINAPI ShowWindow( HWND hWnd, int nCmdShow); WINDOWS_API_IMPORT BOOL WINAPI DestroyWindow(HWND hWnd); WINDOWS_API_IMPORT BOOL WINAPI UnregisterClassA(LPCSTR lpClassName, HINSTANCE hInstance); WINDOWS_API_IMPORT BOOL WINAPI PeekMessageA(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax, UINT wRemoveMsg); WINDOWS_API_IMPORT BOOL WINAPI TranslateMessage(const MSG* lpMsg); WINDOWS_API_IMPORT LRESULT WINAPI DispatchMessageA(const MSG* lpMsg); WINDOWS_API_IMPORT BOOL WINAPI VirtualProtect(LPVOID lpAddress, SIZE_T dwSize, DWORD flNewProtect, PDWORD lpflOldProtect); WINDOWS_API_IMPORT SIZE_T WINAPI VirtualQuery(LPCVOID lpAddress, PMEMORY_BASIC_INFORMATION lpBuffer, SIZE_T dwLength); WINDOWS_API_IMPORT void WINAPI CopyMemory(PVOID Destination, const VOID *Source, SIZE_T Length); WINDOWS_API_IMPORT DWORD WINAPI GetLastError(); WINDOWS_API_IMPORT BOOL WINAPI QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency); WINDOWS_API_IMPORT BOOL WINAPI QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount); WINDOWS_API_IMPORT HANDLE WINAPI FindFirstFileA(LPCSTR lpFileName, LPWIN32_FIND_DATAA lpFindFileData); WINDOWS_API_IMPORT BOOL WINAPI FindNextFileA(HANDLE hFindFile, LPWIN32_FIND_DATAA lpFindFileData); WINDOWS_API_IMPORT BOOL WINAPI FindClose(HANDLE hFindFile); WINDOWS_API_IMPORT int WINAPI MessageBoxA(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType); WINDOWS_API_IMPORT void WINAPI Sleep(DWORD dwMilliseconds); WINDOWS_API_IMPORT HDC WINAPI GetDC(HWND hWnd); WINDOWS_API_IMPORT int WINAPI ReleaseDC(HWND hWnd, HDC hDC); WINDOWS_API_IMPORT int WINAPI ChoosePixelFormat(HDC hdc, const PIXELFORMATDESCRIPTOR *ppfd); WINDOWS_API_IMPORT int WINAPI DescribePixelFormat(HDC hdc, int iPixelFormat, UINT nBytes, LPPIXELFORMATDESCRIPTOR ppfd); WINDOWS_API_IMPORT BOOL WINAPI SetPixelFormat(HDC hdc, int format, const PIXELFORMATDESCRIPTOR *ppfd); WINDOWS_API_IMPORT HANDLE WINAPI GetStdHandle(DWORD nStdHandle); WINDOWS_API_IMPORT HICON WINAPI LoadIconA(HINSTANCE hInstance, LPCSTR lpIconName); WINDOWS_API_IMPORT HCURSOR WINAPI LoadCursorA(HINSTANCE hInstance, LPCSTR lpCursorName); WINDOWS_API_IMPORT HGLRC WINAPI wglCreateContext(HDC Arg1); WINDOWS_API_IMPORT BOOL WINAPI wglMakeCurrent(HDC, HGLRC); WINDOWS_API_IMPORT BOOL WINAPI wglDeleteContext(HGLRC Arg1); WINDOWS_API_IMPORT PROC WINAPI wglGetProcAddress(LPCSTR Arg1); WINDOWS_API_IMPORT BOOL WINAPI WriteConsole(HANDLE hConsoleOutput, const VOID *lpBuffer, DWORD nNumberOfCharsToWrite, LPDWORD lpNumberOfCharsWritten, LPVOID lpReserved); WINDOWS_API_IMPORT BOOL WINAPI GetFullPathNameA(LPCSTR lpFileName, DWORD nBufferLength, LPSTR lpBuffer, LPSTR *lpFilePart); #endif