Windows常量定义在winuser.h中可以找到
目录为C:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/Include
/**************************************************************************** * * * winuser.h -- USER procedure declarations, constant definitions and macros * * * * Copyright (c) Microsoft Corporation. All rights reserved. * * * ****************************************************************************/ #ifndef _WINUSER_ #define _WINUSER_ // // Define API decoration for direct importing of DLL references. // #if !defined(_USER32_) #define WINUSERAPI DECLSPEC_IMPORT #else #define WINUSERAPI #endif #ifdef _MAC #include #endif #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #ifndef WINVER #define WINVER 0x0500 /* version 5.0 */ #endif /* !WINVER */ #include #ifndef NOUSER typedef HANDLE HDWP; typedef VOID MENUTEMPLATEA; typedef VOID MENUTEMPLATEW; #ifdef UNICODE typedef MENUTEMPLATEW MENUTEMPLATE; #else typedef MENUTEMPLATEA MENUTEMPLATE; #endif // UNICODE typedef PVOID LPMENUTEMPLATEA; typedef PVOID LPMENUTEMPLATEW; #ifdef UNICODE typedef LPMENUTEMPLATEW LPMENUTEMPLATE; #else typedef LPMENUTEMPLATEA LPMENUTEMPLATE; #endif // UNICODE typedef LRESULT (CALLBACK* WNDPROC)(HWND, UINT, WPARAM, LPARAM); #ifdef STRICT typedef INT_PTR (CALLBACK* DLGPROC)(HWND, UINT, WPARAM, LPARAM); typedef VOID (CALLBACK* TIMERPROC)(HWND, UINT, UINT_PTR, DWORD); typedef BOOL (CALLBACK* GRAYSTRINGPROC)(HDC, LPARAM, int); typedef BOOL (CALLBACK* WNDENUMPROC)(HWND, LPARAM); typedef LRESULT (CALLBACK* HOOKPROC)(int code, WPARAM wParam, LPARAM lParam); typedef VOID (CALLBACK* SENDASYNCPROC)(HWND, UINT, ULONG_PTR, LRESULT); typedef BOOL (CALLBACK* PROPENUMPROCA)(HWND, LPCSTR, HANDLE); typedef BOOL (CALLBACK* PROPENUMPROCW)(HWND, LPCWSTR, HANDLE); typedef BOOL (CALLBACK* PROPENUMPROCEXA)(HWND, LPSTR, HANDLE, ULONG_PTR); typedef BOOL (CALLBACK* PROPENUMPROCEXW)(HWND, LPWSTR, HANDLE, ULONG_PTR); typedef int (CALLBACK* EDITWORDBREAKPROCA)(LPSTR lpch, int ichCurrent, int cch, int code); typedef int (CALLBACK* EDITWORDBREAKPROCW)(LPWSTR lpch, int ichCurrent, int cch, int code); #if(WINVER >= 0x0400) typedef BOOL (CALLBACK* DRAWSTATEPROC)(HDC hdc, LPARAM lData, WPARAM wData, int cx, int cy); #endif /* WINVER >= 0x0400 */ #else /* !STRICT */ typedef FARPROC DLGPROC; typedef FARPROC TIMERPROC; typedef FARPROC GRAYSTRINGPROC; typedef FARPROC WNDENUMPROC; typedef FARPROC HOOKPROC; typedef FARPROC SENDASYNCPROC; typedef FARPROC EDITWORDBREAKPROCA; typedef FARPROC EDITWORDBREAKPROCW; typedef FARPROC PROPENUMPROCA; typedef FARPROC PROPENUMPROCW; typedef FARPROC PROPENUMPROCEXA; typedef FARPROC PROPENUMPROCEXW; #if(WINVER >= 0x0400) typedef FARPROC DRAWSTATEPROC; #endif /* WINVER >= 0x0400 */ #endif /* !STRICT */ #ifdef UNICODE typedef PROPENUMPROCW PROPENUMPROC; typedef PROPENUMPROCEXW PROPENUMPROCEX; typedef EDITWORDBREAKPROCW EDITWORDBREAKPROC; #else /* !UNICODE */ typedef PROPENUMPROCA PROPENUMPROC; typedef PROPENUMPROCEXA PROPENUMPROCEX; typedef EDITWORDBREAKPROCA EDITWORDBREAKPROC; #endif /* UNICODE */ #ifdef STRICT typedef BOOL (CALLBACK* NAMEENUMPROCA)(LPSTR, LPARAM); typedef BOOL (CALLBACK* NAMEENUMPROCW)(LPWSTR, LPARAM); typedef NAMEENUMPROCA WINSTAENUMPROCA; typedef NAMEENUMPROCA DESKTOPENUMPROCA; typedef NAMEENUMPROCW WINSTAENUMPROCW; typedef NAMEENUMPROCW DESKTOPENUMPROCW; #else /* !STRICT */ typedef FARPROC NAMEENUMPROCA; typedef FARPROC NAMEENUMPROCW; typedef FARPROC WINSTAENUMPROCA; typedef FARPROC DESKTOPENUMPROCA; typedef FARPROC WINSTAENUMPROCW; typedef FARPROC DESKTOPENUMPROCW; #endif /* !STRICT */ #ifdef UNICODE typedef WINSTAENUMPROCW WINSTAENUMPROC; typedef DESKTOPENUMPROCW DESKTOPENUMPROC; #else /* !UNICODE */ typedef WINSTAENUMPROCA WINSTAENUMPROC; typedef DESKTOPENUMPROCA DESKTOPENUMPROC; #endif /* UNICODE */ #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)))) #ifdef UNICODE #define MAKEINTRESOURCE MAKEINTRESOURCEW #else #define MAKEINTRESOURCE MAKEINTRESOURCEA #endif // !UNICODE #ifndef NORESOURCE /* * Predefined Resource Types */ #define RT_CURSOR MAKEINTRESOURCE(1) #define RT_BITMAP MAKEINTRESOURCE(2) #define RT_ICON MAKEINTRESOURCE(3) #define RT_MENU MAKEINTRESOURCE(4) #define RT_DIALOG MAKEINTRESOURCE(5) #define RT_STRING MAKEINTRESOURCE(6) #define RT_FONTDIR MAKEINTRESOURCE(7) #define RT_FONT MAKEINTRESOURCE(8) #define RT_ACCELERATOR MAKEINTRESOURCE(9) #define RT_RCDATA MAKEINTRESOURCE(10) #define RT_MESSAGETABLE MAKEINTRESOURCE(11) #define DIFFERENCE 11 #define RT_GROUP_CURSOR MAKEINTRESOURCE((ULONG_PTR)RT_CURSOR + DIFFERENCE) #define RT_GROUP_ICON MAKEINTRESOURCE((ULONG_PTR)RT_ICON + DIFFERENCE) #define RT_VERSION MAKEINTRESOURCE(16) #define RT_DLGINCLUDE MAKEINTRESOURCE(17) #if(WINVER >= 0x0400) #define RT_PLUGPLAY MAKEINTRESOURCE(19) #define RT_VXD MAKEINTRESOURCE(20) #define RT_ANICURSOR MAKEINTRESOURCE(21) #define RT_ANIICON MAKEINTRESOURCE(22) #endif /* WINVER >= 0x0400 */ #define RT_HTML MAKEINTRESOURCE(23) #ifdef RC_INVOKED #define RT_MANIFEST 24 #define CREATEPROCESS_MANIFEST_RESOURCE_ID 1 #define ISOLATIONAWARE_MANIFEST_RESOURCE_ID 2 #define ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID 3 #define MINIMUM_RESERVED_MANIFEST_RESOURCE_ID 1 /* inclusive */ #define MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID 16 /* inclusive */ #else /* RC_INVOKED */ #define RT_MANIFEST MAKEINTRESOURCE(24) #define CREATEPROCESS_MANIFEST_RESOURCE_ID MAKEINTRESOURCE( 1) #define ISOLATIONAWARE_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(2) #define ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(3) #define MINIMUM_RESERVED_MANIFEST_RESOURCE_ID MAKEINTRESOURCE( 1 /*inclusive*/) #define MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(16 /*inclusive*/) #endif /* RC_INVOKED */ #endif /* !NORESOURCE */ WINUSERAPI int WINAPI wvsprintfA( __out LPSTR, __in __format_string LPCSTR, __in va_list arglist); WINUSERAPI int WINAPI wvsprintfW( __out LPWSTR, __in __format_string LPCWSTR, __in va_list arglist); #ifdef UNICODE #define wvsprintf wvsprintfW #else #define wvsprintf wvsprintfA #endif // !UNICODE WINUSERAPI int WINAPIV wsprintfA( __out LPSTR, __in __format_string LPCSTR, ...); WINUSERAPI int WINAPIV wsprintfW( __out LPWSTR, __in __format_string LPCWSTR, ...); #ifdef UNICODE #define wsprintf wsprintfW #else #define wsprintf wsprintfA #endif // !UNICODE /* * SPI_SETDESKWALLPAPER defined constants */ #define SETWALLPAPER_DEFAULT ((LPWSTR)-1) #ifndef NOSCROLL /* * Scroll Bar Constants */ #define SB_HORZ 0 #define SB_VERT 1 #define SB_CTL 2 #define SB_BOTH 3 /* * Scroll Bar Commands */ #define SB_LINEUP 0 #define SB_LINELEFT 0 #define SB_LINEDOWN 1 #define SB_LINERIGHT 1 #define SB_PAGEUP 2 #define SB_PAGELEFT 2 #define SB_PAGEDOWN 3 #define SB_PAGERIGHT 3 #define SB_THUMBPOSITION 4 #define SB_THUMBTRACK 5 #define SB_TOP 6 #define SB_LEFT 6 #define SB_BOTTOM 7 #define SB_RIGHT 7 #define SB_ENDSCROLL 8 #endif /* !NOSCROLL */ #ifndef NOSHOWWINDOW /* * ShowWindow() Commands */ #define SW_HIDE 0 #define SW_SHOWNORMAL 1 #define SW_NORMAL 1 #define SW_SHOWMINIMIZED 2 #define SW_SHOWMAXIMIZED 3 #define SW_MAXIMIZE 3 #define SW_SHOWNOACTIVATE 4 #define SW_SHOW 5 #define SW_MINIMIZE 6 #define SW_SHOWMINNOACTIVE 7 #define SW_SHOWNA 8 #define SW_RESTORE 9 #define SW_SHOWDEFAULT 10 #define SW_FORCEMINIMIZE 11 #define SW_MAX 11 /* * Old ShowWindow() Commands */ #define HIDE_WINDOW 0 #define SHOW_OPENWINDOW 1 #define SHOW_ICONWINDOW 2 #define SHOW_FULLSCREEN 3 #define SHOW_OPENNOACTIVATE 4 /* * Identifiers for the WM_SHOWWINDOW message */ #define SW_PARENTCLOSING 1 #define SW_OTHERZOOM 2 #define SW_PARENTOPENING 3 #define SW_OTHERUNZOOM 4 #endif /* !NOSHOWWINDOW */ #if(WINVER >= 0x0500) /* * AnimateWindow() Commands */ #define AW_HOR_POSITIVE 0x00000001 #define AW_HOR_NEGATIVE 0x00000002 #define AW_VER_POSITIVE 0x00000004 #define AW_VER_NEGATIVE 0x00000008 #define AW_CENTER 0x00000010 #define AW_HIDE 0x00010000 #define AW_ACTIVATE 0x00020000 #define AW_SLIDE 0x00040000 #define AW_BLEND 0x00080000 #endif /* WINVER >= 0x0500 */ /* * 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 : unassigned */ #define VK_BACK 0x08 #define VK_TAB 0x09 /* * 0x0A - 0x0B : reserved */ #define VK_CLEAR 0x0C #define VK_RETURN 0x0D #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 #define VK_JUNJA 0x17 #define VK_FINAL 0x18 #define VK_HANJA 0x19 #define VK_KANJI 0x19 #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) * 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 /* * 0x88 - 0x8F : unassigned */ #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 - 0xD7 : reserved */ /* * 0xD8 - 0xDA : unassigned */ #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 */ #ifndef NOWH /* * SetWindowsHook() codes */ #define WH_MIN (-1) #define WH_MSGFILTER (-1) #define WH_JOURNALRECORD 0 #define WH_JOURNALPLAYBACK 1 #define WH_KEYBOARD 2 #define WH_GETMESSAGE 3 #define WH_CALLWNDPROC 4 #define WH_CBT 5 #define WH_SYSMSGFILTER 6 #define WH_MOUSE 7 #if defined(_WIN32_WINDOWS) #define WH_HARDWARE 8 #endif #define WH_DEBUG 9 #define WH_SHELL 10 #define WH_FOREGROUNDIDLE 11 #if(WINVER >= 0x0400) #define WH_CALLWNDPROCRET 12 #endif /* WINVER >= 0x0400 */ #if (_WIN32_WINNT >= 0x0400) #define WH_KEYBOARD_LL 13 #define WH_MOUSE_LL 14 #endif // (_WIN32_WINNT >= 0x0400) #if(WINVER >= 0x0400) #if (_WIN32_WINNT >= 0x0400) #define WH_MAX 14 #else #define WH_MAX 12 #endif // (_WIN32_WINNT >= 0x0400) #else #define WH_MAX 11 #endif #define WH_MINHOOK WH_MIN #define WH_MAXHOOK WH_MAX /* * Hook Codes */ #define HC_ACTION 0 #define HC_GETNEXT 1 #define HC_SKIP 2 #define HC_NOREMOVE 3 #define HC_NOREM HC_NOREMOVE #define HC_SYSMODALON 4 #define HC_SYSMODALOFF 5 /* * CBT Hook Codes */ #define HCBT_MOVESIZE 0 #define HCBT_MINMAX 1 #define HCBT_QS 2 #define HCBT_CREATEWND 3 #define HCBT_DESTROYWND 4 #define HCBT_ACTIVATE 5 #define HCBT_CLICKSKIPPED 6 #define HCBT_KEYSKIPPED 7 #define HCBT_SYSCOMMAND 8 #define HCBT_SETFOCUS 9 /* * HCBT_CREATEWND parameters pointed to by lParam */ typedef struct tagCBT_CREATEWNDA { struct tagCREATESTRUCTA *lpcs; HWND hwndInsertAfter; } CBT_CREATEWNDA, *LPCBT_CREATEWNDA; /* * HCBT_CREATEWND parameters pointed to by lParam */ typedef struct tagCBT_CREATEWNDW { struct tagCREATESTRUCTW *lpcs; HWND hwndInsertAfter; } CBT_CREATEWNDW, *LPCBT_CREATEWNDW; #ifdef UNICODE typedef CBT_CREATEWNDW CBT_CREATEWND; typedef LPCBT_CREATEWNDW LPCBT_CREATEWND; #else typedef CBT_CREATEWNDA CBT_CREATEWND; typedef LPCBT_CREATEWNDA LPCBT_CREATEWND; #endif // UNICODE /* * HCBT_ACTIVATE structure pointed to by lParam */ typedef struct tagCBTACTIVATESTRUCT { BOOL fMouse; HWND hWndActive; } CBTACTIVATESTRUCT, *LPCBTACTIVATESTRUCT; #if(_WIN32_WINNT >= 0x0501) /* * WTSSESSION_NOTIFICATION struct pointed by lParam, for WM_WTSSESSION_CHANGE */ typedef struct tagWTSSESSION_NOTIFICATION { DWORD cbSize; DWORD dwSessionId; } WTSSESSION_NOTIFICATION, *PWTSSESSION_NOTIFICATION; /* * codes passed in WPARAM for WM_WTSSESSION_CHANGE */ #define WTS_CONSOLE_CONNECT 0x1 #define WTS_CONSOLE_DISCONNECT 0x2 #define WTS_REMOTE_CONNECT 0x3 #define WTS_REMOTE_DISCONNECT 0x4 #define WTS_SESSION_LOGON 0x5 #define WTS_SESSION_LOGOFF 0x6 #define WTS_SESSION_LOCK 0x7 #define WTS_SESSION_UNLOCK 0x8 #define WTS_SESSION_REMOTE_CONTROL 0x9 #endif /* _WIN32_WINNT >= 0x0501 */ /* * WH_MSGFILTER Filter Proc Codes */ #define MSGF_DIALOGBOX 0 #define MSGF_MESSAGEBOX 1 #define MSGF_MENU 2 #define MSGF_SCROLLBAR 5 #define MSGF_NEXTWINDOW 6 #define MSGF_MAX 8 // unused #define MSGF_USER 4096 /* * Shell support */ #define HSHELL_WINDOWCREATED 1 #define HSHELL_WINDOWDESTROYED 2 #define HSHELL_ACTIVATESHELLWINDOW 3 #if(WINVER >= 0x0400) #define HSHELL_WINDOWACTIVATED 4 #define HSHELL_GETMINRECT 5 #define HSHELL_REDRAW 6 #define HSHELL_TASKMAN 7 #define HSHELL_LANGUAGE 8 #define HSHELL_SYSMENU 9 #define HSHELL_ENDTASK 10 #endif /* WINVER >= 0x0400 */ #if(_WIN32_WINNT >= 0x0500) #define HSHELL_ACCESSIBILITYSTATE 11 #define HSHELL_APPCOMMAND 12 #endif /* _WIN32_WINNT >= 0x0500 */ #if(_WIN32_WINNT >= 0x0501) #define HSHELL_WINDOWREPLACED 13 #define HSHELL_WINDOWREPLACING 14 #endif /* _WIN32_WINNT >= 0x0501 */ #define HSHELL_HIGHBIT 0x8000 #define HSHELL_FLASH (HSHELL_REDRAW|HSHELL_HIGHBIT) #define HSHELL_RUDEAPPACTIVATED (HSHELL_WINDOWACTIVATED|HSHELL_HIGHBIT) #if(_WIN32_WINNT >= 0x0500) /* wparam for HSHELL_ACCESSIBILITYSTATE */ #define ACCESS_STICKYKEYS 0x0001 #define ACCESS_FILTERKEYS 0x0002 #define ACCESS_MOUSEKEYS 0x0003 /* cmd for HSHELL_APPCOMMAND and WM_APPCOMMAND */ #define APPCOMMAND_BROWSER_BACKWARD 1 #define APPCOMMAND_BROWSER_FORWARD 2 #define APPCOMMAND_BROWSER_REFRESH 3 #define APPCOMMAND_BROWSER_STOP 4 #define APPCOMMAND_BROWSER_SEARCH 5 #define APPCOMMAND_BROWSER_FAVORITES 6 #define APPCOMMAND_BROWSER_HOME 7 #define APPCOMMAND_VOLUME_MUTE 8 #define APPCOMMAND_VOLUME_DOWN 9 #define APPCOMMAND_VOLUME_UP 10 #define APPCOMMAND_MEDIA_NEXTTRACK 11 #define APPCOMMAND_MEDIA_PREVIOUSTRACK 12 #define APPCOMMAND_MEDIA_STOP 13 #define APPCOMMAND_MEDIA_PLAY_PAUSE 14 #define APPCOMMAND_LAUNCH_MAIL 15 #define APPCOMMAND_LAUNCH_MEDIA_SELECT 16 #define APPCOMMAND_LAUNCH_APP1 17 #define APPCOMMAND_LAUNCH_APP2 18 #define APPCOMMAND_BASS_DOWN 19 #define APPCOMMAND_BASS_BOOST 20 #define APPCOMMAND_BASS_UP 21 #define APPCOMMAND_TREBLE_DOWN 22 #define APPCOMMAND_TREBLE_UP 23 #if(_WIN32_WINNT >= 0x0501) #define APPCOMMAND_MICROPHONE_VOLUME_MUTE 24 #define APPCOMMAND_MICROPHONE_VOLUME_DOWN 25 #define APPCOMMAND_MICROPHONE_VOLUME_UP 26 #define APPCOMMAND_HELP 27 #define APPCOMMAND_FIND 28 #define APPCOMMAND_NEW 29 #define APPCOMMAND_OPEN 30 #define APPCOMMAND_CLOSE 31 #define APPCOMMAND_SAVE 32 #define APPCOMMAND_PRINT 33 #define APPCOMMAND_UNDO 34 #define APPCOMMAND_REDO 35 #define APPCOMMAND_COPY 36 #define APPCOMMAND_CUT 37 #define APPCOMMAND_PASTE 38 #define APPCOMMAND_REPLY_TO_MAIL 39 #define APPCOMMAND_FORWARD_MAIL 40 #define APPCOMMAND_SEND_MAIL 41 #define APPCOMMAND_SPELL_CHECK 42 #define APPCOMMAND_DICTATE_OR_COMMAND_CONTROL_TOGGLE 43 #define APPCOMMAND_MIC_ON_OFF_TOGGLE 44 #define APPCOMMAND_CORRECTION_LIST 45 #define APPCOMMAND_MEDIA_PLAY 46 #define APPCOMMAND_MEDIA_PAUSE 47 #define APPCOMMAND_MEDIA_RECORD 48 #define APPCOMMAND_MEDIA_FAST_FORWARD 49 #define APPCOMMAND_MEDIA_REWIND 50 #define APPCOMMAND_MEDIA_CHANNEL_UP 51 #define APPCOMMAND_MEDIA_CHANNEL_DOWN 52 #endif /* _WIN32_WINNT >= 0x0501 */ #define FAPPCOMMAND_MOUSE 0x8000 #define FAPPCOMMAND_KEY 0 #define FAPPCOMMAND_OEM 0x1000 #define FAPPCOMMAND_MASK 0xF000 #define GET_APPCOMMAND_LPARAM(lParam) ((short)(HIWORD(lParam) & ~FAPPCOMMAND_MASK)) #define GET_DEVICE_LPARAM(lParam) ((WORD)(HIWORD(lParam) & FAPPCOMMAND_MASK)) #define GET_MOUSEORKEY_LPARAM GET_DEVICE_LPARAM #define GET_FLAGS_LPARAM(lParam) (LOWORD(lParam)) #define GET_KEYSTATE_LPARAM(lParam) GET_FLAGS_LPARAM(lParam) #endif /* _WIN32_WINNT >= 0x0500 */ typedef struct { HWND hwnd; RECT rc; } SHELLHOOKINFO, *LPSHELLHOOKINFO; /* * Message Structure used in Journaling */ typedef struct tagEVENTMSG { UINT message; UINT paramL; UINT paramH; DWORD time; HWND hwnd; } EVENTMSG, *PEVENTMSGMSG, NEAR *NPEVENTMSGMSG, FAR *LPEVENTMSGMSG; typedef struct tagEVENTMSG *PEVENTMSG, NEAR *NPEVENTMSG, FAR *LPEVENTMSG; /* * Message structure used by WH_CALLWNDPROC */ typedef struct tagCWPSTRUCT { LPARAM lParam; WPARAM wParam; UINT message; HWND hwnd; } CWPSTRUCT, *PCWPSTRUCT, NEAR *NPCWPSTRUCT, FAR *LPCWPSTRUCT; #if(WINVER >= 0x0400) /* * Message structure used by WH_CALLWNDPROCRET */ typedef struct tagCWPRETSTRUCT { LRESULT lResult; LPARAM lParam; WPARAM wParam; UINT message; HWND hwnd; } CWPRETSTRUCT, *PCWPRETSTRUCT, NEAR *NPCWPRETSTRUCT, FAR *LPCWPRETSTRUCT; #endif /* WINVER >= 0x0400 */ #if (_WIN32_WINNT >= 0x0400) /* * Low level hook flags */ #define LLKHF_EXTENDED (KF_EXTENDED >> 8) #define LLKHF_INJECTED 0x00000010 #define LLKHF_ALTDOWN (KF_ALTDOWN >> 8) #define LLKHF_UP (KF_UP >> 8) #define LLMHF_INJECTED 0x00000001 /* * Structure used by WH_KEYBOARD_LL */ typedef struct tagKBDLLHOOKSTRUCT { DWORD vkCode; DWORD scanCode; DWORD flags; DWORD time; ULONG_PTR dwExtraInfo; } KBDLLHOOKSTRUCT, FAR *LPKBDLLHOOKSTRUCT, *PKBDLLHOOKSTRUCT; /* * Structure used by WH_MOUSE_LL */ typedef struct tagMSLLHOOKSTRUCT { POINT pt; DWORD mouseData; DWORD flags; DWORD time; ULONG_PTR dwExtraInfo; } MSLLHOOKSTRUCT, FAR *LPMSLLHOOKSTRUCT, *PMSLLHOOKSTRUCT; #endif // (_WIN32_WINNT >= 0x0400) /* * Structure used by WH_DEBUG */ typedef struct tagDEBUGHOOKINFO { DWORD idThread; DWORD idThreadInstaller; LPARAM lParam; WPARAM wParam; int code; } DEBUGHOOKINFO, *PDEBUGHOOKINFO, NEAR *NPDEBUGHOOKINFO, FAR* LPDEBUGHOOKINFO; /* * Structure used by WH_MOUSE */ typedef struct tagMOUSEHOOKSTRUCT { POINT pt; HWND hwnd; UINT wHitTestCode; ULONG_PTR dwExtraInfo; } MOUSEHOOKSTRUCT, FAR *LPMOUSEHOOKSTRUCT, *PMOUSEHOOKSTRUCT; #if(_WIN32_WINNT >= 0x0500) #ifdef __cplusplus typedef struct tagMOUSEHOOKSTRUCTEX : public tagMOUSEHOOKSTRUCT { DWORD mouseData; } MOUSEHOOKSTRUCTEX, *LPMOUSEHOOKSTRUCTEX, *PMOUSEHOOKSTRUCTEX; #else // ndef __cplusplus typedef struct tagMOUSEHOOKSTRUCTEX { MOUSEHOOKSTRUCT; DWORD mouseData; } MOUSEHOOKSTRUCTEX, *LPMOUSEHOOKSTRUCTEX, *PMOUSEHOOKSTRUCTEX; #endif #endif /* _WIN32_WINNT >= 0x0500 */ #if(WINVER >= 0x0400) /* * Structure used by WH_HARDWARE */ typedef struct tagHARDWAREHOOKSTRUCT { HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; } HARDWAREHOOKSTRUCT, FAR *LPHARDWAREHOOKSTRUCT, *PHARDWAREHOOKSTRUCT; #endif /* WINVER >= 0x0400 */ #endif /* !NOWH */ /* * Keyboard Layout API */ #define HKL_PREV 0 #define HKL_NEXT 1 #define KLF_ACTIVATE 0x00000001 #define KLF_SUBSTITUTE_OK 0x00000002 #define KLF_REORDER 0x00000008 #if(WINVER >= 0x0400) #define KLF_REPLACELANG 0x00000010 #define KLF_NOTELLSHELL 0x00000080 #endif /* WINVER >= 0x0400 */ #define KLF_SETFORPROCESS 0x00000100 #if(_WIN32_WINNT >= 0x0500) #define KLF_SHIFTLOCK 0x00010000 #define KLF_RESET 0x40000000 #endif /* _WIN32_WINNT >= 0x0500 */ #if(WINVER >= 0x0500) /* * Bits in wParam of WM_INPUTLANGCHANGEREQUEST message */ #define INPUTLANGCHANGE_SYSCHARSET 0x0001 #define INPUTLANGCHANGE_FORWARD 0x0002 #define INPUTLANGCHANGE_BACKWARD 0x0004 #endif /* WINVER >= 0x0500 */ /* * Size of KeyboardLayoutName (number of characters), including nul terminator */ #define KL_NAMELENGTH 9 WINUSERAPI HKL WINAPI LoadKeyboardLayoutA( __in LPCSTR pwszKLID, __in UINT Flags); WINUSERAPI HKL WINAPI LoadKeyboardLayoutW( __in LPCWSTR pwszKLID, __in UINT Flags); #ifdef UNICODE #define LoadKeyboardLayout LoadKeyboardLayoutW #else #define LoadKeyboardLayout LoadKeyboardLayoutA #endif // !UNICODE #if(WINVER >= 0x0400) WINUSERAPI HKL WINAPI ActivateKeyboardLayout( __in HKL hkl, __in UINT Flags); #else WINUSERAPI BOOL WINAPI ActivateKeyboardLayout( __in HKL hkl, __in UINT Flags); #endif /* WINVER >= 0x0400 */ #if(WINVER >= 0x0400) WINUSERAPI int WINAPI ToUnicodeEx( __in UINT wVirtKey, __in UINT wScanCode, __in_bcount(256) CONST BYTE *lpKeyState, __out_ecount(cchBuff) LPWSTR pwszBuff, __in int cchBuff, __in UINT wFlags, __in_opt HKL dwhkl); #endif /* WINVER >= 0x0400 */ WINUSERAPI BOOL WINAPI UnloadKeyboardLayout( __in HKL hkl); WINUSERAPI BOOL WINAPI GetKeyboardLayoutNameA( __out_ecount(KL_NAMELENGTH) LPSTR pwszKLID); WINUSERAPI BOOL WINAPI GetKeyboardLayoutNameW( __out_ecount(KL_NAMELENGTH) LPWSTR pwszKLID); #ifdef UNICODE #define GetKeyboardLayoutName GetKeyboardLayoutNameW #else #define GetKeyboardLayoutName GetKeyboardLayoutNameA #endif // !UNICODE #if(WINVER >= 0x0400) WINUSERAPI int WINAPI GetKeyboardLayoutList( __in int nBuff, __out_ecount_part_opt(nBuff, return) HKL FAR *lpList); WINUSERAPI HKL WINAPI GetKeyboardLayout( __in DWORD idThread); #endif /* WINVER >= 0x0400 */ #if(WINVER >= 0x0500) typedef struct tagMOUSEMOVEPOINT { int x; int y; DWORD time; ULONG_PTR dwExtraInfo; } MOUSEMOVEPOINT, *PMOUSEMOVEPOINT, FAR* LPMOUSEMOVEPOINT; /* * Values for resolution parameter of GetMouseMovePointsEx */ #define GMMP_USE_DISPLAY_POINTS 1 #define GMMP_USE_HIGH_RESOLUTION_POINTS 2 WINUSERAPI int WINAPI GetMouseMovePointsEx( __in UINT cbSize, __in LPMOUSEMOVEPOINT lppt, __out_ecount(nBufPoints) LPMOUSEMOVEPOINT lpptBuf, __in int nBufPoints, __in DWORD resolution); #endif /* WINVER >= 0x0500 */ #ifndef NODESKTOP /* * Desktop-specific access flags */ #define DESKTOP_READOBJECTS 0x0001L #define DESKTOP_CREATEWINDOW 0x0002L #define DESKTOP_CREATEMENU 0x0004L #define DESKTOP_HOOKCONTROL 0x0008L #define DESKTOP_JOURNALRECORD 0x0010L #define DESKTOP_JOURNALPLAYBACK 0x0020L #define DESKTOP_ENUMERATE 0x0040L #define DESKTOP_WRITEOBJECTS 0x0080L #define DESKTOP_SWITCHDESKTOP 0x0100L /* * Desktop-specific control flags */ #define DF_ALLOWOTHERACCOUNTHOOK 0x0001L #ifdef _WINGDI_ #ifndef NOGDI WINUSERAPI HDESK WINAPI CreateDesktopA( __in LPCSTR lpszDesktop, __reserved LPCSTR lpszDevice, __reserved LPDEVMODEA pDevmode, __in DWORD dwFlags, __in ACCESS_MASK dwDesiredAccess, __in_opt LPSECURITY_ATTRIBUTES lpsa); WINUSERAPI HDESK WINAPI CreateDesktopW( __in LPCWSTR lpszDesktop, __reserved LPCWSTR lpszDevice, __reserved LPDEVMODEW pDevmode, __in DWORD dwFlags, __in ACCESS_MASK dwDesiredAccess, __in_opt LPSECURITY_ATTRIBUTES lpsa); #ifdef UNICODE #define CreateDesktop CreateDesktopW #else #define CreateDesktop CreateDesktopA #endif // !UNICODE #endif /* NOGDI */ #endif /* _WINGDI_ */ WINUSERAPI HDESK WINAPI OpenDesktopA( __in LPCSTR lpszDesktop, __in DWORD dwFlags, __in BOOL fInherit, __in ACCESS_MASK dwDesiredAccess); WINUSERAPI HDESK WINAPI OpenDesktopW( __in LPCWSTR lpszDesktop, __in DWORD dwFlags, __in BOOL fInherit, __in ACCESS_MASK dwDesiredAccess); #ifdef UNICODE #define OpenDesktop OpenDesktopW #else #define OpenDesktop OpenDesktopA #endif // !UNICODE WINUSERAPI HDESK WINAPI OpenInputDesktop( __in DWORD dwFlags, __in BOOL fInherit, __in ACCESS_MASK dwDesiredAccess); WINUSERAPI BOOL WINAPI EnumDesktopsA( __in_opt HWINSTA hwinsta, __in DESKTOPENUMPROCA lpEnumFunc, __in LPARAM lParam); WINUSERAPI BOOL WINAPI EnumDesktopsW( __in_opt HWINSTA hwinsta, __in DESKTOPENUMPROCW lpEnumFunc, __in LPARAM lParam); #ifdef UNICODE #define EnumDesktops EnumDesktopsW #else #define EnumDesktops EnumDesktopsA #endif // !UNICODE WINUSERAPI BOOL WINAPI EnumDesktopWindows( __in_opt HDESK hDesktop, __in WNDENUMPROC lpfn, __in LPARAM lParam); WINUSERAPI BOOL WINAPI SwitchDesktop( __in HDESK hDesktop); WINUSERAPI BOOL WINAPI SetThreadDesktop( __in HDESK hDesktop); WINUSERAPI BOOL WINAPI CloseDesktop( __in HDESK hDesktop); WINUSERAPI HDESK WINAPI GetThreadDesktop( __in DWORD dwThreadId); #endif /* !NODESKTOP */ #ifndef NOWINDOWSTATION /* * Windowstation-specific access flags */ #define WINSTA_ENUMDESKTOPS 0x0001L #define WINSTA_READATTRIBUTES 0x0002L #define WINSTA_ACCESSCLIPBOARD 0x0004L #define WINSTA_CREATEDESKTOP 0x0008L #define WINSTA_WRITEATTRIBUTES 0x0010L #define WINSTA_ACCESSGLOBALATOMS 0x0020L #define WINSTA_EXITWINDOWS 0x0040L #define WINSTA_ENUMERATE 0x0100L #define WINSTA_READSCREEN 0x0200L #define WINSTA_ALL_ACCESS (WINSTA_ENUMDESKTOPS | WINSTA_READATTRIBUTES | WINSTA_ACCESSCLIPBOARD | / WINSTA_CREATEDESKTOP | WINSTA_WRITEATTRIBUTES | WINSTA_ACCESSGLOBALATOMS | / WINSTA_EXITWINDOWS | WINSTA_ENUMERATE | WINSTA_READSCREEN) /* * Windowstation creation flags. */ #define CWF_CREATE_ONLY 0x0001L /* * Windowstation-specific attribute flags */ #define WSF_VISIBLE 0x0001L WINUSERAPI HWINSTA WINAPI CreateWindowStationA( __in_opt LPCSTR lpwinsta, __in DWORD dwFlags, __in ACCESS_MASK dwDesiredAccess, __in_opt LPSECURITY_ATTRIBUTES lpsa); WINUSERAPI HWINSTA WINAPI CreateWindowStationW( __in_opt LPCWSTR lpwinsta, __in DWORD dwFlags, __in ACCESS_MASK dwDesiredAccess, __in_opt LPSECURITY_ATTRIBUTES lpsa); #ifdef UNICODE #define CreateWindowStation CreateWindowStationW #else #define CreateWindowStation CreateWindowStationA #endif // !UNICODE WINUSERAPI HWINSTA WINAPI OpenWindowStationA( __in LPCSTR lpszWinSta, __in BOOL fInherit, __in ACCESS_MASK dwDesiredAccess); WINUSERAPI HWINSTA WINAPI OpenWindowStationW( __in LPCWSTR lpszWinSta, __in BOOL fInherit, __in ACCESS_MASK dwDesiredAccess); #ifdef UNICODE #define OpenWindowStation OpenWindowStationW #else #define OpenWindowStation OpenWindowStationA #endif // !UNICODE WINUSERAPI BOOL WINAPI EnumWindowStationsA( __in WINSTAENUMPROCA lpEnumFunc, __in LPARAM lParam); WINUSERAPI BOOL WINAPI EnumWindowStationsW( __in WINSTAENUMPROCW lpEnumFunc, __in LPARAM lParam); #ifdef UNICODE #define EnumWindowStations EnumWindowStationsW #else #define EnumWindowStations EnumWindowStationsA #endif // !UNICODE WINUSERAPI BOOL WINAPI CloseWindowStation( __in HWINSTA hWinSta); WINUSERAPI BOOL WINAPI SetProcessWindowStation( __in HWINSTA hWinSta); WINUSERAPI HWINSTA WINAPI GetProcessWindowStation( VOID); #endif /* !NOWINDOWSTATION */ #ifndef NOSECURITY WINUSERAPI BOOL WINAPI SetUserObjectSecurity( __in HANDLE hObj, __in PSECURITY_INFORMATION pSIRequested, __in PSECURITY_DESCRIPTOR pSID); WINUSERAPI BOOL WINAPI GetUserObjectSecurity( __in HANDLE hObj, __in PSECURITY_INFORMATION pSIRequested, __out_bcount_opt(nLength) PSECURITY_DESCRIPTOR pSID, __in DWORD nLength, __out LPDWORD lpnLengthNeeded); #define UOI_FLAGS 1 #define UOI_NAME 2 #define UOI_TYPE 3 #define UOI_USER_SID 4 typedef struct tagUSEROBJECTFLAGS { BOOL fInherit; BOOL fReserved; DWORD dwFlags; } USEROBJECTFLAGS, *PUSEROBJECTFLAGS; WINUSERAPI BOOL WINAPI GetUserObjectInformationA( __in HANDLE hObj, __in int nIndex, __out_bcount_opt(nLength) PVOID pvInfo, __in DWORD nLength, __out_opt LPDWORD lpnLengthNeeded); WINUSERAPI BOOL WINAPI GetUserObjectInformationW( __in HANDLE hObj, __in int nIndex, __out_bcount_opt(nLength) PVOID pvInfo, __in DWORD nLength, __out_opt LPDWORD lpnLengthNeeded); #ifdef UNICODE #define GetUserObjectInformation GetUserObjectInformationW #else #define GetUserObjectInformation GetUserObjectInformationA #endif // !UNICODE WINUSERAPI BOOL WINAPI SetUserObjectInformationA( __in HANDLE hObj, __in int nIndex, __in_bcount(nLength) PVOID pvInfo, __in DWORD nLength); WINUSERAPI BOOL WINAPI SetUserObjectInformationW( __in HANDLE hObj, __in int nIndex, __in_bcount(nLength) PVOID pvInfo, __in DWORD nLength); #ifdef UNICODE #define SetUserObjectInformation SetUserObjectInformationW #else #define SetUserObjectInformation SetUserObjectInformationA #endif // !UNICODE #endif /* !NOSECURITY */ #if(WINVER >= 0x0400) typedef struct tagWNDCLASSEXA { UINT cbSize; /* Win 3.x */ UINT style; WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; HINSTANCE hInstance; HICON hIcon; HCURSOR hCursor; HBRUSH hbrBackground; LPCSTR lpszMenuName; LPCSTR lpszClassName; /* Win 4.0 */ HICON hIconSm; } WNDCLASSEXA, *PWNDCLASSEXA, NEAR *NPWNDCLASSEXA, FAR *LPWNDCLASSEXA; typedef struct tagWNDCLASSEXW { UINT cbSize; /* Win 3.x */ UINT style; WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; HINSTANCE hInstance; HICON hIcon; HCURSOR hCursor; HBRUSH hbrBackground; LPCWSTR lpszMenuName; LPCWSTR lpszClassName; /* Win 4.0 */ HICON hIconSm; } WNDCLASSEXW, *PWNDCLASSEXW, NEAR *NPWNDCLASSEXW, FAR *LPWNDCLASSEXW; #ifdef UNICODE typedef WNDCLASSEXW WNDCLASSEX; typedef PWNDCLASSEXW PWNDCLASSEX; typedef NPWNDCLASSEXW NPWNDCLASSEX; typedef LPWNDCLASSEXW LPWNDCLASSEX; #else typedef WNDCLASSEXA WNDCLASSEX; typedef PWNDCLASSEXA PWNDCLASSEX; typedef NPWNDCLASSEXA NPWNDCLASSEX; typedef LPWNDCLASSEXA LPWNDCLASSEX; #endif // UNICODE #endif /* WINVER >= 0x0400 */ 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, NEAR *NPWNDCLASSA, FAR *LPWNDCLASSA; typedef struct tagWNDCLASSW { UINT style; WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; HINSTANCE hInstance; HICON hIcon; HCURSOR hCursor; HBRUSH hbrBackground; LPCWSTR lpszMenuName; LPCWSTR lpszClassName; } WNDCLASSW, *PWNDCLASSW, NEAR *NPWNDCLASSW, FAR *LPWNDCLASSW; #ifdef UNICODE typedef WNDCLASSW WNDCLASS; typedef PWNDCLASSW PWNDCLASS; typedef NPWNDCLASSW NPWNDCLASS; typedef LPWNDCLASSW LPWNDCLASS; #else typedef WNDCLASSA WNDCLASS; typedef PWNDCLASSA PWNDCLASS; typedef NPWNDCLASSA NPWNDCLASS; typedef LPWNDCLASSA LPWNDCLASS; #endif // UNICODE WINUSERAPI BOOL WINAPI IsHungAppWindow( __in HWND hwnd); #if(WINVER >= 0x0501) WINUSERAPI VOID WINAPI DisableProcessWindowsGhosting( VOID); #endif /* WINVER >= 0x0501 */ #ifndef NOMSG /* * Message structure */ typedef struct tagMSG { HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt; #ifdef _MAC DWORD lPrivate; #endif } MSG, *PMSG, NEAR *NPMSG, FAR *LPMSG; #define POINTSTOPOINT(pt, pts) / { (pt).x = (LONG)(SHORT)LOWORD(*(LONG*)&pts); / (pt).y = (LONG)(SHORT)HIWORD(*(LONG*)&pts); } #define POINTTOPOINTS(pt) (MAKELONG((short)((pt).x), (short)((pt).y))) #define MAKEWPARAM(l, h) ((WPARAM)(DWORD)MAKELONG(l, h)) #define MAKELPARAM(l, h) ((LPARAM)(DWORD)MAKELONG(l, h)) #define MAKELRESULT(l, h) ((LRESULT)(DWORD)MAKELONG(l, h)) #endif /* !NOMSG */ #ifndef NOWINOFFSETS /* * Window field offsets for GetWindowLong() */ #define GWL_WNDPROC (-4) #define GWL_HINSTANCE (-6) #define GWL_HWNDPARENT (-8) #define GWL_STYLE (-16) #define GWL_EXSTYLE (-20) #define GWL_USERDATA (-21) #define GWL_ID (-12) #ifdef _WIN64 #undef GWL_WNDPROC #undef GWL_HINSTANCE #undef GWL_HWNDPARENT #undef GWL_USERDATA #endif /* _WIN64 */ #define GWLP_WNDPROC (-4) #define GWLP_HINSTANCE (-6) #define GWLP_HWNDPARENT (-8) #define GWLP_USERDATA (-21) #define GWLP_ID (-12) /* * Class field offsets for GetClassLong() */ #define GCL_MENUNAME (-8) #define GCL_HBRBACKGROUND (-10) #define GCL_HCURSOR (-12) #define GCL_HICON (-14) #define GCL_HMODULE (-16) #define GCL_CBWNDEXTRA (-18) #define GCL_CBCLSEXTRA (-20) #define GCL_WNDPROC (-24) #define GCL_STYLE (-26) #define GCW_ATOM (-32) #if(WINVER >= 0x0400) #define GCL_HICONSM (-34) #endif /* WINVER >= 0x0400 */ #ifdef _WIN64 #undef GCL_MENUNAME #undef GCL_HBRBACKGROUND #undef GCL_HCURSOR #undef GCL_HICON #undef GCL_HMODULE #undef GCL_WNDPROC #undef GCL_HICONSM #endif /* _WIN64 */ #define GCLP_MENUNAME (-8) #define GCLP_HBRBACKGROUND (-10) #define GCLP_HCURSOR (-12) #define GCLP_HICON (-14) #define GCLP_HMODULE (-16) #define GCLP_WNDPROC (-24) #define GCLP_HICONSM (-34) #endif /* !NOWINOFFSETS */ #ifndef NOWINMESSAGES /* * 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_SETREDRAW 0x000B #define WM_SETTEXT 0x000C #define WM_GETTEXT 0x000D #define WM_GETTEXTLENGTH 0x000E #define WM_PAINT 0x000F #define WM_CLOSE 0x0010 #ifndef _WIN32_WCE #define WM_QUERYENDSESSION 0x0011 #define WM_QUERYOPEN 0x0013 #define WM_ENDSESSION 0x0016 #endif #define WM_QUIT 0x0012 #define WM_ERASEBKGND 0x0014 #define WM_SYSCOLORCHANGE 0x0015 #define WM_SHOWWINDOW 0x0018 #define WM_WININICHANGE 0x001A #if(WINVER >= 0x0400) #define WM_SETTINGCHANGE WM_WININICHANGE #endif /* WINVER >= 0x0400 */ #define WM_DEVMODECHANGE 0x001B #define WM_ACTIVATEAPP 0x001C #define WM_FONTCHANGE 0x001D #define WM_TIMECHANGE 0x001E #define WM_CANCELMODE 0x001F #define WM_SETCURSOR 0x0020 #define WM_MOUSEACTIVATE 0x0021 #define WM_CHILDACTIVATE 0x0022 #define WM_QUEUESYNC 0x0023 #define WM_GETMINMAXINFO 0x0024 /* * Struct pointed to by WM_GETMINMAXINFO lParam */ typedef struct tagMINMAXINFO { POINT ptReserved; POINT ptMaxSize; POINT ptMaxPosition; POINT ptMinTrackSize; POINT ptMaxTrackSize; } MINMAXINFO, *PMINMAXINFO, *LPMINMAXINFO; #define WM_PAINTICON 0x0026 #define WM_ICONERASEBKGND 0x0027 #define WM_NEXTDLGCTL 0x0028 #define WM_SPOOLERSTATUS 0x002A #define WM_DRAWITEM 0x002B #define WM_MEASUREITEM 0x002C #define WM_DELETEITEM 0x002D #define WM_VKEYTOITEM 0x002E #define WM_CHARTOITEM 0x002F #define WM_SETFONT 0x0030 #define WM_GETFONT 0x0031 #define WM_SETHOTKEY 0x0032 #define WM_GETHOTKEY 0x0033 #define WM_QUERYDRAGICON 0x0037 #define WM_COMPAREITEM 0x0039 #if(WINVER >= 0x0500) #ifndef _WIN32_WCE #define WM_GETOBJECT 0x003D #endif #endif /* WINVER >= 0x0500 */ #define WM_COMPACTING 0x0041 #define WM_COMMNOTIFY 0x0044 /* no longer suported */ #define WM_WINDOWPOSCHANGING 0x0046 #define WM_WINDOWPOSCHANGED 0x0047 #define WM_POWER 0x0048 /* * wParam for WM_POWER window message and DRV_POWER driver notification */ #define PWR_OK 1 #define PWR_FAIL (-1) #define PWR_SUSPENDREQUEST 1 #define PWR_SUSPENDRESUME 2 #define PWR_CRITICALRESUME 3 #define WM_COPYDATA 0x004A #define WM_CANCELJOURNAL 0x004B /* * lParam of WM_COPYDATA message points to... */ typedef struct tagCOPYDATASTRUCT { ULONG_PTR dwData; DWORD cbData; PVOID lpData; } COPYDATASTRUCT, *PCOPYDATASTRUCT; #if(WINVER >= 0x0400) typedef struct tagMDINEXTMENU { HMENU hmenuIn; HMENU hmenuNext; HWND hwndNext; } MDINEXTMENU, * PMDINEXTMENU, FAR * LPMDINEXTMENU; #endif /* WINVER >= 0x0400 */ #if(WINVER >= 0x0400) #define WM_NOTIFY 0x004E #define WM_INPUTLANGCHANGEREQUEST 0x0050 #define WM_INPUTLANGCHANGE 0x0051 #define WM_TCARD 0x0052 #define WM_HELP 0x0053 #define WM_USERCHANGED 0x0054 #define WM_NOTIFYFORMAT 0x0055 #define NFR_ANSI 1 #define NFR_UNICODE 2 #define NF_QUERY 3 #define NF_REQUERY 4 #define WM_CONTEXTMENU 0x007B #define WM_STYLECHANGING 0x007C #define WM_STYLECHANGED 0x007D #define WM_DISPLAYCHANGE 0x007E #define WM_GETICON 0x007F #define WM_SETICON 0x0080 #endif /* WINVER >= 0x0400 */ #define WM_NCCREATE 0x0081 #define WM_NCDESTROY 0x0082 #define WM_NCCALCSIZE 0x0083 #define WM_NCHITTEST 0x0084 #define WM_NCPAINT 0x0085 #define WM_NCACTIVATE 0x0086 #define WM_GETDLGCODE 0x0087 #ifndef _WIN32_WCE #define WM_SYNCPAINT 0x0088 #endif #define WM_NCMOUSEMOVE 0x00A0 #define WM_NCLBUTTONDOWN 0x00A1 #define WM_NCLBUTTONUP 0x00A2 #define WM_NCLBUTTONDBLCLK 0x00A3 #define WM_NCRBUTTONDOWN 0x00A4 #define WM_NCRBUTTONUP 0x00A5 #define WM_NCRBUTTONDBLCLK 0x00A6 #define WM_NCMBUTTONDOWN 0x00A7 #define WM_NCMBUTTONUP 0x00A8 #define WM_NCMBUTTONDBLCLK 0x00A9 #if(_WIN32_WINNT >= 0x0500) #define WM_NCXBUTTONDOWN 0x00AB #define WM_NCXBUTTONUP 0x00AC #define WM_NCXBUTTONDBLCLK 0x00AD #endif /* _WIN32_WINNT >= 0x0500 */ #if(_WIN32_WINNT >= 0x0501) #define WM_INPUT 0x00FF #endif /* _WIN32_WINNT >= 0x0501 */ #define WM_KEYFIRST 0x0100 #define WM_KEYDOWN 0x0100 #define WM_KEYUP 0x0101 #define WM_CHAR 0x0102 #define WM_DEADCHAR 0x0103 #define WM_SYSKEYDOWN 0x0104 #define WM_SYSKEYUP 0x0105 #define WM_SYSCHAR 0x0106 #define WM_SYSDEADCHAR 0x0107 #if(_WIN32_WINNT >= 0x0501) #define WM_UNICHAR 0x0109 #define WM_KEYLAST 0x0109 #define UNICODE_NOCHAR 0xFFFF #else #define WM_KEYLAST 0x0108 #endif /* _WIN32_WINNT >= 0x0501 */ #if(WINVER >= 0x0400) #define WM_IME_STARTCOMPOSITION 0x010D #define WM_IME_ENDCOMPOSITION 0x010E #define WM_IME_COMPOSITION 0x010F #define WM_IME_KEYLAST 0x010F #endif /* WINVER >= 0x0400 */ #define WM_INITDIALOG 0x0110 #define WM_COMMAND 0x0111 #define WM_SYSCOMMAND 0x0112 #define WM_TIMER 0x0113 #define WM_HSCROLL 0x0114 #define WM_VSCROLL 0x0115 #define WM_INITMENU 0x0116 #define WM_INITMENUPOPUP 0x0117 #define WM_MENUSELECT 0x011F #define WM_MENUCHAR 0x0120 #define WM_ENTERIDLE 0x0121 #if(WINVER >= 0x0500) #ifndef _WIN32_WCE #define WM_MENURBUTTONUP 0x0122 #define WM_MENUDRAG 0x0123 #define WM_MENUGETOBJECT 0x0124 #define WM_UNINITMENUPOPUP 0x0125 #define WM_MENUCOMMAND 0x0126 #ifndef _WIN32_WCE #if(_WIN32_WINNT >= 0x0500) #define WM_CHANGEUISTATE 0x0127 #define WM_UPDATEUISTATE 0x0128 #define WM_QUERYUISTATE 0x0129 /* * LOWORD(wParam) values in WM_*UISTATE* */ #define UIS_SET 1 #define UIS_CLEAR 2 #define UIS_INITIALIZE 3 /* * HIWORD(wParam) values in WM_*UISTATE* */ #define UISF_HIDEFOCUS 0x1 #define UISF_HIDEACCEL 0x2 #if(_WIN32_WINNT >= 0x0501) #define UISF_ACTIVE 0x4 #endif /* _WIN32_WINNT >= 0x0501 */ #endif /* _WIN32_WINNT >= 0x0500 */ #endif #endif #endif /* WINVER >= 0x0500 */ #define WM_CTLCOLORMSGBOX 0x0132 #define WM_CTLCOLOREDIT 0x0133 #define WM_CTLCOLORLISTBOX 0x0134 #define WM_CTLCOLORBTN 0x0135 #define WM_CTLCOLORDLG 0x0136 #define WM_CTLCOLORSCROLLBAR 0x0137 #define WM_CTLCOLORSTATIC 0x0138 #define MN_GETHMENU 0x01E1 #define WM_MOUSEFIRST 0x0200 #define WM_MOUSEMOVE 0x0200 #define WM_LBUTTONDOWN 0x0201 #define WM_LBUTTONUP 0x0202 #define WM_LBUTTONDBLCLK 0x0203 #define WM_RBUTTONDOWN 0x0204 #define WM_RBUTTONUP 0x0205 #define WM_RBUTTONDBLCLK 0x0206 #define WM_MBUTTONDOWN 0x0207 #define WM_MBUTTONUP 0x0208 #define WM_MBUTTONDBLCLK 0x0209 #if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400) #define WM_MOUSEWHEEL 0x020A #endif #if (_WIN32_WINNT >= 0x0500) #define WM_XBUTTONDOWN 0x020B #define WM_XBUTTONUP 0x020C #define WM_XBUTTONDBLCLK 0x020D #endif #if (_WIN32_WINNT >= 0x0500) #define WM_MOUSELAST 0x020D #elif (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400) #define WM_MOUSELAST 0x020A #else #define WM_MOUSELAST 0x0209 #endif /* (_WIN32_WINNT >= 0x0500) */ #if(_WIN32_WINNT >= 0x0400) /* Value for rolling one detent */ #define WHEEL_DELTA 120 #define GET_WHEEL_DELTA_WPARAM(wParam) ((short)HIWORD(wParam)) /* Setting to scroll one page for SPI_GET/SETWHEELSCROLLLINES */ #define WHEEL_PAGESCROLL (UINT_MAX) #endif /* _WIN32_WINNT >= 0x0400 */ #if(_WIN32_WINNT >= 0x0500) #define GET_KEYSTATE_WPARAM(wParam) (LOWORD(wParam)) #define GET_NCHITTEST_WPARAM(wParam) ((short)LOWORD(wParam)) #define GET_XBUTTON_WPARAM(wParam) (HIWORD(wParam)) /* XButton values are WORD flags */ #define XBUTTON1 0x0001 #define XBUTTON2 0x0002 /* Were there to be an XBUTTON3, its value would be 0x0004 */ #endif /* _WIN32_WINNT >= 0x0500 */ #define WM_PARENTNOTIFY 0x0210 #define WM_ENTERMENULOOP 0x0211 #define WM_EXITMENULOOP 0x0212 #if(WINVER >= 0x0400) #define WM_NEXTMENU 0x0213 #define WM_SIZING 0x0214 #define WM_CAPTURECHANGED 0x0215 #define WM_MOVING 0x0216 #endif /* WINVER >= 0x0400 */ #if(WINVER >= 0x0400) #define WM_POWERBROADCAST 0x0218 #ifndef _WIN32_WCE #define PBT_APMQUERYSUSPEND 0x0000 #define PBT_APMQUERYSTANDBY 0x0001 #define PBT_APMQUERYSUSPENDFAILED 0x0002 #define PBT_APMQUERYSTANDBYFAILED 0x0003 #define PBT_APMSUSPEND 0x0004 #define PBT_APMSTANDBY 0x0005 #define PBT_APMRESUMECRITICAL 0x0006 #define PBT_APMRESUMESUSPEND 0x0007 #define PBT_APMRESUMESTANDBY 0x0008 #define PBTF_APMRESUMEFROMFAILURE 0x00000001 #define PBT_APMBATTERYLOW 0x0009 #define PBT_APMPOWERSTATUSCHANGE 0x000A #define PBT_APMOEMEVENT 0x000B #define PBT_APMRESUMEAUTOMATIC 0x0012 #endif #endif /* WINVER >= 0x0400 */ #if(WINVER >= 0x0400) #define WM_DEVICECHANGE 0x0219 #endif /* WINVER >= 0x0400 */ #define WM_MDICREATE 0x0220 #define WM_MDIDESTROY 0x0221 #define WM_MDIACTIVATE 0x0222 #define WM_MDIRESTORE 0x0223 #define WM_MDINEXT 0x0224 #define WM_MDIMAXIMIZE 0x0225 #define WM_MDITILE 0x0226 #define WM_MDICASCADE 0x0227 #define WM_MDIICONARRANGE 0x0228 #define WM_MDIGETACTIVE 0x0229 #define WM_MDISETMENU 0x0230 #define WM_ENTERSIZEMOVE 0x0231 #define WM_EXITSIZEMOVE 0x0232 #define WM_DROPFILES 0x0233 #define WM_MDIREFRESHMENU 0x0234 #if(WINVER >= 0x0400) #define WM_IME_SETCONTEXT 0x0281 #define WM_IME_NOTIFY 0x0282 #define WM_IME_CONTROL 0x0283 #define WM_IME_COMPOSITIONFULL 0x0284 #define WM_IME_SELECT 0x0285 #define WM_IME_CHAR 0x0286 #endif /* WINVER >= 0x0400 */ #if(WINVER >= 0x0500) #define WM_IME_REQUEST 0x0288 #endif /* WINVER >= 0x0500 */ #if(WINVER >= 0x0400) #define WM_IME_KEYDOWN 0x0290 #define WM_IME_KEYUP 0x0291 #endif /* WINVER >= 0x0400 */ #if((_WIN32_WINNT >= 0x0400) || (WINVER >= 0x0500)) #define WM_MOUSEHOVER 0x02A1 #define WM_MOUSELEAVE 0x02A3 #endif #if(WINVER >= 0x0500) #define WM_NCMOUSEHOVER 0x02A0 #define WM_NCMOUSELEAVE 0x02A2 #endif /* WINVER >= 0x0500 */ #if(_WIN32_WINNT >= 0x0501) #define WM_WTSSESSION_CHANGE 0x02B1 #define WM_TABLET_FIRST 0x02c0 #define WM_TABLET_LAST 0x02df #endif /* _WIN32_WINNT >= 0x0501 */ #define WM_CUT 0x0300 #define WM_COPY 0x0301 #define WM_PASTE 0x0302 #define WM_CLEAR 0x0303 #define WM_UNDO 0x0304 #define WM_RENDERFORMAT 0x0305 #define WM_RENDERALLFORMATS 0x0306 #define WM_DESTROYCLIPBOARD 0x0307 #define WM_DRAWCLIPBOARD 0x0308 #define WM_PAINTCLIPBOARD 0x0309 #define WM_VSCROLLCLIPBOARD 0x030A #define WM_SIZECLIPBOARD 0x030B #define WM_ASKCBFORMATNAME 0x030C #define WM_CHANGECBCHAIN 0x030D #define WM_HSCROLLCLIPBOARD 0x030E #define WM_QUERYNEWPALETTE 0x030F #define WM_PALETTEISCHANGING 0x0310 #define WM_PALETTECHANGED 0x0311 #define WM_HOTKEY 0x0312 #if(WINVER >= 0x0400) #define WM_PRINT 0x0317 #define WM_PRINTCLIENT 0x0318 #endif /* WINVER >= 0x0400 */ #if(_WIN32_WINNT >= 0x0500) #define WM_APPCOMMAND 0x0319 #endif /* _WIN32_WINNT >= 0x0500 */ #if(_WIN32_WINNT >= 0x0501) #define WM_THEMECHANGED 0x031A #endif /* _WIN32_WINNT >= 0x0501 */ #if(WINVER >= 0x0400) #define WM_HANDHELDFIRST 0x0358 #define WM_HANDHELDLAST 0x035F #define WM_AFXFIRST 0x0360 #define WM_AFXLAST 0x037F #endif /* WINVER >= 0x0400 */ #define WM_PENWINFIRST 0x0380