Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
/***************************************************************************** ** winuser.h -- USER procedure declarations, constant definitions and macros ** ** Copyright (c) 1985-1997, Microsoft Corp. 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 <macwin32.h>#endif#ifdef __cplusplusextern "C" {#endif /* __cplusplus */#ifndef WINVER#define WINVER 0x0500 /* version 5.0 */#endif /* !WINVER */#include <stdarg.h>#ifndef NOUSERtypedef HANDLE HDWP;typedef VOID MENUTEMPLATEA;typedef VOID MENUTEMPLATEW;#ifdef UNICODEtypedef MENUTEMPLATEW MENUTEMPLATE;#elsetypedef MENUTEMPLATEA MENUTEMPLATE;#endif // UNICODEtypedef PVOID LPMENUTEMPLATEA;typedef PVOID LPMENUTEMPLATEW;#ifdef UNICODEtypedef LPMENUTEMPLATEW LPMENUTEMPLATE;#elsetypedef LPMENUTEMPLATEA LPMENUTEMPLATE;#endif // UNICODEtypedef LRESULT (CALLBACK* WNDPROC)(HWND, UINT, WPARAM, LPARAM);#ifdef STRICTtypedef BOOL (CALLBACK* DLGPROC)(HWND, UINT, WPARAM, LPARAM);typedef VOID (CALLBACK* TIMERPROC)(HWND, UINT, UINT, 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, DWORD, LRESULT);typedef BOOL (CALLBACK* PROPENUMPROCA)(HWND, LPCSTR, HANDLE);typedef BOOL (CALLBACK* PROPENUMPROCW)(HWND, LPCWSTR, HANDLE);typedef BOOL (CALLBACK* PROPENUMPROCEXA)(HWND, LPSTR, HANDLE, DWORD);typedef BOOL (CALLBACK* PROPENUMPROCEXW)(HWND, LPWSTR, HANDLE, DWORD);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 UNICODEtypedef PROPENUMPROCW PROPENUMPROC;typedef PROPENUMPROCEXW PROPENUMPROCEX;typedef EDITWORDBREAKPROCW EDITWORDBREAKPROC;#else /* !UNICODE */typedef PROPENUMPROCA PROPENUMPROC;typedef PROPENUMPROCEXA PROPENUMPROCEX;typedef EDITWORDBREAKPROCA EDITWORDBREAKPROC;#endif /* UNICODE */#ifdef STRICTtypedef 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 UNICODEtypedef WINSTAENUMPROCW WINSTAENUMPROC;typedef DESKTOPENUMPROCW DESKTOPENUMPROC;#else /* !UNICODE */typedef WINSTAENUMPROCA WINSTAENUMPROC;typedef DESKTOPENUMPROCA DESKTOPENUMPROC;#endif /* UNICODE */#define MAKEINTRESOURCEA(i) (LPSTR)((DWORD)((WORD)(i)))#define MAKEINTRESOURCEW(i) (LPWSTR)((DWORD)((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((DWORD)RT_CURSOR + DIFFERENCE)#define RT_GROUP_ICON MAKEINTRESOURCE((DWORD)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)#endif /* !NORESOURCE */WINUSERAPIintWINAPIwvsprintfA(LPSTR,LPCSTR,va_list arglist);WINUSERAPIintWINAPIwvsprintfW(LPWSTR,LPCWSTR,va_list arglist);#ifdef UNICODE#define wvsprintf wvsprintfW#else#define wvsprintf wvsprintfA#endif // !UNICODEWINUSERAPI int WINAPIV wsprintfA(LPSTR, LPCSTR, ...);WINUSERAPI int WINAPIV wsprintfW(LPWSTR, LPCWSTR, ...);#ifdef UNICODE#define wsprintf wsprintfW#else#define wsprintf wsprintfA#endif // !UNICODE#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// begin_r_winuser/** 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// end_r_winuser#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// begin_r_winuser/** 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 */#define VK_BACK 0x08#define VK_TAB 0x09#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 thru VK_9 are the same as ASCII '0' thru '9' (0x30 - 0x39) *//* VK_A thru VK_Z are the same as ASCII 'A' thru 'Z' (0x41 - 0x5A) */#define VK_LWIN 0x5B#define VK_RWIN 0x5C#define VK_APPS 0x5D#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#define VK_NUMLOCK 0x90#define VK_SCROLL 0x91/** 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(WINVER >= 0x0400)#define VK_PROCESSKEY 0xE5#endif /* WINVER >= 0x0400 */#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// end_r_winuser#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#define WH_HARDWARE 8#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 UNICODEtypedef CBT_CREATEWNDW CBT_CREATEWND;typedef LPCBT_CREATEWNDW LPCBT_CREATEWND;#elsetypedef 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;/** 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#if(_WIN32_WINNT >= 0x0500)#define HSHELL_ACCESSIBILITYSTATE 11#define ACCESS_STICKYKEYS 0x0001#define ACCESS_FILTERKEYS 0x0002#define ACCESS_MOUSEKEYS 0x0003#endif /* _WIN32_WINNT >= 0x0500 */#endif /* WINVER >= 0x0400 *//** 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 0x00000001#define LLKHF_INJECTED 0x00000010#define LLKHF_ALTDOWN 0x00000020#define LLKHF_UP 0x00000080#define LLMHF_INJECTED 0x00000001/** Structure used by WH_KEYBOARD_LL*/typedef struct tagKBDLLHOOKSTRUCT {DWORD vkCode;DWORD scanCode;DWORD flags;DWORD time;DWORD dwExtraInfo;} KBDLLHOOKSTRUCT, FAR *LPKBDLLHOOKSTRUCT, *PKBDLLHOOKSTRUCT;/** Structure used by WH_MOUSE_LL*/typedef struct tagMSLLHOOKSTRUCT {POINT pt;DWORD mouseData;DWORD flags;DWORD time;DWORD 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;DWORD dwExtraInfo;} MOUSEHOOKSTRUCT, FAR *LPMOUSEHOOKSTRUCT, *PMOUSEHOOKSTRUCT;#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_UNLOADPREVIOUS 0x00000004#define KLF_REORDER 0x00000008#if(WINVER >= 0x0400)#define KLF_REPLACELANG 0x00000010#define KLF_NOTELLSHELL 0x00000080#endif /* WINVER >= 0x0400 */#define KLF_SETFORPROCESS 0x00000100/** Size of KeyboardLayoutName (number of characters), including nul terminator*/#define KL_NAMELENGTH 9WINUSERAPIHKLWINAPILoadKeyboardLayoutA(LPCSTR pwszKLID,UINT Flags);WINUSERAPIHKLWINAPILoadKeyboardLayoutW(LPCWSTR pwszKLID,UINT Flags);#ifdef UNICODE#define LoadKeyboardLayout LoadKeyboardLayoutW#else#define LoadKeyboardLayout LoadKeyboardLayoutA#endif // !UNICODE#if(WINVER >= 0x0400)WINUSERAPIHKLWINAPIActivateKeyboardLayout(HKL hkl,UINT Flags);#elseWINUSERAPIBOOLWINAPIActivateKeyboardLayout(HKL hkl,UINT Flags);#endif /* WINVER >= 0x0400 */#if(WINVER >= 0x0400)WINUSERAPIintWINAPIToUnicodeEx(UINT wVirtKey,UINT wScanCode,PBYTE lpKeyState,LPWSTR pwszBuff,int cchBuff,UINT wFlags,HKL dwhkl);#endif /* WINVER >= 0x0400 */WINUSERAPIBOOLWINAPIUnloadKeyboardLayout(HKL hkl);WINUSERAPIBOOLWINAPIGetKeyboardLayoutNameA(LPSTR pwszKLID);WINUSERAPIBOOLWINAPIGetKeyboardLayoutNameW(LPWSTR pwszKLID);#ifdef UNICODE#define GetKeyboardLayoutName GetKeyboardLayoutNameW#else#define GetKeyboardLayoutName GetKeyboardLayoutNameA#endif // !UNICODE#if(WINVER >= 0x0400)WINUSERAPIintWINAPIGetKeyboardLayoutList(int nBuff,HKL FAR *lpList);WINUSERAPIHKLWINAPIGetKeyboardLayout(DWORD dwLayout);#endif /* WINVER >= 0x0400 */#if(WINVER >= 0x0500)typedef struct tagMOUSEMOVEPOINT {int x;int y;DWORD time;DWORD dwExtraInfo;} MOUSEMOVEPOINT, *PMOUSEMOVEPOINT, FAR* LPMOUSEMOVEPOINT;/** Values for resolution parameter of GetMouseMovePoints*/#define GMMP_USE_DISPLAY_POINTS 1#define GMMP_USE_DRIVER_POINTS 2WINUSERAPIintWINAPIGetMouseMovePoints(UINT cbSize,LPMOUSEMOVEPOINT lppt,LPMOUSEMOVEPOINT lpptBuf,int nBufPoints,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 NOGDIWINUSERAPIHDESKWINAPICreateDesktopA(LPSTR lpszDesktop,LPSTR lpszDevice,LPDEVMODEA pDevmode,DWORD dwFlags,ACCESS_MASK dwDesiredAccess,LPSECURITY_ATTRIBUTES lpsa);WINUSERAPIHDESKWINAPICreateDesktopW(LPWSTR lpszDesktop,LPWSTR lpszDevice,LPDEVMODEW pDevmode,DWORD dwFlags,ACCESS_MASK dwDesiredAccess,LPSECURITY_ATTRIBUTES lpsa);#ifdef UNICODE#define CreateDesktop CreateDesktopW#else#define CreateDesktop CreateDesktopA#endif // !UNICODE#endif /* NOGDI */#endif /* _WINGDI_ */WINUSERAPIHDESKWINAPIOpenDesktopA(LPSTR lpszDesktop,DWORD dwFlags,BOOL fInherit,ACCESS_MASK dwDesiredAccess);WINUSERAPIHDESKWINAPIOpenDesktopW(LPWSTR lpszDesktop,DWORD dwFlags,BOOL fInherit,ACCESS_MASK dwDesiredAccess);#ifdef UNICODE#define OpenDesktop OpenDesktopW#else#define OpenDesktop OpenDesktopA#endif // !UNICODEWINUSERAPIHDESKWINAPIOpenInputDesktop(DWORD dwFlags,BOOL fInherit,ACCESS_MASK dwDesiredAccess);WINUSERAPIBOOLWINAPIEnumDesktopsA(HWINSTA hwinsta,DESKTOPENUMPROCA lpEnumFunc,LPARAM lParam);WINUSERAPIBOOLWINAPIEnumDesktopsW(HWINSTA hwinsta,DESKTOPENUMPROCW lpEnumFunc,LPARAM lParam);#ifdef UNICODE#define EnumDesktops EnumDesktopsW#else#define EnumDesktops EnumDesktopsA#endif // !UNICODEWINUSERAPIBOOLWINAPIEnumDesktopWindows(HDESK hDesktop,WNDENUMPROC lpfn,LPARAM lParam);WINUSERAPIBOOLWINAPISwitchDesktop(HDESK hDesktop);WINUSERAPIBOOLWINAPISetThreadDesktop(HDESK hDesktop);WINUSERAPIBOOLWINAPICloseDesktop(HDESK hDesktop);WINUSERAPIHDESKWINAPIGetThreadDesktop(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/** Windowstation-specific attribute flags*/#define WSF_VISIBLE 0x0001LWINUSERAPIHWINSTAWINAPICreateWindowStationA(LPSTR lpwinsta,DWORD dwReserved,ACCESS_MASK dwDesiredAccess,LPSECURITY_ATTRIBUTES lpsa);WINUSERAPIHWINSTAWINAPICreateWindowStationW(LPWSTR lpwinsta,DWORD dwReserved,ACCESS_MASK dwDesiredAccess,LPSECURITY_ATTRIBUTES lpsa);#ifdef UNICODE#define CreateWindowStation CreateWindowStationW#else#define CreateWindowStation CreateWindowStationA#endif // !UNICODEWINUSERAPIHWINSTAWINAPIOpenWindowStationA(LPSTR lpszWinSta,BOOL fInherit,ACCESS_MASK dwDesiredAccess);WINUSERAPIHWINSTAWINAPIOpenWindowStationW(LPWSTR lpszWinSta,BOOL fInherit,ACCESS_MASK dwDesiredAccess);#ifdef UNICODE#define OpenWindowStation OpenWindowStationW#else#define OpenWindowStation OpenWindowStationA#endif // !UNICODEWINUSERAPIBOOLWINAPIEnumWindowStationsA(WINSTAENUMPROCA lpEnumFunc,LPARAM lParam);WINUSERAPIBOOLWINAPIEnumWindowStationsW(WINSTAENUMPROCW lpEnumFunc,LPARAM lParam);#ifdef UNICODE#define EnumWindowStations EnumWindowStationsW#else#define EnumWindowStations EnumWindowStationsA#endif // !UNICODEWINUSERAPIBOOLWINAPICloseWindowStation(HWINSTA hWinSta);WINUSERAPIBOOLWINAPISetProcessWindowStation(HWINSTA hWinSta);WINUSERAPIHWINSTAWINAPIGetProcessWindowStation(VOID);#endif /* !NOWINDOWSTATION */#ifndef NOSECURITYWINUSERAPIBOOLWINAPISetUserObjectSecurity(HANDLE hObj,PSECURITY_INFORMATION pSIRequested,PSECURITY_DESCRIPTOR pSID);WINUSERAPIBOOLWINAPIGetUserObjectSecurity(HANDLE hObj,PSECURITY_INFORMATION pSIRequested,PSECURITY_DESCRIPTOR pSID,DWORD nLength,LPDWORD lpnLengthNeeded);#define UOI_FLAGS 1#define UOI_NAME 2#define UOI_TYPE 3#define UOI_USER_SID 4typedef struct tagUSEROBJECTFLAGS {BOOL fInherit;BOOL fReserved;DWORD dwFlags;} USEROBJECTFLAGS, *PUSEROBJECTFLAGS;WINUSERAPIBOOLWINAPIGetUserObjectInformationA(HANDLE hObj,int nIndex,PVOID pvInfo,DWORD nLength,LPDWORD lpnLengthNeeded);WINUSERAPIBOOLWINAPIGetUserObjectInformationW(HANDLE hObj,int nIndex,PVOID pvInfo,DWORD nLength,LPDWORD lpnLengthNeeded);#ifdef UNICODE#define GetUserObjectInformation GetUserObjectInformationW#else#define GetUserObjectInformation GetUserObjectInformationA#endif // !UNICODEWINUSERAPIBOOLWINAPISetUserObjectInformationA(HANDLE hObj,int nIndex,PVOID pvInfo,DWORD nLength);WINUSERAPIBOOLWINAPISetUserObjectInformationW(HANDLE hObj,int nIndex,PVOID pvInfo,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 UNICODEtypedef WNDCLASSEXW WNDCLASSEX;typedef PWNDCLASSEXW PWNDCLASSEX;typedef NPWNDCLASSEXW NPWNDCLASSEX;typedef LPWNDCLASSEXW LPWNDCLASSEX;#elsetypedef 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 UNICODEtypedef WNDCLASSW WNDCLASS;typedef PWNDCLASSW PWNDCLASS;typedef NPWNDCLASSW NPWNDCLASS;typedef LPWNDCLASSW LPWNDCLASS;#elsetypedef WNDCLASSA WNDCLASS;typedef PWNDCLASSA PWNDCLASS;typedef NPWNDCLASSA NPWNDCLASS;typedef LPWNDCLASSA LPWNDCLASS;#endif // UNICODE#ifndef NOMSG/** Message structure*/typedef struct tagMSG {HWND hwnd;UINT message;WPARAM wParam;LPARAM lParam;DWORD time;POINT pt;#ifdef _MACDWORD 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)MAKELONG(l, h)#define MAKELPARAM(l, h) (LPARAM)MAKELONG(l, h)#define MAKELRESULT(l, h) (LRESULT)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)/** 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 */#endif /* !NOWINOFFSETS */#ifndef NOWINMESSAGES// begin_r_winuser/** 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#define WM_QUERYENDSESSION 0x0011#define WM_QUIT 0x0012#define WM_QUERYOPEN 0x0013#define WM_ERASEBKGND 0x0014#define WM_SYSCOLORCHANGE 0x0015#define WM_ENDSESSION 0x0016#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// end_r_winuser/** Struct pointed to by WM_GETMINMAXINFO lParam*/typedef struct tagMINMAXINFO {POINT ptReserved;POINT ptMaxSize;POINT ptMaxPosition;POINT ptMinTrackSize;POINT ptMaxTrackSize;} MINMAXINFO, *PMINMAXINFO, *LPMINMAXINFO;// begin_r_winuser#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)#define WM_GETOBJECT 0x003D#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// end_r_winuser/** lParam of WM_COPYDATA message points to...*/typedef struct tagCOPYDATASTRUCT {DWORD dwData;DWORD cbData;PVOID lpData;} COPYDATASTRUCT, *PCOPYDATASTRUCT;// begin_r_winuser#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#define WM_SYNCPAINT 0x0088#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#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#define WM_KEYLAST 0x0108#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)#define WM_MENURBUTTONUP 0x0122#define WM_MENUDRAG 0x0123#define WM_MENUGETOBJECT 0x0124#define WM_UNINITMENUPOPUP 0x0125#define WM_MENUCOMMAND 0x0126#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 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#define WM_MOUSELAST 0x020A#else#define WM_MOUSELAST 0x0209#endif /* if (_WIN32_WINNT < 0x0400) */#if(_WIN32_WINNT >= 0x0400)#define WHEEL_DELTA 120 /* Value for rolling one detent */#endif /* _WIN32_WINNT >= 0x0400 */#if(_WIN32_WINNT >= 0x0400)#define WHEEL_PAGESCROLL (UINT_MAX) /* Scroll one page */#endif /* _WIN32_WINNT >= 0x0400 */#define WM_PARENTNOTIFY 0x0210#define WM_ENTERMENULOOP 0x0211#define WM_EXITMENULOOP 0x0212#if(WINVER >= 0x0400)#define WM_NEXTMENU 0x0213// end_r_winusertypedef struct tagMDINEXTMENU{HMENU hmenuIn;HMENU hmenuNext;HWND hwndNext;} MDINEXTMENU, * PMDINEXTMENU, FAR * LPMDINEXTMENU;// begin_r_winuser#define WM_SIZING 0x0214#define WM_CAPTURECHANGED 0x0215#define WM_MOVING 0x0216// end_r_winuser#define WM_POWERBROADCAST 0x0218 // r_winuser pbt// begin_pbt#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// end_pbt// begin_r_winuser#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)#define WM_MOUSEHOVER 0x02A1#define WM_MOUSELEAVE 0x02A3#endif /* _WIN32_WINNT >= 0x0400 */#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#define WM_HANDHELDFIRST 0x0358#define WM_HANDHELDLAST 0x035F#define WM_AFXFIRST 0x0360#define WM_AFXLAST 0x037F#endif /* WINVER >= 0x0400 */#define WM_PENWINFIRST 0x0380#define WM_PENWINLAST 0x038F#if(WINVER >= 0x0400)#define WM_APP 0x8000#endif /* WINVER >= 0x0400 *//** NOTE: All Message Numbers below 0x0400 are RESERVED.** Private Window Messages Start Here:*/#define WM_USER 0x0400#if(WINVER >= 0x0400)/* wParam for WM_SIZING message */#define WMSZ_LEFT 1#define WMSZ_RIGHT 2#define WMSZ_TOP 3#define WMSZ_TOPLEFT 4#define WMSZ_TOPRIGHT 5#define WMSZ_BOTTOM 6#define WMSZ_BOTTOMLEFT 7#define WMSZ_BOTTOMRIGHT 8#endif /* WINVER >= 0x0400 */#ifndef NONCMESSAGES/** WM_NCHITTEST and MOUSEHOOKSTRUCT Mouse Position Codes*/#define HTERROR (-2)#define HTTRANSPARENT (-1)#define HTNOWHERE 0#define HTCLIENT 1#define HTCAPTION 2#define HTSYSMENU 3#define HTGROWBOX 4#define HTSIZE HTGROWBOX#define HTMENU 5#define HTHSCROLL 6#define HTVSCROLL 7#define HTMINBUTTON 8#define HTMAXBUTTON 9#define HTLEFT 10#define HTRIGHT 11#define HTTOP 12#define HTTOPLEFT 13#define HTTOPRIGHT 14#define HTBOTTOM 15#define HTBOTTOMLEFT 16#define HTBOTTOMRIGHT 17#define HTBORDER 18#define HTREDUCE HTMINBUTTON#define HTZOOM HTMAXBUTTON#define HTSIZEFIRST HTLEFT#define HTSIZELAST HTBOTTOMRIGHT#if(WINVER >= 0x0400)#define HTOBJECT 19#define HTCLOSE 20#define HTHELP 21#endif /* WINVER >= 0x0400 *//** SendMessageTimeout values*/#define SMTO_NORMAL 0x0000#define SMTO_BLOCK 0x0001#define SMTO_ABORTIFHUNG 0x0002#if(WINVER >= 0x0500)#define SMTO_NOTIMEOUTIFNOTHUNG 0x0008#endif /* WINVER >= 0x0500 */#endif /* !NONCMESSAGES *//** WM_MOUSEACTIVATE Return Codes*/#define MA_ACTIVATE 1#define MA_ACTIVATEANDEAT 2#define MA_NOACTIVATE 3#define MA_NOACTIVATEANDEAT 4/** WM_SETICON / WM_GETICON Type Codes*/#define ICON_SMALL 0#define ICON_BIG 1// end_r_winuserWINUSERAPIUINTWINAPIRegisterWindowMessageA(LPCSTR lpString);WINUSERAPIUINTWINAPIRegisterWindowMessageW(LPCWSTR lpString);#ifdef UNICODE#define RegisterWindowMessage RegisterWindowMessageW#else#define RegisterWindowMessage RegisterWindowMessageA#endif // !UNICODE// begin_r_winuser/** WM_SIZE message wParam values*/#define SIZE_RESTORED 0#define SIZE_MINIMIZED 1#define SIZE_MAXIMIZED 2#define SIZE_MAXSHOW 3#define SIZE_MAXHIDE 4/** Obsolete constant names*/#define SIZENORMAL SIZE_RESTORED#define SIZEICONIC SIZE_MINIMIZED#define SIZEFULLSCREEN SIZE_MAXIMIZED#define SIZEZOOMSHOW SIZE_MAXSHOW#define SIZEZOOMHIDE SIZE_MAXHIDE// end_r_winuser/** WM_WINDOWPOSCHANGING/CHANGED struct pointed to by lParam*/typedef struct tagWINDOWPOS {HWND hwnd;HWND hwndInsertAfter;int x;int y;int cx;int cy;UINT flags;} WINDOWPOS, *LPWINDOWPOS, *PWINDOWPOS;/** WM_NCCALCSIZE parameter structure*/typedef struct tagNCCALCSIZE_PARAMS {RECT rgrc[3];PWINDOWPOS lppos;} NCCALCSIZE_PARAMS, *LPNCCALCSIZE_PARAMS;// begin_r_winuser/** WM_NCCALCSIZE "window valid rect" return values*/#define WVR_ALIGNTOP 0x0010#define WVR_ALIGNLEFT 0x0020#define WVR_ALIGNBOTTOM 0x0040#define WVR_ALIGNRIGHT 0x0080#define WVR_HREDRAW 0x0100#define WVR_VREDRAW 0x0200#define WVR_REDRAW (WVR_HREDRAW | \WVR_VREDRAW)#define WVR_VALIDRECTS 0x0400#ifndef NOKEYSTATES/** Key State Masks for Mouse Messages*/#define MK_LBUTTON 0x0001#define MK_RBUTTON 0x0002#define MK_SHIFT 0x0004#define MK_CONTROL 0x0008#define MK_MBUTTON 0x0010#endif /* !NOKEYSTATES */#if(_WIN32_WINNT >= 0x0400)#ifndef NOTRACKMOUSEEVENT#define TME_HOVER 0x00000001#define TME_LEAVE 0x00000002#define TME_QUERY 0x40000000#define TME_CANCEL 0x80000000#define HOVER_DEFAULT 0xFFFFFFFF// end_r_winusertypedef struct tagTRACKMOUSEEVENT {DWORD cbSize;DWORD dwFlags;HWND hwndTrack;DWORD dwHoverTime;} TRACKMOUSEEVENT, *LPTRACKMOUSEEVENT;WINUSERAPIBOOLWINAPITrackMouseEvent(LPTRACKMOUSEEVENT lpEventTrack);// begin_r_winuser#endif /* !NOTRACKMOUSEEVENT */#endif /* _WIN32_WINNT >= 0x0400 */// end_r_winuser#endif /* !NOWINMESSAGES */#ifndef NOWINSTYLES// begin_r_winuser/** 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#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 *//** 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// end_r_winuser#endif /* !NOWINSTYLES */#if(WINVER >= 0x0400)/* WM_PRINT flags */#define PRF_CHECKVISIBLE 0x00000001L#define PRF_NONCLIENT 0x00000002L#define PRF_CLIENT 0x00000004L#define PRF_ERASEBKGND 0x00000008L#define PRF_CHILDREN 0x00000010L#define PRF_OWNED 0x00000020L/* 3D border styles */#define BDR_RAISEDOUTER 0x0001#define BDR_SUNKENOUTER 0x0002#define BDR_RAISEDINNER 0x0004#define BDR_SUNKENINNER 0x0008#define BDR_OUTER 0x0003#define BDR_INNER 0x000c#define EDGE_RAISED (BDR_RAISEDOUTER | BDR_RAISEDINNER)#define EDGE_SUNKEN (BDR_SUNKENOUTER | BDR_SUNKENINNER)#define EDGE_ETCHED (BDR_SUNKENOUTER | BDR_RAISEDINNER)#define EDGE_BUMP (BDR_RAISEDOUTER | BDR_SUNKENINNER)/* Border flags */#define BF_LEFT 0x0001#define BF_TOP 0x0002#define BF_RIGHT 0x0004#define BF_BOTTOM 0x0008#define BF_TOPLEFT (BF_TOP | BF_LEFT)#define BF_TOPRIGHT (BF_TOP | BF_RIGHT)#define BF_BOTTOMLEFT (BF_BOTTOM | BF_LEFT)#define BF_BOTTOMRIGHT (BF_BOTTOM | BF_RIGHT)#define BF_RECT (BF_LEFT | BF_TOP | BF_RIGHT | BF_BOTTOM)#define BF_DIAGONAL 0x0010// For diagonal lines, the BF_RECT flags specify the end point of the// vector bounded by the rectangle parameter.#define BF_DIAGONAL_ENDTOPRIGHT (BF_DIAGONAL | BF_TOP | BF_RIGHT)#define BF_DIAGONAL_ENDTOPLEFT (BF_DIAGONAL | BF_TOP | BF_LEFT)#define BF_DIAGONAL_ENDBOTTOMLEFT (BF_DIAGONAL | BF_BOTTOM | BF_LEFT)#define BF_DIAGONAL_ENDBOTTOMRIGHT (BF_DIAGONAL | BF_BOTTOM | BF_RIGHT)#define BF_MIDDLE 0x0800 /* Fill in the middle */#define BF_SOFT 0x1000 /* For softer buttons */#define BF_ADJUST 0x2000 /* Calculate the space left over */#define BF_FLAT 0x4000 /* For flat rather than 3D borders */#define BF_MONO 0x8000 /* For monochrome borders */WINUSERAPIBOOLWINAPIDrawEdge(HDC hdc, LPRECT qrc, UINT edge, UINT grfFlags);/* flags for DrawFrameControl */#define DFC_CAPTION 1#define DFC_MENU 2#define DFC_SCROLL 3#define DFC_BUTTON 4#if(WINVER >= 0x0500)#define DFC_POPUPMENU 5#endif /* WINVER >= 0x0500 */#define DFCS_CAPTIONCLOSE 0x0000#define DFCS_CAPTIONMIN 0x0001#define DFCS_CAPTIONMAX 0x0002#define DFCS_CAPTIONRESTORE 0x0003#define DFCS_CAPTIONHELP 0x0004#define DFCS_MENUARROW 0x0000#define DFCS_MENUCHECK 0x0001#define DFCS_MENUBULLET 0x0002#define DFCS_MENUARROWRIGHT 0x0004#define DFCS_SCROLLUP 0x0000#define DFCS_SCROLLDOWN 0x0001#define DFCS_SCROLLLEFT 0x0002#define DFCS_SCROLLRIGHT 0x0003#define DFCS_SCROLLCOMBOBOX 0x0005#define DFCS_SCROLLSIZEGRIP 0x0008#define DFCS_SCROLLSIZEGRIPRIGHT 0x0010#define DFCS_BUTTONCHECK 0x0000#define DFCS_BUTTONRADIOIMAGE 0x0001#define DFCS_BUTTONRADIOMASK 0x0002#define DFCS_BUTTONRADIO 0x0004#define DFCS_BUTTON3STATE 0x0008#define DFCS_BUTTONPUSH 0x0010#define DFCS_INACTIVE 0x0100#define DFCS_PUSHED 0x0200#define DFCS_CHECKED 0x0400#if(WINVER >= 0x0500)#define DFCS_TRANSPARENT 0x0800#define DFCS_HOT 0x1000#endif /* WINVER >= 0x0500 */#define DFCS_ADJUSTRECT 0x2000#define DFCS_FLAT 0x4000#define DFCS_MONO 0x8000WINUSERAPIBOOLWINAPIDrawFrameControl(HDC, LPRECT, UINT, UINT);/* flags for DrawCaption */#define DC_ACTIVE 0x0001#define DC_SMALLCAP 0x0002#define DC_ICON 0x0004#define DC_TEXT 0x0008#define DC_INBUTTON 0x0010#if(WINVER >= 0x0500)#define DC_GRADIENT 0x0020#endif /* WINVER >= 0x0500 */WINUSERAPIBOOLWINAPIDrawCaption(HWND, HDC, CONST RECT *, UINT);#define IDANI_OPEN 1#define IDANI_CLOSE 2#define IDANI_CAPTION 3WINUSERAPIBOOLWINAPIDrawAnimatedRects(HWND hwnd, int idAni, CONST RECT * lprcFrom, CONST RECT * lprcTo);#endif /* WINVER >= 0x0400 */#ifndef NOCLIPBOARD// begin_r_winuser/** Predefined Clipboard Formats*/#define CF_TEXT 1#define CF_BITMAP 2#define CF_METAFILEPICT 3#define CF_SYLK 4#define CF_DIF 5#define CF_TIFF 6#define CF_OEMTEXT 7#define CF_DIB 8#define CF_PALETTE 9#define CF_PENDATA 10#define CF_RIFF 11#define CF_WAVE 12#define CF_UNICODETEXT 13#define CF_ENHMETAFILE 14#if(WINVER >= 0x0400)#define CF_HDROP 15#define CF_LOCALE 16#define CF_MAX 17#endif /* WINVER >= 0x0400 */#define CF_OWNERDISPLAY 0x0080#define CF_DSPTEXT 0x0081#define CF_DSPBITMAP 0x0082#define CF_DSPMETAFILEPICT 0x0083#define CF_DSPENHMETAFILE 0x008E/** "Private" formats don't get GlobalFree()'d*/#define CF_PRIVATEFIRST 0x0200#define CF_PRIVATELAST 0x02FF/** "GDIOBJ" formats do get DeleteObject()'d*/#define CF_GDIOBJFIRST 0x0300#define CF_GDIOBJLAST 0x03FF// end_r_winuser#endif /* !NOCLIPBOARD *//** Defines for the fVirt field of the Accelerator table structure.*/#define FVIRTKEY TRUE /* Assumed to be == TRUE */#define FNOINVERT 0x02#define FSHIFT 0x04#define FCONTROL 0x08#define FALT 0x10typedef struct tagACCEL {#ifndef _MACBYTE fVirt; /* Also called the flags field */WORD key;WORD cmd;#elseWORD fVirt; /* Also called the flags field */WORD key;DWORD cmd;#endif} ACCEL, *LPACCEL;typedef struct tagPAINTSTRUCT {HDC hdc;BOOL fErase;RECT rcPaint;BOOL fRestore;BOOL fIncUpdate;BYTE rgbReserved[32];} PAINTSTRUCT, *PPAINTSTRUCT, *NPPAINTSTRUCT, *LPPAINTSTRUCT;typedef struct tagCREATESTRUCTA {LPVOID lpCreateParams;HINSTANCE hInstance;HMENU hMenu;HWND hwndParent;int cy;int cx;int y;int x;LONG style;LPCSTR lpszName;LPCSTR lpszClass;DWORD dwExStyle;} CREATESTRUCTA, *LPCREATESTRUCTA;typedef struct tagCREATESTRUCTW {LPVOID lpCreateParams;HINSTANCE hInstance;HMENU hMenu;HWND hwndParent;int cy;int cx;int y;int x;LONG style;LPCWSTR lpszName;LPCWSTR lpszClass;DWORD dwExStyle;} CREATESTRUCTW, *LPCREATESTRUCTW;#ifdef UNICODEtypedef CREATESTRUCTW CREATESTRUCT;typedef LPCREATESTRUCTW LPCREATESTRUCT;#elsetypedef CREATESTRUCTA CREATESTRUCT;typedef LPCREATESTRUCTA LPCREATESTRUCT;#endif // UNICODEtypedef struct tagWINDOWPLACEMENT {UINT length;UINT flags;UINT showCmd;POINT ptMinPosition;POINT ptMaxPosition;RECT rcNormalPosition;#ifdef _MACRECT rcDevice;#endif} WINDOWPLACEMENT;typedef WINDOWPLACEMENT *PWINDOWPLACEMENT, *LPWINDOWPLACEMENT;#define WPF_SETMINPOSITION 0x0001#define WPF_RESTORETOMAXIMIZED 0x0002#if(WINVER >= 0x0400)typedef struct tagNMHDR{HWND hwndFrom;UINT idFrom;UINT code; // NM_ code} NMHDR;typedef NMHDR FAR * LPNMHDR;typedef struct tagSTYLESTRUCT{DWORD styleOld;DWORD styleNew;} STYLESTRUCT, * LPSTYLESTRUCT;#endif /* WINVER >= 0x0400 *//** Owner draw control types*/#define ODT_MENU 1#define ODT_LISTBOX 2#define ODT_COMBOBOX 3#define ODT_BUTTON 4#if(WINVER >= 0x0400)#define ODT_STATIC 5#endif /* WINVER >= 0x0400 *//** Owner draw actions*/#define ODA_DRAWENTIRE 0x0001#define ODA_SELECT 0x0002#define ODA_FOCUS 0x0004/** Owner draw state*/#define ODS_SELECTED 0x0001#define ODS_GRAYED 0x0002#define ODS_DISABLED 0x0004#define ODS_CHECKED 0x0008#define ODS_FOCUS 0x0010#if(WINVER >= 0x0400)#define ODS_DEFAULT 0x0020#define ODS_COMBOBOXEDIT 0x1000#endif /* WINVER >= 0x0400 */#if(WINVER >= 0x0500)#define ODS_HOTLIGHT 0x0040#define ODS_INACTIVE 0x0080#endif /* WINVER >= 0x0500 *//** MEASUREITEMSTRUCT for ownerdraw*/typedef struct tagMEASUREITEMSTRUCT {UINT CtlType;UINT CtlID;UINT itemID;UINT itemWidth;UINT itemHeight;DWORD itemData;} MEASUREITEMSTRUCT, NEAR *PMEASUREITEMSTRUCT, FAR *LPMEASUREITEMSTRUCT;/** DRAWITEMSTRUCT for ownerdraw*/typedef struct tagDRAWITEMSTRUCT {UINT CtlType;UINT CtlID;UINT itemID;UINT itemAction;UINT itemState;HWND hwndItem;HDC hDC;RECT rcItem;DWORD itemData;} DRAWITEMSTRUCT, NEAR *PDRAWITEMSTRUCT, FAR *LPDRAWITEMSTRUCT;/** DELETEITEMSTRUCT for ownerdraw*/typedef struct tagDELETEITEMSTRUCT {UINT CtlType;UINT CtlID;UINT itemID;HWND hwndItem;UINT itemData;} DELETEITEMSTRUCT, NEAR *PDELETEITEMSTRUCT, FAR *LPDELETEITEMSTRUCT;/** COMPAREITEMSTUCT for ownerdraw sorting*/typedef struct tagCOMPAREITEMSTRUCT {UINT CtlType;UINT CtlID;HWND hwndItem;UINT itemID1;DWORD itemData1;UINT itemID2;DWORD itemData2;DWORD dwLocaleId;} COMPAREITEMSTRUCT, NEAR *PCOMPAREITEMSTRUCT, FAR *LPCOMPAREITEMSTRUCT;#ifndef NOMSG/** Message Function Templates*/WINUSERAPIBOOLWINAPIGetMessageA(LPMSG lpMsg,HWND hWnd ,UINT wMsgFilterMin,UINT wMsgFilterMax);WINUSERAPIBOOLWINAPIGetMessageW(LPMSG lpMsg,HWND hWnd ,UINT wMsgFilterMin,UINT wMsgFilterMax);#ifdef UNICODE#define GetMessage GetMessageW#else#define GetMessage GetMessageA#endif // !UNICODEWINUSERAPIBOOLWINAPITranslateMessage(CONST MSG *lpMsg);WINUSERAPILONGWINAPIDispatchMessageA(CONST MSG *lpMsg);WINUSERAPILONGWINAPIDispatchMessageW(CONST MSG *lpMsg);#ifdef UNICODE#define DispatchMessage DispatchMessageW#else#define DispatchMessage DispatchMessageA#endif // !UNICODEWINUSERAPIBOOLWINAPISetMessageQueue(int cMessagesMax);WINUSERAPIBOOLWINAPIPeekMessageA(LPMSG lpMsg,HWND hWnd ,UINT wMsgFilterMin,UINT wMsgFilterMax,UINT wRemoveMsg);WINUSERAPIBOOLWINAPIPeekMessageW(LPMSG lpMsg,HWND hWnd ,UINT wMsgFilterMin,UINT wMsgFilterMax,UINT wRemoveMsg);#ifdef UNICODE#define PeekMessage PeekMessageW#else#define PeekMessage PeekMessageA#endif // !UNICODE/** PeekMessage() Options*/#define PM_NOREMOVE 0x0000#define PM_REMOVE 0x0001#define PM_NOYIELD 0x0002#endif /* !NOMSG */WINUSERAPIBOOLWINAPIRegisterHotKey(HWND hWnd ,int id,UINT fsModifiers,UINT vk);WINUSERAPIBOOLWINAPIUnregisterHotKey(HWND hWnd,int id);#define MOD_ALT 0x0001#define MOD_CONTROL 0x0002#define MOD_SHIFT 0x0004#define MOD_WIN 0x0008#define IDHOT_SNAPWINDOW (-1) /* SHIFT-PRINTSCRN */#define IDHOT_SNAPDESKTOP (-2) /* PRINTSCRN */#ifdef WIN_INTERNAL#ifndef LSTRING#define NOLSTRING#endif /* LSTRING */#ifndef LFILEIO#define NOLFILEIO#endif /* LFILEIO */#endif /* WIN_INTERNAL */#if(WINVER >= 0x0400)#define ENDSESSION_LOGOFF 0x80000000#endif /* WINVER >= 0x0400 */#define EWX_LOGOFF 0#define EWX_SHUTDOWN 0x00000001#define EWX_REBOOT 0x00000002#define EWX_FORCE 0x00000004#define EWX_POWEROFF 0x00000008#if(_WIN32_WINNT >= 0x0500)#define EWX_FORCEIFHUNG 0x00000010#endif /* _WIN32_WINNT >= 0x0500 */#define ExitWindows(dwReserved, Code) ExitWindowsEx(EWX_LOGOFF, 0xFFFFFFFF)WINUSERAPIBOOLWINAPIExitWindowsEx(UINT uFlags,DWORD dwReserved);WINUSERAPIBOOLWINAPISwapMouseButton(BOOL fSwap);WINUSERAPIDWORDWINAPIGetMessagePos(VOID);WINUSERAPILONGWINAPIGetMessageTime(VOID);WINUSERAPILONGWINAPIGetMessageExtraInfo(VOID);#if(WINVER >= 0x0400)WINUSERAPILPARAMWINAPISetMessageExtraInfo(LPARAM lParam);#endif /* WINVER >= 0x0400 */WINUSERAPILRESULTWINAPISendMessageA(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);WINUSERAPILRESULTWINAPISendMessageW(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);#ifdef UNICODE#define SendMessage SendMessageW#else#define SendMessage SendMessageA#endif // !UNICODEWINUSERAPILRESULTWINAPISendMessageTimeoutA(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam,UINT fuFlags,UINT uTimeout,LPDWORD lpdwResult);WINUSERAPILRESULTWINAPISendMessageTimeoutW(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam,UINT fuFlags,UINT uTimeout,LPDWORD lpdwResult);#ifdef UNICODE#define SendMessageTimeout SendMessageTimeoutW#else#define SendMessageTimeout SendMessageTimeoutA#endif // !UNICODEWINUSERAPIBOOLWINAPISendNotifyMessageA(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);WINUSERAPIBOOLWINAPISendNotifyMessageW(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);#ifdef UNICODE#define SendNotifyMessage SendNotifyMessageW#else#define SendNotifyMessage SendNotifyMessageA#endif // !UNICODEWINUSERAPIBOOLWINAPISendMessageCallbackA(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam,SENDASYNCPROC lpResultCallBack,DWORD dwData);WINUSERAPIBOOLWINAPISendMessageCallbackW(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam,SENDASYNCPROC lpResultCallBack,DWORD dwData);#ifdef UNICODE#define SendMessageCallback SendMessageCallbackW#else#define SendMessageCallback SendMessageCallbackA#endif // !UNICODE#if(WINVER >= 0x0400)#if defined(_WIN32_WINNT)WINUSERAPI long WINAPI BroadcastSystemMessageA(DWORD, LPDWORD, UINT, WPARAM, LPARAM);WINUSERAPI long WINAPI BroadcastSystemMessageW(DWORD, LPDWORD, UINT, WPARAM, LPARAM);#ifdef UNICODE#define BroadcastSystemMessage BroadcastSystemMessageW#else#define BroadcastSystemMessage BroadcastSystemMessageA#endif // !UNICODE#elif defined(_WIN32_WINDOWS)// The Win95 version isn't A/W decoratedWINUSERAPI long WINAPI BroadcastSystemMessage(DWORD, LPDWORD, UINT, WPARAM, LPARAM);#endif//Broadcast Special Message Recipient list#define BSM_ALLCOMPONENTS 0x00000000#define BSM_VXDS 0x00000001#define BSM_NETDRIVER 0x00000002#define BSM_INSTALLABLEDRIVERS 0x00000004#define BSM_APPLICATIONS 0x00000008#define BSM_ALLDESKTOPS 0x00000010//Broadcast Special Message Flags#define BSF_QUERY 0x00000001#define BSF_IGNORECURRENTTASK 0x00000002#define BSF_FLUSHDISK 0x00000004#define BSF_NOHANG 0x00000008#define BSF_POSTMESSAGE 0x00000010#define BSF_FORCEIFHUNG 0x00000020#define BSF_NOTIMEOUTIFNOTHUNG 0x00000040#define BROADCAST_QUERY_DENY 0x424D5144 // Return this value to deny a query.#endif /* WINVER >= 0x0400 */// RegisterDeviceNotification#if(WINVER >= 0x0500)typedef PVOID HDEVNOTIFY;typedef HDEVNOTIFY *PHDEVNOTIFY;#define DEVICE_NOTIFY_WINDOW_HANDLE 0x00000000WINUSERAPIHDEVNOTIFYWINAPIRegisterDeviceNotificationA(IN HANDLE hRecipient,IN LPVOID NotificationFilter,IN DWORD Flags);WINUSERAPIHDEVNOTIFYWINAPIRegisterDeviceNotificationW(IN HANDLE hRecipient,IN LPVOID NotificationFilter,IN DWORD Flags);#ifdef UNICODE#define RegisterDeviceNotification RegisterDeviceNotificationW#else#define RegisterDeviceNotification RegisterDeviceNotificationA#endif // !UNICODEWINUSERAPIBOOLWINAPIUnregisterDeviceNotification(IN HDEVNOTIFY Handle);#endif /* WINVER >= 0x0500 */WINUSERAPIBOOLWINAPIPostMessageA(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);WINUSERAPIBOOLWINAPIPostMessageW(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);#ifdef UNICODE#define PostMessage PostMessageW#else#define PostMessage PostMessageA#endif // !UNICODEWINUSERAPIBOOLWINAPIPostThreadMessageA(DWORD idThread,UINT Msg,WPARAM wParam,LPARAM lParam);WINUSERAPIBOOLWINAPIPostThreadMessageW(DWORD idThread,UINT Msg,WPARAM wParam,LPARAM lParam);#ifdef UNICODE#define PostThreadMessage PostThreadMessageW#else#define PostThreadMessage PostThreadMessageA#endif // !UNICODE#define PostAppMessageA(idThread, wMsg, wParam, lParam)\PostThreadMessageA((DWORD)idThread, wMsg, wParam, lParam)#define PostAppMessageW(idThread, wMsg, wParam, lParam)\PostThreadMessageW((DWORD)idThread, wMsg, wParam, lParam)#ifdef UNICODE#define PostAppMessage PostAppMessageW#else#define PostAppMessage PostAppMessageA#endif // !UNICODE/** Special HWND value for use with PostMessage() and SendMessage()*/#define HWND_BROADCAST ((HWND)0xffff)#if(WINVER >= 0x0500)#define HWND_MESSAGE ((HWND)-3)#endif /* WINVER >= 0x0500 */WINUSERAPIBOOLWINAPIAttachThreadInput(DWORD idAttach,DWORD idAttachTo,BOOL fAttach);WINUSERAPIBOOLWINAPIReplyMessage(LRESULT lResult);WINUSERAPIBOOLWINAPIWaitMessage(VOID);WINUSERAPIDWORDWINAPIWaitForInputIdle(HANDLE hProcess,DWORD dwMilliseconds);WINUSERAPI#ifndef _MACLRESULTWINAPI#elseLRESULTCALLBACK#endifDefWindowProcA(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);WINUSERAPI#ifndef _MACLRESULTWINAPI#elseLRESULTCALLBACK#endifDefWindowProcW(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);#ifdef UNICODE#define DefWindowProc DefWindowProcW#else#define DefWindowProc DefWindowProcA#endif // !UNICODEWINUSERAPIVOIDWINAPIPostQuitMessage(int nExitCode);#ifdef STRICTWINUSERAPILRESULTWINAPICallWindowProcA(WNDPROC lpPrevWndFunc,HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);WINUSERAPILRESULTWINAPICallWindowProcW(WNDPROC lpPrevWndFunc,HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);#ifdef UNICODE#define CallWindowProc CallWindowProcW#else#define CallWindowProc CallWindowProcA#endif // !UNICODE#else /* !STRICT */WINUSERAPILRESULTWINAPICallWindowProcA(FARPROC lpPrevWndFunc,HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);WINUSERAPILRESULTWINAPICallWindowProcW(FARPROC lpPrevWndFunc,HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);#ifdef UNICODE#define CallWindowProc CallWindowProcW#else#define CallWindowProc CallWindowProcA#endif // !UNICODE#endif /* !STRICT */WINUSERAPIBOOLWINAPIInSendMessage(VOID);#if(WINVER >= 0x0500)WINUSERAPIDWORDWINAPIInSendMessageEx(LPVOID lpReserved);/** InSendMessageEx return value*/#define ISMEX_NOSEND 0x00000000#define ISMEX_SEND 0x00000001#define ISMEX_NOTIFY 0x00000002#define ISMEX_CALLBACK 0x00000004#define ISMEX_REPLIED 0x00000008#endif /* WINVER >= 0x0500 */WINUSERAPIUINTWINAPIGetDoubleClickTime(VOID);WINUSERAPIBOOLWINAPISetDoubleClickTime(UINT);WINUSERAPIATOMWINAPIRegisterClassA(CONST WNDCLASSA *lpWndClass);WINUSERAPIATOMWINAPIRegisterClassW(CONST WNDCLASSW *lpWndClass);#ifdef UNICODE#define RegisterClass RegisterClassW#else#define RegisterClass RegisterClassA#endif // !UNICODEWINUSERAPIBOOLWINAPIUnregisterClassA(LPCSTR lpClassName,HINSTANCE hInstance);WINUSERAPIBOOLWINAPIUnregisterClassW(LPCWSTR lpClassName,HINSTANCE hInstance);#ifdef UNICODE#define UnregisterClass UnregisterClassW#else#define UnregisterClass UnregisterClassA#endif // !UNICODEWINUSERAPIBOOLWINAPIGetClassInfoA(HINSTANCE hInstance ,LPCSTR lpClassName,LPWNDCLASSA lpWndClass);WINUSERAPIBOOLWINAPIGetClassInfoW(HINSTANCE hInstance ,LPCWSTR lpClassName,LPWNDCLASSW lpWndClass);#ifdef UNICODE#define GetClassInfo GetClassInfoW#else#define GetClassInfo GetClassInfoA#endif // !UNICODE#if(WINVER >= 0x0400)WINUSERAPIATOMWINAPIRegisterClassExA(CONST WNDCLASSEXA *);WINUSERAPIATOMWINAPIRegisterClassExW(CONST WNDCLASSEXW *);#ifdef UNICODE#define RegisterClassEx RegisterClassExW#else#define RegisterClassEx RegisterClassExA#endif // !UNICODEWINUSERAPIBOOLWINAPIGetClassInfoExA(HINSTANCE, LPCSTR, LPWNDCLASSEXA);WINUSERAPIBOOLWINAPIGetClassInfoExW(HINSTANCE, LPCWSTR, LPWNDCLASSEXW);#ifdef UNICODE#define GetClassInfoEx GetClassInfoExW#else#define GetClassInfoEx GetClassInfoExA#endif // !UNICODE#endif /* WINVER >= 0x0400 */#define CW_USEDEFAULT ((int)0x80000000)/** Special value for CreateWindow, et al.*/#define HWND_DESKTOP ((HWND)0)WINUSERAPIHWNDWINAPICreateWindowExA(DWORD dwExStyle,LPCSTR lpClassName,LPCSTR lpWindowName,DWORD dwStyle,int X,int Y,int nWidth,int nHeight,HWND hWndParent ,HMENU hMenu,HINSTANCE hInstance,LPVOID lpParam);WINUSERAPIHWNDWINAPICreateWindowExW(DWORD dwExStyle,LPCWSTR lpClassName,LPCWSTR lpWindowName,DWORD dwStyle,int X,int Y,int nWidth,int nHeight,HWND hWndParent ,HMENU hMenu,HINSTANCE hInstance,LPVOID lpParam);#ifdef UNICODE#define CreateWindowEx CreateWindowExW#else#define CreateWindowEx CreateWindowExA#endif // !UNICODE#define CreateWindowA(lpClassName, lpWindowName, dwStyle, x, y,\nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)\CreateWindowExA(0L, lpClassName, lpWindowName, dwStyle, x, y,\nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)#define CreateWindowW(lpClassName, lpWindowName, dwStyle, x, y,\nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)\CreateWindowExW(0L, lpClassName, lpWindowName, dwStyle, x, y,\nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)#ifdef UNICODE#define CreateWindow CreateWindowW#else#define CreateWindow CreateWindowA#endif // !UNICODEWINUSERAPIBOOLWINAPIIsWindow(HWND hWnd);WINUSERAPIBOOLWINAPIIsMenu(HMENU hMenu);WINUSERAPIBOOLWINAPIIsChild(HWND hWndParent,HWND hWnd);WINUSERAPIBOOLWINAPIDestroyWindow(HWND hWnd);WINUSERAPIBOOLWINAPIShowWindow(HWND hWnd,int nCmdShow);#if(WINVER >= 0x0500)WINUSERAPIBOOLWINAPIAnimateWindow(HWND hWnd,DWORD dwTime,DWORD dwFlags);#endif /* WINVER >= 0x0500 */#if(WINVER >= 0x0400)WINUSERAPIBOOLWINAPIShowWindowAsync(HWND hWnd,int nCmdShow);#endif /* WINVER >= 0x0400 */WINUSERAPIBOOLWINAPIFlashWindow(HWND hWnd,#if(WINVER >= 0x0500)DWORD dwFlags);#elseBOOL bInvert);#endif#if(WINVER >= 0x0500)#define FLASHW_STOP 0#define FLASHW_CAPTION 0x00000001#define FLASHW_TRAY 0x00000002#define FLASHW_ALL (FLASHW_CAPTION | FLASHW_TRAY)#define FLASHW_TIMER 0x00000004#define FLASHW_TIMERNOFG 0x0000000C#endif /* WINVER >= 0x0500 */WINUSERAPIBOOLWINAPIShowOwnedPopups(HWND hWnd,BOOL fShow);WINUSERAPIBOOLWINAPIOpenIcon(HWND hWnd);WINUSERAPIBOOLWINAPICloseWindow(HWND hWnd);WINUSERAPIBOOLWINAPIMoveWindow(HWND hWnd,int X,int Y,int nWidth,int nHeight,BOOL bRepaint);WINUSERAPIBOOLWINAPISetWindowPos(HWND hWnd,HWND hWndInsertAfter ,int X,int Y,int cx,int cy,UINT uFlags);WINUSERAPIBOOLWINAPIGetWindowPlacement(HWND hWnd,WINDOWPLACEMENT *lpwndpl);WINUSERAPIBOOLWINAPISetWindowPlacement(HWND hWnd,CONST WINDOWPLACEMENT *lpwndpl);#ifndef NODEFERWINDOWPOSWINUSERAPIHDWPWINAPIBeginDeferWindowPos(int nNumWindows);WINUSERAPIHDWPWINAPIDeferWindowPos(HDWP hWinPosInfo,HWND hWnd,HWND hWndInsertAfter ,int x,int y,int cx,int cy,UINT uFlags);WINUSERAPIBOOLWINAPIEndDeferWindowPos(HDWP hWinPosInfo);#endif /* !NODEFERWINDOWPOS */WINUSERAPIBOOLWINAPIIsWindowVisible(HWND hWnd);WINUSERAPIBOOLWINAPIIsIconic(HWND hWnd);WINUSERAPIBOOLWINAPIAnyPopup(VOID);WINUSERAPIBOOLWINAPIBringWindowToTop(HWND hWnd);WINUSERAPIBOOLWINAPIIsZoomed(HWND hWnd);/** SetWindowPos Flags*/#define SWP_NOSIZE 0x0001#define SWP_NOMOVE 0x0002#define SWP_NOZORDER 0x0004#define SWP_NOREDRAW 0x0008#define SWP_NOACTIVATE 0x0010#define SWP_FRAMECHANGED 0x0020 /* The frame changed: send WM_NCCALCSIZE */#define SWP_SHOWWINDOW 0x0040#define SWP_HIDEWINDOW 0x0080#define SWP_NOCOPYBITS 0x0100#define SWP_NOOWNERZORDER 0x0200 /* Don't do owner Z ordering */#define SWP_NOSENDCHANGING 0x0400 /* Don't send WM_WINDOWPOSCHANGING */#define SWP_DRAWFRAME SWP_FRAMECHANGED#define SWP_NOREPOSITION SWP_NOOWNERZORDER#if(WINVER >= 0x0400)#define SWP_DEFERERASE 0x2000#define SWP_ASYNCWINDOWPOS 0x4000#endif /* WINVER >= 0x0400 */#define HWND_TOP ((HWND)0)#define HWND_BOTTOM ((HWND)1)#define HWND_TOPMOST ((HWND)-1)#define HWND_NOTOPMOST ((HWND)-2)#ifndef NOCTLMGR/** WARNING:* The following structures must NOT be DWORD padded because they are* followed by strings, etc that do not have to be DWORD aligned.*/#include <pshpack2.h>/** original NT 32 bit dialog template:*/typedef struct {DWORD style;DWORD dwExtendedStyle;WORD cdit;short x;short y;short cx;short cy;} DLGTEMPLATE;typedef DLGTEMPLATE *LPDLGTEMPLATEA;typedef DLGTEMPLATE *LPDLGTEMPLATEW;#ifdef UNICODEtypedef LPDLGTEMPLATEW LPDLGTEMPLATE;#elsetypedef LPDLGTEMPLATEA LPDLGTEMPLATE;#endif // UNICODEtypedef CONST DLGTEMPLATE *LPCDLGTEMPLATEA;typedef CONST DLGTEMPLATE *LPCDLGTEMPLATEW;#ifdef UNICODEtypedef LPCDLGTEMPLATEW LPCDLGTEMPLATE;#elsetypedef LPCDLGTEMPLATEA LPCDLGTEMPLATE;#endif // UNICODE/** 32 bit Dialog item template.*/typedef struct {DWORD style;DWORD dwExtendedStyle;short x;short y;short cx;short cy;WORD id;} DLGITEMTEMPLATE;typedef DLGITEMTEMPLATE *PDLGITEMTEMPLATEA;typedef DLGITEMTEMPLATE *PDLGITEMTEMPLATEW;#ifdef UNICODEtypedef PDLGITEMTEMPLATEW PDLGITEMTEMPLATE;#elsetypedef PDLGITEMTEMPLATEA PDLGITEMTEMPLATE;#endif // UNICODEtypedef DLGITEMTEMPLATE *LPDLGITEMTEMPLATEA;typedef DLGITEMTEMPLATE *LPDLGITEMTEMPLATEW;#ifdef UNICODEtypedef LPDLGITEMTEMPLATEW LPDLGITEMTEMPLATE;#elsetypedef LPDLGITEMTEMPLATEA LPDLGITEMTEMPLATE;#endif // UNICODE#include <poppack.h> /* Resume normal packing */WINUSERAPIHWNDWINAPICreateDialogParamA(HINSTANCE hInstance,LPCSTR lpTemplateName,HWND hWndParent ,DLGPROC lpDialogFunc,LPARAM dwInitParam);WINUSERAPIHWNDWINAPICreateDialogParamW(HINSTANCE hInstance,LPCWSTR lpTemplateName,HWND hWndParent ,DLGPROC lpDialogFunc,LPARAM dwInitParam);#ifdef UNICODE#define CreateDialogParam CreateDialogParamW#else#define CreateDialogParam CreateDialogParamA#endif // !UNICODEWINUSERAPIHWNDWINAPICreateDialogIndirectParamA(HINSTANCE hInstance,LPCDLGTEMPLATEA lpTemplate,HWND hWndParent,DLGPROC lpDialogFunc,LPARAM dwInitParam);WINUSERAPIHWNDWINAPICreateDialogIndirectParamW(HINSTANCE hInstance,LPCDLGTEMPLATEW lpTemplate,HWND hWndParent,DLGPROC lpDialogFunc,LPARAM dwInitParam);#ifdef UNICODE#define CreateDialogIndirectParam CreateDialogIndirectParamW#else#define CreateDialogIndirectParam CreateDialogIndirectParamA#endif // !UNICODE#define CreateDialogA(hInstance, lpName, hWndParent, lpDialogFunc) \CreateDialogParamA(hInstance, lpName, hWndParent, lpDialogFunc, 0L)#define CreateDialogW(hInstance, lpName, hWndParent, lpDialogFunc) \CreateDialogParamW(hInstance, lpName, hWndParent, lpDialogFunc, 0L)#ifdef UNICODE#define CreateDialog CreateDialogW#else#define CreateDialog CreateDialogA#endif // !UNICODE#define CreateDialogIndirectA(hInstance, lpTemplate, hWndParent, lpDialogFunc) \CreateDialogIndirectParamA(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L)#define CreateDialogIndirectW(hInstance, lpTemplate, hWndParent, lpDialogFunc) \CreateDialogIndirectParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L)#ifdef UNICODE#define CreateDialogIndirect CreateDialogIndirectW#else#define CreateDialogIndirect CreateDialogIndirectA#endif // !UNICODEWINUSERAPIintWINAPIDialogBoxParamA(HINSTANCE hInstance,LPCSTR lpTemplateName,HWND hWndParent ,DLGPROC lpDialogFunc,LPARAM dwInitParam);WINUSERAPIintWINAPIDialogBoxParamW(HINSTANCE hInstance,LPCWSTR lpTemplateName,HWND hWndParent ,DLGPROC lpDialogFunc,LPARAM dwInitParam);#ifdef UNICODE#define DialogBoxParam DialogBoxParamW#else#define DialogBoxParam DialogBoxParamA#endif // !UNICODEWINUSERAPIintWINAPIDialogBoxIndirectParamA(HINSTANCE hInstance,LPCDLGTEMPLATEA hDialogTemplate,HWND hWndParent ,DLGPROC lpDialogFunc,LPARAM dwInitParam);WINUSERAPIintWINAPIDialogBoxIndirectParamW(HINSTANCE hInstance,LPCDLGTEMPLATEW hDialogTemplate,HWND hWndParent ,DLGPROC lpDialogFunc,LPARAM dwInitParam);#ifdef UNICODE#define DialogBoxIndirectParam DialogBoxIndirectParamW#else#define DialogBoxIndirectParam DialogBoxIndirectParamA#endif // !UNICODE#define DialogBoxA(hInstance, lpTemplate, hWndParent, lpDialogFunc) \DialogBoxParamA(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L)#define DialogBoxW(hInstance, lpTemplate, hWndParent, lpDialogFunc) \DialogBoxParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L)#ifdef UNICODE#define DialogBox DialogBoxW#else#define DialogBox DialogBoxA#endif // !UNICODE#define DialogBoxIndirectA(hInstance, lpTemplate, hWndParent, lpDialogFunc) \DialogBoxIndirectParamA(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L)#define DialogBoxIndirectW(hInstance, lpTemplate, hWndParent, lpDialogFunc) \DialogBoxIndirectParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L)#ifdef UNICODE#define DialogBoxIndirect DialogBoxIndirectW#else#define DialogBoxIndirect DialogBoxIndirectA#endif // !UNICODEWINUSERAPIBOOLWINAPIEndDialog(HWND hDlg,int nResult);WINUSERAPIHWNDWINAPIGetDlgItem(HWND hDlg,int nIDDlgItem);WINUSERAPIBOOLWINAPISetDlgItemInt(HWND hDlg,int nIDDlgItem,UINT uValue,BOOL bSigned);WINUSERAPIUINTWINAPIGetDlgItemInt(HWND hDlg,int nIDDlgItem,BOOL *lpTranslated,BOOL bSigned);WINUSERAPIBOOLWINAPISetDlgItemTextA(HWND hDlg,int nIDDlgItem,LPCSTR lpString);WINUSERAPIBOOLWINAPISetDlgItemTextW(HWND hDlg,int nIDDlgItem,LPCWSTR lpString);#ifdef UNICODE#define SetDlgItemText SetDlgItemTextW#else#define SetDlgItemText SetDlgItemTextA#endif // !UNICODEWINUSERAPIUINTWINAPIGetDlgItemTextA(HWND hDlg,int nIDDlgItem,LPSTR lpString,int nMaxCount);WINUSERAPIUINTWINAPIGetDlgItemTextW(HWND hDlg,int nIDDlgItem,LPWSTR lpString,int nMaxCount);#ifdef UNICODE#define GetDlgItemText GetDlgItemTextW#else#define GetDlgItemText GetDlgItemTextA#endif // !UNICODEWINUSERAPIBOOLWINAPICheckDlgButton(HWND hDlg,int nIDButton,UINT uCheck);WINUSERAPIBOOLWINAPICheckRadioButton(HWND hDlg,int nIDFirstButton,int nIDLastButton,int nIDCheckButton);WINUSERAPIUINTWINAPIIsDlgButtonChecked(HWND hDlg,int nIDButton);WINUSERAPILONGWINAPISendDlgItemMessageA(HWND hDlg,int nIDDlgItem,UINT Msg,WPARAM wParam,LPARAM lParam);WINUSERAPILONGWINAPISendDlgItemMessageW(HWND hDlg,int nIDDlgItem,UINT Msg,WPARAM wParam,LPARAM lParam);#ifdef UNICODE#define SendDlgItemMessage SendDlgItemMessageW#else#define SendDlgItemMessage SendDlgItemMessageA#endif // !UNICODEWINUSERAPIHWNDWINAPIGetNextDlgGroupItem(HWND hDlg,HWND hCtl,BOOL bPrevious);WINUSERAPIHWNDWINAPIGetNextDlgTabItem(HWND hDlg,HWND hCtl,BOOL bPrevious);WINUSERAPIintWINAPIGetDlgCtrlID(HWND hWnd);WINUSERAPIlongWINAPIGetDialogBaseUnits(VOID);WINUSERAPI#ifndef _MACLRESULTWINAPI#elseLRESULTCALLBACK#endifDefDlgProcA(HWND hDlg,UINT Msg,WPARAM wParam,LPARAM lParam);WINUSERAPI#ifndef _MACLRESULTWINAPI#elseLRESULTCALLBACK#endifDefDlgProcW(HWND hDlg,UINT Msg,WPARAM wParam,LPARAM lParam);#ifdef UNICODE#define DefDlgProc DefDlgProcW#else#define DefDlgProc DefDlgProcA#endif // !UNICODE/** Window extra byted needed for private dialog classes.*/#ifndef _MAC#define DLGWINDOWEXTRA 30#else#define DLGWINDOWEXTRA 48#endif#endif /* !NOCTLMGR */#ifndef NOMSGWINUSERAPIBOOLWINAPICallMsgFilterA(LPMSG lpMsg,int nCode);WINUSERAPIBOOLWINAPICallMsgFilterW(LPMSG lpMsg,int nCode);#ifdef UNICODE#define CallMsgFilter CallMsgFilterW#else#define CallMsgFilter CallMsgFilterA#endif // !UNICODE#endif /* !NOMSG */#ifndef NOCLIPBOARD/** Clipboard Manager Functions*/WINUSERAPIBOOLWINAPIOpenClipboard(HWND hWndNewOwner);WINUSERAPIBOOLWINAPICloseClipboard(VOID);#if(WINVER >= 0x0500)WINUSERAPIDWORDWINAPIGetClipboardSequenceNumber(VOID);#endif /* WINVER >= 0x0500 */WINUSERAPIHWNDWINAPIGetClipboardOwner(VOID);WINUSERAPIHWNDWINAPISetClipboardViewer(HWND hWndNewViewer);WINUSERAPIHWNDWINAPIGetClipboardViewer(VOID);WINUSERAPIBOOLWINAPIChangeClipboardChain(HWND hWndRemove,HWND hWndNewNext);WINUSERAPIHANDLEWINAPISetClipboardData(UINT uFormat,HANDLE hMem);WINUSERAPIHANDLEWINAPIGetClipboardData(UINT uFormat);WINUSERAPIUINTWINAPIRegisterClipboardFormatA(LPCSTR lpszFormat);WINUSERAPIUINTWINAPIRegisterClipboardFormatW(LPCWSTR lpszFormat);#ifdef UNICODE#define RegisterClipboardFormat RegisterClipboardFormatW#else#define RegisterClipboardFormat RegisterClipboardFormatA#endif // !UNICODEWINUSERAPIintWINAPICountClipboardFormats(VOID);WINUSERAPIUINTWINAPIEnumClipboardFormats(UINT format);WINUSERAPIintWINAPIGetClipboardFormatNameA(UINT format,LPSTR lpszFormatName,int cchMaxCount);WINUSERAPIintWINAPIGetClipboardFormatNameW(UINT format,LPWSTR lpszFormatName,int cchMaxCount);#ifdef UNICODE#define GetClipboardFormatName GetClipboardFormatNameW#else#define GetClipboardFormatName GetClipboardFormatNameA#endif // !UNICODEWINUSERAPIBOOLWINAPIEmptyClipboard(VOID);WINUSERAPIBOOLWINAPIIsClipboardFormatAvailable(UINT format);WINUSERAPIintWINAPIGetPriorityClipboardFormat(UINT *paFormatPriorityList,int cFormats);WINUSERAPIHWNDWINAPIGetOpenClipboardWindow(VOID);#endif /* !NOCLIPBOARD *//** Character Translation Routines*/WINUSERAPIBOOLWINAPICharToOemA(LPCSTR lpszSrc,LPSTR lpszDst);WINUSERAPIBOOLWINAPICharToOemW(LPCWSTR lpszSrc,LPSTR lpszDst);#ifdef UNICODE#define CharToOem CharToOemW#else#define CharToOem CharToOemA#endif // !UNICODEWINUSERAPIBOOLWINAPIOemToCharA(LPCSTR lpszSrc,LPSTR lpszDst);WINUSERAPIBOOLWINAPIOemToCharW(LPCSTR lpszSrc,LPWSTR lpszDst);#ifdef UNICODE#define OemToChar OemToCharW#else#define OemToChar OemToCharA#endif // !UNICODEWINUSERAPIBOOLWINAPICharToOemBuffA(LPCSTR lpszSrc,LPSTR lpszDst,DWORD cchDstLength);WINUSERAPIBOOLWINAPICharToOemBuffW(LPCWSTR lpszSrc,LPSTR lpszDst,DWORD cchDstLength);#ifdef UNICODE#define CharToOemBuff CharToOemBuffW#else#define CharToOemBuff CharToOemBuffA#endif // !UNICODEWINUSERAPIBOOLWINAPIOemToCharBuffA(LPCSTR lpszSrc,LPSTR lpszDst,DWORD cchDstLength);WINUSERAPIBOOLWINAPIOemToCharBuffW(LPCSTR lpszSrc,LPWSTR lpszDst,DWORD cchDstLength);#ifdef UNICODE#define OemToCharBuff OemToCharBuffW#else#define OemToCharBuff OemToCharBuffA#endif // !UNICODEWINUSERAPILPSTRWINAPICharUpperA(LPSTR lpsz);WINUSERAPILPWSTRWINAPICharUpperW(LPWSTR lpsz);#ifdef UNICODE#define CharUpper CharUpperW#else#define CharUpper CharUpperA#endif // !UNICODEWINUSERAPIDWORDWINAPICharUpperBuffA(LPSTR lpsz,DWORD cchLength);WINUSERAPIDWORDWINAPICharUpperBuffW(LPWSTR lpsz,DWORD cchLength);#ifdef UNICODE#define CharUpperBuff CharUpperBuffW#else#define CharUpperBuff CharUpperBuffA#endif // !UNICODEWINUSERAPILPSTRWINAPICharLowerA(LPSTR lpsz);WINUSERAPILPWSTRWINAPICharLowerW(LPWSTR lpsz);#ifdef UNICODE#define CharLower CharLowerW#else#define CharLower CharLowerA#endif // !UNICODEWINUSERAPIDWORDWINAPICharLowerBuffA(LPSTR lpsz,DWORD cchLength);WINUSERAPIDWORDWINAPICharLowerBuffW(LPWSTR lpsz,DWORD cchLength);#ifdef UNICODE#define CharLowerBuff CharLowerBuffW#else#define CharLowerBuff CharLowerBuffA#endif // !UNICODEWINUSERAPILPSTRWINAPICharNextA(LPCSTR lpsz);WINUSERAPILPWSTRWINAPICharNextW(LPCWSTR lpsz);#ifdef UNICODE#define CharNext CharNextW#else#define CharNext CharNextA#endif // !UNICODEWINUSERAPILPSTRWINAPICharPrevA(LPCSTR lpszStart,LPCSTR lpszCurrent);WINUSERAPILPWSTRWINAPICharPrevW(LPCWSTR lpszStart,LPCWSTR lpszCurrent);#ifdef UNICODE#define CharPrev CharPrevW#else#define CharPrev CharPrevA#endif // !UNICODE#if(WINVER >= 0x0400)WINUSERAPILPSTRWINAPICharNextExA(WORD CodePage,LPCSTR lpCurrentChar,DWORD dwFlags);WINUSERAPILPSTRWINAPICharPrevExA(WORD CodePage,LPCSTR lpStart,LPCSTR lpCurrentChar,DWORD dwFlags);#endif /* WINVER >= 0x0400 *//** Compatibility defines for character translation routines*/#define AnsiToOem CharToOemA#define OemToAnsi OemToCharA#define AnsiToOemBuff CharToOemBuffA#define OemToAnsiBuff OemToCharBuffA#define AnsiUpper CharUpperA#define AnsiUpperBuff CharUpperBuffA#define AnsiLower CharLowerA#define AnsiLowerBuff CharLowerBuffA#define AnsiNext CharNextA#define AnsiPrev CharPrevA#ifndef NOLANGUAGE/** Language dependent Routines*/WINUSERAPIBOOLWINAPIIsCharAlphaA(CHAR ch);WINUSERAPIBOOLWINAPIIsCharAlphaW(WCHAR ch);#ifdef UNICODE#define IsCharAlpha IsCharAlphaW#else#define IsCharAlpha IsCharAlphaA#endif // !UNICODEWINUSERAPIBOOLWINAPIIsCharAlphaNumericA(CHAR ch);WINUSERAPIBOOLWINAPIIsCharAlphaNumericW(WCHAR ch);#ifdef UNICODE#define IsCharAlphaNumeric IsCharAlphaNumericW#else#define IsCharAlphaNumeric IsCharAlphaNumericA#endif // !UNICODEWINUSERAPIBOOLWINAPIIsCharUpperA(CHAR ch);WINUSERAPIBOOLWINAPIIsCharUpperW(WCHAR ch);#ifdef UNICODE#define IsCharUpper IsCharUpperW#else#define IsCharUpper IsCharUpperA#endif // !UNICODEWINUSERAPIBOOLWINAPIIsCharLowerA(CHAR ch);WINUSERAPIBOOLWINAPIIsCharLowerW(WCHAR ch);#ifdef UNICODE#define IsCharLower IsCharLowerW#else#define IsCharLower IsCharLowerA#endif // !UNICODE#endif /* !NOLANGUAGE */WINUSERAPIHWNDWINAPISetFocus(HWND hWnd);WINUSERAPIHWNDWINAPIGetActiveWindow(VOID);WINUSERAPIHWNDWINAPIGetFocus(VOID);WINUSERAPIUINTWINAPIGetKBCodePage(VOID);WINUSERAPISHORTWINAPIGetKeyState(int nVirtKey);WINUSERAPISHORTWINAPIGetAsyncKeyState(int vKey);WINUSERAPIBOOLWINAPIGetKeyboardState(PBYTE lpKeyState);WINUSERAPIBOOLWINAPISetKeyboardState(LPBYTE lpKeyState);WINUSERAPIintWINAPIGetKeyNameTextA(LONG lParam,LPSTR lpString,int nSize);WINUSERAPIintWINAPIGetKeyNameTextW(LONG lParam,LPWSTR lpString,int nSize);#ifdef UNICODE#define GetKeyNameText GetKeyNameTextW#else#define GetKeyNameText GetKeyNameTextA#endif // !UNICODEWINUSERAPIintWINAPIGetKeyboardType(int nTypeFlag);WINUSERAPIintWINAPIToAscii(UINT uVirtKey,UINT uScanCode,PBYTE lpKeyState,LPWORD lpChar,UINT uFlags);#if(WINVER >= 0x0400)WINUSERAPIintWINAPIToAsciiEx(UINT uVirtKey,UINT uScanCode,PBYTE lpKeyState,LPWORD lpChar,UINT uFlags,HKL dwhkl);#endif /* WINVER >= 0x0400 */WINUSERAPIintWINAPIToUnicode(UINT wVirtKey,UINT wScanCode,PBYTE lpKeyState,LPWSTR pwszBuff,int cchBuff,UINT wFlags);WINUSERAPIDWORDWINAPIOemKeyScan(WORD wOemChar);WINUSERAPISHORTWINAPIVkKeyScanA(CHAR ch);WINUSERAPISHORTWINAPIVkKeyScanW(WCHAR ch);#ifdef UNICODE#define VkKeyScan VkKeyScanW#else#define VkKeyScan VkKeyScanA#endif // !UNICODE#if(WINVER >= 0x0400)WINUSERAPISHORTWINAPI VkKeyScanExA(CHAR ch,HKL dwhkl);WINUSERAPISHORTWINAPI VkKeyScanExW(WCHAR ch,HKL dwhkl);#ifdef UNICODE#define VkKeyScanEx VkKeyScanExW#else#define VkKeyScanEx VkKeyScanExA#endif // !UNICODE#endif /* WINVER >= 0x0400 */#define KEYEVENTF_EXTENDEDKEY 0x0001#define KEYEVENTF_KEYUP 0x0002WINUSERAPIVOIDWINAPIkeybd_event(BYTE bVk,BYTE bScan,DWORD dwFlags,DWORD dwExtraInfo);#define MOUSEEVENTF_MOVE 0x0001 /* mouse move */#define MOUSEEVENTF_LEFTDOWN 0x0002 /* left button down */#define MOUSEEVENTF_LEFTUP 0x0004 /* left button up */#define MOUSEEVENTF_RIGHTDOWN 0x0008 /* right button down */#define MOUSEEVENTF_RIGHTUP 0x0010 /* right button up */#define MOUSEEVENTF_MIDDLEDOWN 0x0020 /* middle button down */#define MOUSEEVENTF_MIDDLEUP 0x0040 /* middle button up */#define MOUSEEVENTF_WHEEL 0x0800 /* wheel button rolled */#define MOUSEEVENTF_ABSOLUTE 0x8000 /* absolute move */WINUSERAPIVOIDWINAPImouse_event(DWORD dwFlags,DWORD dx,DWORD dy,DWORD dwData,DWORD dwExtraInfo);#if (_WIN32_WINNT > 0x0400)typedef struct tagMOUSEINPUT {LONG dx;LONG dy;DWORD mouseData;DWORD dwFlags;DWORD time;DWORD dwExtraInfo;} MOUSEINPUT, *PMOUSEINPUT, FAR* LPMOUSEINPUT;typedef struct tagKEYBDINPUT {WORD wVk;WORD wScan;DWORD dwFlags;DWORD time;DWORD dwExtraInfo;} KEYBDINPUT, *PKEYBDINPUT, FAR* LPKEYBDINPUT;typedef struct tagHARDWAREINPUT {DWORD uMsg;WORD wParamL;WORD wParamH;} HARDWAREINPUT, *PHARDWAREINPUT, FAR* LPHARDWAREINPUT;#define INPUT_MOUSE 0#define INPUT_KEYBOARD 1#define INPUT_HARDWARE 2typedef struct tagINPUT {DWORD type;union{MOUSEINPUT mi;KEYBDINPUT ki;HARDWAREINPUT hi;};} INPUT, *PINPUT, FAR* LPINPUT;WINUSERAPIUINTWINAPISendInput(UINT cInputs, // number of input in the arrayLPINPUT pInputs, // array of inputsint cbSize); // sizeof(INPUT)#endif // (_WIN32_WINNT > 0x0400)#if(_WIN32_WINNT >= 0x0500)typedef struct tagLASTINPUTINFO {UINT cbSize;DWORD dwTime;} LASTINPUTINFO, * PLASTINPUTINFO;WINUSERAPIBOOLWINAPIGetLastInputInfo(PLASTINPUTINFO plii);#endif /* _WIN32_WINNT >= 0x0500 */WINUSERAPIUINTWINAPIMapVirtualKeyA(UINT uCode,UINT uMapType);WINUSERAPIUINTWINAPIMapVirtualKeyW(UINT uCode,UINT uMapType);#ifdef UNICODE#define MapVirtualKey MapVirtualKeyW#else#define MapVirtualKey MapVirtualKeyA#endif // !UNICODE#if(WINVER >= 0x0400)WINUSERAPIUINTWINAPIMapVirtualKeyExA(UINT uCode,UINT uMapType,HKL dwhkl);WINUSERAPIUINTWINAPIMapVirtualKeyExW(UINT uCode,UINT uMapType,HKL dwhkl);#ifdef UNICODE#define MapVirtualKeyEx MapVirtualKeyExW#else#define MapVirtualKeyEx MapVirtualKeyExA#endif // !UNICODE#endif /* WINVER >= 0x0400 */WINUSERAPIBOOLWINAPIGetInputState(VOID);WINUSERAPIDWORDWINAPIGetQueueStatus(UINT flags);WINUSERAPIHWNDWINAPIGetCapture(VOID);WINUSERAPIHWNDWINAPISetCapture(HWND hWnd);WINUSERAPIBOOLWINAPIReleaseCapture(VOID);WINUSERAPIDWORDWINAPIMsgWaitForMultipleObjects(DWORD nCount,LPHANDLE pHandles,BOOL fWaitAll,DWORD dwMilliseconds,DWORD dwWakeMask);WINUSERAPIDWORDWINAPIMsgWaitForMultipleObjectsEx(DWORD nCount,LPHANDLE pHandles,DWORD dwMilliseconds,DWORD dwWakeMask,DWORD dwFlags);#define MWMO_WAITALL 0x0001#define MWMO_ALERTABLE 0x0002#define MWMO_INPUTAVAILABLE 0x0004/** Queue status flags for GetQueueStatus() and MsgWaitForMultipleObjects()*/#define QS_KEY 0x0001#define QS_MOUSEMOVE 0x0002#define QS_MOUSEBUTTON 0x0004#define QS_POSTMESSAGE 0x0008#define QS_TIMER 0x0010#define QS_PAINT 0x0020#define QS_SENDMESSAGE 0x0040#define QS_HOTKEY 0x0080#define QS_ALLPOSTMESSAGE 0x0100#define QS_MOUSE (QS_MOUSEMOVE | \QS_MOUSEBUTTON)#define QS_INPUT (QS_MOUSE | \QS_KEY)#define QS_ALLEVENTS (QS_INPUT | \QS_POSTMESSAGE | \QS_TIMER | \QS_PAINT | \QS_HOTKEY)#define QS_ALLINPUT (QS_INPUT | \QS_POSTMESSAGE | \QS_TIMER | \QS_PAINT | \QS_HOTKEY | \QS_SENDMESSAGE)/** Windows Functions*/WINUSERAPIUINTWINAPISetTimer(HWND hWnd ,UINT nIDEvent,UINT uElapse,TIMERPROC lpTimerFunc);WINUSERAPIBOOLWINAPIKillTimer(HWND hWnd,UINT uIDEvent);WINUSERAPIBOOLWINAPIIsWindowUnicode(HWND hWnd);WINUSERAPIBOOLWINAPIEnableWindow(HWND hWnd,BOOL bEnable);WINUSERAPIBOOLWINAPIIsWindowEnabled(HWND hWnd);WINUSERAPIHACCELWINAPILoadAcceleratorsA(HINSTANCE hInstance,LPCSTR lpTableName);WINUSERAPIHACCELWINAPILoadAcceleratorsW(HINSTANCE hInstance,LPCWSTR lpTableName);#ifdef UNICODE#define LoadAccelerators LoadAcceleratorsW#else#define LoadAccelerators LoadAcceleratorsA#endif // !UNICODEWINUSERAPIHACCELWINAPICreateAcceleratorTableA(LPACCEL, int);WINUSERAPIHACCELWINAPICreateAcceleratorTableW(LPACCEL, int);#ifdef UNICODE#define CreateAcceleratorTable CreateAcceleratorTableW#else#define CreateAcceleratorTable CreateAcceleratorTableA#endif // !UNICODEWINUSERAPIBOOLWINAPIDestroyAcceleratorTable(HACCEL hAccel);WINUSERAPIintWINAPICopyAcceleratorTableA(HACCEL hAccelSrc,LPACCEL lpAccelDst,int cAccelEntries);WINUSERAPIintWINAPICopyAcceleratorTableW(HACCEL hAccelSrc,LPACCEL lpAccelDst,int cAccelEntries);#ifdef UNICODE#define CopyAcceleratorTable CopyAcceleratorTableW#else#define CopyAcceleratorTable CopyAcceleratorTableA#endif // !UNICODE#ifndef NOMSGWINUSERAPIintWINAPITranslateAcceleratorA(HWND hWnd,HACCEL hAccTable,LPMSG lpMsg);WINUSERAPIintWINAPITranslateAcceleratorW(HWND hWnd,HACCEL hAccTable,LPMSG lpMsg);#ifdef UNICODE#define TranslateAccelerator TranslateAcceleratorW#else#define TranslateAccelerator TranslateAcceleratorA#endif // !UNICODE#endif /* !NOMSG */#ifndef NOSYSMETRICS/** GetSystemMetrics() codes*/#define SM_CXSCREEN 0#define SM_CYSCREEN 1#define SM_CXVSCROLL 2#define SM_CYHSCROLL 3#define SM_CYCAPTION 4#define SM_CXBORDER 5#define SM_CYBORDER 6#define SM_CXDLGFRAME 7#define SM_CYDLGFRAME 8#define SM_CYVTHUMB 9#define SM_CXHTHUMB 10#define SM_CXICON 11#define SM_CYICON 12#define SM_CXCURSOR 13#define SM_CYCURSOR 14#define SM_CYMENU 15#define SM_CXFULLSCREEN 16#define SM_CYFULLSCREEN 17#define SM_CYKANJIWINDOW 18#define SM_MOUSEPRESENT 19#define SM_CYVSCROLL 20#define SM_CXHSCROLL 21#define SM_DEBUG 22#define SM_SWAPBUTTON 23#define SM_RESERVED1 24#define SM_RESERVED2 25#define SM_RESERVED3 26#define SM_RESERVED4 27#define SM_CXMIN 28#define SM_CYMIN 29#define SM_CXSIZE 30#define SM_CYSIZE 31#define SM_CXFRAME 32#define SM_CYFRAME 33#define SM_CXMINTRACK 34#define SM_CYMINTRACK 35#define SM_CXDOUBLECLK 36#define SM_CYDOUBLECLK 37#define SM_CXICONSPACING 38#define SM_CYICONSPACING 39#define SM_MENUDROPALIGNMENT 40#define SM_PENWINDOWS 41#define SM_DBCSENABLED 42#define SM_CMOUSEBUTTONS 43#if(WINVER >= 0x0400)#define SM_CXFIXEDFRAME SM_CXDLGFRAME /* ;win40 name change */#define SM_CYFIXEDFRAME SM_CYDLGFRAME /* ;win40 name change */#define SM_CXSIZEFRAME SM_CXFRAME /* ;win40 name change */#define SM_CYSIZEFRAME SM_CYFRAME /* ;win40 name change */#define SM_SECURE 44#define SM_CXEDGE 45#define SM_CYEDGE 46#define SM_CXMINSPACING 47#define SM_CYMINSPACING 48#define SM_CXSMICON 49#define SM_CYSMICON 50#define SM_CYSMCAPTION 51#define SM_CXSMSIZE 52#define SM_CYSMSIZE 53#define SM_CXMENUSIZE 54#define SM_CYMENUSIZE 55#define SM_ARRANGE 56#define SM_CXMINIMIZED 57#define SM_CYMINIMIZED 58#define SM_CXMAXTRACK 59#define SM_CYMAXTRACK 60#define SM_CXMAXIMIZED 61#define SM_CYMAXIMIZED 62#define SM_NETWORK 63#define SM_CLEANBOOT 67#define SM_CXDRAG 68#define SM_CYDRAG 69#endif /* WINVER >= 0x0400 */#define SM_SHOWSOUNDS 70#if(WINVER >= 0x0400)#define SM_CXMENUCHECK 71 /* Use instead of GetMenuCheckMarkDimensions()! */#define SM_CYMENUCHECK 72#define SM_SLOWMACHINE 73#define SM_MIDEASTENABLED 74#endif /* WINVER >= 0x0400 */#if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400)#define SM_MOUSEWHEELPRESENT 75#endif#if(WINVER >= 0x0500)#define SM_XVIRTUALSCREEN 76#define SM_YVIRTUALSCREEN 77#define SM_CXVIRTUALSCREEN 78#define SM_CYVIRTUALSCREEN 79#define SM_CMONITORS 80#define SM_SAMEDISPLAYFORMAT 81#endif /* WINVER >= 0x0500 */#if (WINVER < 0x0500) && (!defined(_WIN32_WINNT) || (_WIN32_WINNT < 0x0400))#define SM_CMETRICS 76#else#define SM_CMETRICS 83#endifWINUSERAPIintWINAPIGetSystemMetrics(int nIndex);#endif /* !NOSYSMETRICS */#ifndef NOMENUSWINUSERAPIHMENUWINAPILoadMenuA(HINSTANCE hInstance,LPCSTR lpMenuName);WINUSERAPIHMENUWINAPILoadMenuW(HINSTANCE hInstance,LPCWSTR lpMenuName);#ifdef UNICODE#define LoadMenu LoadMenuW#else#define LoadMenu LoadMenuA#endif // !UNICODEWINUSERAPIHMENUWINAPILoadMenuIndirectA(CONST MENUTEMPLATEA *lpMenuTemplate);WINUSERAPIHMENUWINAPILoadMenuIndirectW(CONST MENUTEMPLATEW *lpMenuTemplate);#ifdef UNICODE#define LoadMenuIndirect LoadMenuIndirectW#else#define LoadMenuIndirect LoadMenuIndirectA#endif // !UNICODEWINUSERAPIHMENUWINAPIGetMenu(HWND hWnd);WINUSERAPIBOOLWINAPISetMenu(HWND hWnd,HMENU hMenu);WINUSERAPIBOOLWINAPIChangeMenuA(HMENU hMenu,UINT cmd,LPCSTR lpszNewItem,UINT cmdInsert,UINT flags);WINUSERAPIBOOLWINAPIChangeMenuW(HMENU hMenu,UINT cmd,LPCWSTR lpszNewItem,UINT cmdInsert,UINT flags);#ifdef UNICODE#define ChangeMenu ChangeMenuW#else#define ChangeMenu ChangeMenuA#endif // !UNICODEWINUSERAPIBOOLWINAPIHiliteMenuItem(HWND hWnd,HMENU hMenu,UINT uIDHiliteItem,UINT uHilite);WINUSERAPIintWINAPIGetMenuStringA(HMENU hMenu,UINT uIDItem,LPSTR lpString,int nMaxCount,UINT uFlag);WINUSERAPIintWINAPIGetMenuStringW(HMENU hMenu,UINT uIDItem,LPWSTR lpString,int nMaxCount,UINT uFlag);#ifdef UNICODE#define GetMenuString GetMenuStringW#else#define GetMenuString GetMenuStringA#endif // !UNICODEWINUSERAPIUINTWINAPIGetMenuState(HMENU hMenu,UINT uId,UINT uFlags);WINUSERAPIBOOLWINAPIDrawMenuBar(HWND hWnd);WINUSERAPIHMENUWINAPIGetSystemMenu(HWND hWnd,BOOL bRevert);WINUSERAPIHMENUWINAPICreateMenu(VOID);WINUSERAPIHMENUWINAPICreatePopupMenu(VOID);WINUSERAPIBOOLWINAPIDestroyMenu(HMENU hMenu);WINUSERAPIDWORDWINAPICheckMenuItem(HMENU hMenu,UINT uIDCheckItem,UINT uCheck);WINUSERAPIBOOLWINAPIEnableMenuItem(HMENU hMenu,UINT uIDEnableItem,UINT uEnable);WINUSERAPIHMENUWINAPIGetSubMenu(HMENU hMenu,int nPos);WINUSERAPIUINTWINAPIGetMenuItemID(HMENU hMenu,int nPos);WINUSERAPIintWINAPIGetMenuItemCount(HMENU hMenu);WINUSERAPIBOOLWINAPIInsertMenuA(HMENU hMenu,UINT uPosition,UINT uFlags,UINT uIDNewItem,LPCSTR lpNewItem);WINUSERAPIBOOLWINAPIInsertMenuW(HMENU hMenu,UINT uPosition,UINT uFlags,UINT uIDNewItem,LPCWSTR lpNewItem);#ifdef UNICODE#define InsertMenu InsertMenuW#else#define InsertMenu InsertMenuA#endif // !UNICODEWINUSERAPIBOOLWINAPIAppendMenuA(HMENU hMenu,UINT uFlags,UINT uIDNewItem,LPCSTR lpNewItem);WINUSERAPIBOOLWINAPIAppendMenuW(HMENU hMenu,UINT uFlags,UINT uIDNewItem,LPCWSTR lpNewItem);#ifdef UNICODE#define AppendMenu AppendMenuW#else#define AppendMenu AppendMenuA#endif // !UNICODEWINUSERAPIBOOLWINAPIModifyMenuA(HMENU hMnu,UINT uPosition,UINT uFlags,UINT uIDNewItem,LPCSTR lpNewItem);WINUSERAPIBOOLWINAPIModifyMenuW(HMENU hMnu,UINT uPosition,UINT uFlags,UINT uIDNewItem,LPCWSTR lpNewItem);#ifdef UNICODE#define ModifyMenu ModifyMenuW#else#define ModifyMenu ModifyMenuA#endif // !UNICODEWINUSERAPIBOOLWINAPI RemoveMenu(HMENU hMenu,UINT uPosition,UINT uFlags);WINUSERAPIBOOLWINAPIDeleteMenu(HMENU hMenu,UINT uPosition,UINT uFlags);WINUSERAPIBOOLWINAPISetMenuItemBitmaps(HMENU hMenu,UINT uPosition,UINT uFlags,HBITMAP hBitmapUnchecked,HBITMAP hBitmapChecked);WINUSERAPILONGWINAPIGetMenuCheckMarkDimensions(VOID);WINUSERAPIBOOLWINAPITrackPopupMenu(HMENU hMenu,UINT uFlags,int x,int y,int nReserved,HWND hWnd,CONST RECT *prcRect);#if(WINVER >= 0x0400)/* return codes for WM_MENUCHAR */#define MNC_IGNORE 0#define MNC_CLOSE 1#define MNC_EXECUTE 2#define MNC_SELECT 3typedef struct tagTPMPARAMS{UINT cbSize; /* Size of structure */RECT rcExclude; /* Screen coordinates of rectangle to exclude when positioning */} TPMPARAMS;typedef TPMPARAMS FAR *LPTPMPARAMS;WINUSERAPI BOOL WINAPI TrackPopupMenuEx(HMENU, UINT, int, int, HWND, LPTPMPARAMS);#endif /* WINVER >= 0x0400 */#if(WINVER >= 0x0500)#define MNS_NOCHECK 0x80000000#define MNS_MODELESS 0x40000000#define MNS_DRAGDROP 0x20000000#define MNS_AUTODISMISS 0x10000000#define MNS_NOTIFYBYPOS 0x08000000#define MNS_CHECKORBMP 0x04000000#define MIM_MAXHEIGHT 0x00000001#define MIM_BACKGROUND 0x00000002#define MIM_HELPID 0x00000004#define MIM_MENUDATA 0x00000008#define MIM_STYLE 0x00000010#define MIM_APPLYTOSUBMENUS 0x80000000typedef struct tagMENUINFO{DWORD cbSize;DWORD fMask;DWORD dwStyle;UINT cyMax;HBRUSH hbrBack;DWORD dwContextHelpID;DWORD dwMenuData;} MENUINFO, FAR *LPMENUINFO;typedef MENUINFO CONST FAR *LPCMENUINFO;WINUSERAPIBOOLWINAPIGetMenuInfo(HMENU,LPMENUINFO);WINUSERAPIBOOLWINAPISetMenuInfo(HMENU,LPCMENUINFO);WINUSERAPIBOOLWINAPIEndMenu(VOID);/** WM_MENUDRAG return values.*/#define MND_CONTINUE 0#define MND_ENDMENU 1typedef struct tagMENUGETOBJECTINFO{DWORD dwFlags;UINT uPos;HMENU hmenu;PVOID riid;PVOID pvObj;} MENUGETOBJECTINFO, * PMENUGETOBJECTINFO;/** MENUGETOBJECTINFO dwFlags values*/#define MNGOF_GAP 0x00000003/** WM_MENUGETOBJECT return values*/#define MNGO_NOINTERFACE 0x00000000#define MNGO_NOERROR 0x00000001#endif /* WINVER >= 0x0500 */#if(WINVER >= 0x0400)#define MIIM_STATE 0x00000001#define MIIM_ID 0x00000002#define MIIM_SUBMENU 0x00000004#define MIIM_CHECKMARKS 0x00000008#define MIIM_TYPE 0x00000010#define MIIM_DATA 0x00000020#endif /* WINVER >= 0x0400 */#if(WINVER >= 0x0500)#define MIIM_STRING 0x00000040#define MIIM_BITMAP 0x00000080#define MIIM_FTYPE 0x00000100#define HBMMENU_CALLBACK ((HBITMAP) -1)#define HBMMENU_SYSTEM ((HBITMAP) 1)#define HBMMENU_MBAR_RESTORE ((HBITMAP) 2)#define HBMMENU_MBAR_MINIMIZE ((HBITMAP) 3)#define HBMMENU_MBAR_CLOSE ((HBITMAP) 5)#define HBMMENU_MBAR_CLOSE_D ((HBITMAP) 6)#define HBMMENU_MBAR_MINIMIZE_D ((HBITMAP) 7)#define HBMMENU_POPUP_CLOSE ((HBITMAP) 8)#define HBMMENU_POPUP_RESTORE ((HBITMAP) 9)#define HBMMENU_POPUP_MAXIMIZE ((HBITMAP) 10)#define HBMMENU_POPUP_MINIMIZE ((HBITMAP) 11)#endif /* WINVER >= 0x0500 */#if(WINVER >= 0x0400)typedef struct tagMENUITEMINFOA{UINT cbSize;UINT fMask;UINT fType; // used if MIIM_TYPE (4.0) or MIIM_FTYPE (>4.0)UINT fState; // used if MIIM_STATEUINT wID; // used if MIIM_IDHMENU hSubMenu; // used if MIIM_SUBMENUHBITMAP hbmpChecked; // used if MIIM_CHECKMARKSHBITMAP hbmpUnchecked; // used if MIIM_CHECKMARKSDWORD dwItemData; // used if MIIM_DATALPSTR dwTypeData; // used if MIIM_TYPE (4.0) or MIIM_STRING (>4.0)UINT cch; // used if MIIM_TYPE (4.0) or MIIM_STRING (>4.0)#if (_WIN32_WINNT >= 0x0500)HBITMAP hbmpItem; // used if MIIM_BITMAP#endif} MENUITEMINFOA, FAR *LPMENUITEMINFOA;typedef struct tagMENUITEMINFOW{UINT cbSize;UINT fMask;UINT fType; // used if MIIM_TYPE (4.0) or MIIM_FTYPE (>4.0)UINT fState; // used if MIIM_STATEUINT wID; // used if MIIM_IDHMENU hSubMenu; // used if MIIM_SUBMENUHBITMAP hbmpChecked; // used if MIIM_CHECKMARKSHBITMAP hbmpUnchecked; // used if MIIM_CHECKMARKSDWORD dwItemData; // used if MIIM_DATALPWSTR dwTypeData; // used if MIIM_TYPE (4.0) or MIIM_STRING (>4.0)UINT cch; // used if MIIM_TYPE (4.0) or MIIM_STRING (>4.0)#if (_WIN32_WINNT >= 0x0500)HBITMAP hbmpItem; // used if MIIM_BITMAP#endif} MENUITEMINFOW, FAR *LPMENUITEMINFOW;#ifdef UNICODEtypedef MENUITEMINFOW MENUITEMINFO;typedef LPMENUITEMINFOW LPMENUITEMINFO;#elsetypedef MENUITEMINFOA MENUITEMINFO;typedef LPMENUITEMINFOA LPMENUITEMINFO;#endif // UNICODEtypedef MENUITEMINFOA CONST FAR *LPCMENUITEMINFOA;typedef MENUITEMINFOW CONST FAR *LPCMENUITEMINFOW;#ifdef UNICODEtypedef LPCMENUITEMINFOW LPCMENUITEMINFO;#elsetypedef LPCMENUITEMINFOA LPCMENUITEMINFO;#endif // UNICODEWINUSERAPIBOOLWINAPIInsertMenuItemA(HMENU,UINT,BOOL,LPCMENUITEMINFOA);WINUSERAPIBOOLWINAPIInsertMenuItemW(HMENU,UINT,BOOL,LPCMENUITEMINFOW);#ifdef UNICODE#define InsertMenuItem InsertMenuItemW#else#define InsertMenuItem InsertMenuItemA#endif // !UNICODEWINUSERAPIBOOLWINAPIGetMenuItemInfoA(HMENU,UINT,BOOL,LPMENUITEMINFOA);WINUSERAPIBOOLWINAPIGetMenuItemInfoW(HMENU,UINT,BOOL,LPMENUITEMINFOW);#ifdef UNICODE#define GetMenuItemInfo GetMenuItemInfoW#else#define GetMenuItemInfo GetMenuItemInfoA#endif // !UNICODEWINUSERAPIBOOLWINAPISetMenuItemInfoA(HMENU,UINT,BOOL,LPCMENUITEMINFOA);WINUSERAPIBOOLWINAPISetMenuItemInfoW(HMENU,UINT,BOOL,LPCMENUITEMINFOW);#ifdef UNICODE#define SetMenuItemInfo SetMenuItemInfoW#else#define SetMenuItemInfo SetMenuItemInfoA#endif // !UNICODE#define GMDI_USEDISABLED 0x0001L#define GMDI_GOINTOPOPUPS 0x0002LWINUSERAPI UINT WINAPI GetMenuDefaultItem(HMENU hMenu, UINT fByPos, UINT gmdiFlags);WINUSERAPI BOOL WINAPI SetMenuDefaultItem(HMENU hMenu, UINT uItem, UINT fByPos);WINUSERAPI BOOL WINAPI GetMenuItemRect(HWND hWnd, HMENU hMenu, UINT uItem, LPRECT lprcItem);WINUSERAPI int WINAPI MenuItemFromPoint(HWND hWnd, HMENU hMenu, POINT ptScreen);#endif /* WINVER >= 0x0400 *//** Flags for TrackPopupMenu*/#define TPM_LEFTBUTTON 0x0000L#define TPM_RIGHTBUTTON 0x0002L#define TPM_LEFTALIGN 0x0000L#define TPM_CENTERALIGN 0x0004L#define TPM_RIGHTALIGN 0x0008L#if(WINVER >= 0x0400)#define TPM_TOPALIGN 0x0000L#define TPM_VCENTERALIGN 0x0010L#define TPM_BOTTOMALIGN 0x0020L#define TPM_HORIZONTAL 0x0000L /* Horz alignment matters more */#define TPM_VERTICAL 0x0040L /* Vert alignment matters more */#define TPM_NONOTIFY 0x0080L /* Don't send any notification msgs */#define TPM_RETURNCMD 0x0100L#endif /* WINVER >= 0x0400 */#if(WINVER >= 0x0500)#define TPM_RECURSE 0x0001L#endif /* WINVER >= 0x0500 */#endif /* !NOMENUS */#if(WINVER >= 0x0400)//// Drag-and-drop support//typedef struct tagDROPSTRUCT{HWND hwndSource;HWND hwndSink;DWORD wFmt;DWORD dwData;POINT ptDrop;DWORD dwControlData;} DROPSTRUCT, *PDROPSTRUCT, *LPDROPSTRUCT;#define DOF_EXECUTABLE 0x8001 // wFmt flags#define DOF_DOCUMENT 0x8002#define DOF_DIRECTORY 0x8003#define DOF_MULTIPLE 0x8004#define DOF_PROGMAN 0x0001#define DOF_SHELLDATA 0x0002#define DO_DROPFILE 0x454C4946L#define DO_PRINTFILE 0x544E5250LWINUSERAPIDWORDWINAPIDragObject(HWND, HWND, UINT, DWORD, HCURSOR);WINUSERAPIBOOLWINAPIDragDetect(HWND, POINT);#endif /* WINVER >= 0x0400 */WINUSERAPIBOOLWINAPIDrawIcon(HDC hDC,int X,int Y,HICON hIcon);#ifndef NODRAWTEXT/** DrawText() Format Flags*/#define DT_TOP 0x00000000#define DT_LEFT 0x00000000#define DT_CENTER 0x00000001#define DT_RIGHT 0x00000002#define DT_VCENTER 0x00000004#define DT_BOTTOM 0x00000008#define DT_WORDBREAK 0x00000010#define DT_SINGLELINE 0x00000020#define DT_EXPANDTABS 0x00000040#define DT_TABSTOP 0x00000080#define DT_NOCLIP 0x00000100#define DT_EXTERNALLEADING 0x00000200#define DT_CALCRECT 0x00000400#define DT_NOPREFIX 0x00000800#define DT_INTERNAL 0x00001000#if(WINVER >= 0x0400)#define DT_EDITCONTROL 0x00002000#define DT_PATH_ELLIPSIS 0x00004000#define DT_END_ELLIPSIS 0x00008000#define DT_MODIFYSTRING 0x00010000#define DT_RTLREADING 0x00020000#define DT_WORD_ELLIPSIS 0x00040000typedef struct tagDRAWTEXTPARAMS{UINT cbSize;int iTabLength;int iLeftMargin;int iRightMargin;UINT uiLengthDrawn;} DRAWTEXTPARAMS, FAR *LPDRAWTEXTPARAMS;#endif /* WINVER >= 0x0400 */WINUSERAPIintWINAPIDrawTextA(HDC hDC,LPCSTR lpString,int nCount,LPRECT lpRect,UINT uFormat);WINUSERAPIintWINAPIDrawTextW(HDC hDC,LPCWSTR lpString,int nCount,LPRECT lpRect,UINT uFormat);#ifdef UNICODE#define DrawText DrawTextW#else#define DrawText DrawTextA#endif // !UNICODE#if(WINVER >= 0x0400)WINUSERAPIintWINAPIDrawTextExA(HDC, LPSTR, int, LPRECT, UINT, LPDRAWTEXTPARAMS);WINUSERAPIintWINAPIDrawTextExW(HDC, LPWSTR, int, LPRECT, UINT, LPDRAWTEXTPARAMS);#ifdef UNICODE#define DrawTextEx DrawTextExW#else#define DrawTextEx DrawTextExA#endif // !UNICODE#endif /* WINVER >= 0x0400 */#endif /* !NODRAWTEXT */WINUSERAPIBOOLWINAPIGrayStringA(HDC hDC,HBRUSH hBrush,GRAYSTRINGPROC lpOutputFunc,LPARAM lpData,int nCount,int X,int Y,int nWidth,int nHeight);WINUSERAPIBOOLWINAPIGrayStringW(HDC hDC,HBRUSH hBrush,GRAYSTRINGPROC lpOutputFunc,LPARAM lpData,int nCount,int X,int Y,int nWidth,int nHeight);#ifdef UNICODE#define GrayString GrayStringW#else#define GrayString GrayStringA#endif // !UNICODE#if(WINVER >= 0x0400)/* Monolithic state-drawing routine *//* Image type */#define DST_COMPLEX 0x0000#define DST_TEXT 0x0001#define DST_PREFIXTEXT 0x0002#define DST_ICON 0x0003#define DST_BITMAP 0x0004/* State type */#define DSS_NORMAL 0x0000#define DSS_UNION 0x0010 /* Gray string appearance */#define DSS_DISABLED 0x0020#define DSS_MONO 0x0080#define DSS_RIGHT 0x8000WINUSERAPI BOOL WINAPI DrawStateA(HDC, HBRUSH, DRAWSTATEPROC, LPARAM, WPARAM, int, int, int, int, UINT);WINUSERAPI BOOL WINAPI DrawStateW(HDC, HBRUSH, DRAWSTATEPROC, LPARAM, WPARAM, int, int, int, int, UINT);#ifdef UNICODE#define DrawState DrawStateW#else#define DrawState DrawStateA#endif // !UNICODE#endif /* WINVER >= 0x0400 */WINUSERAPILONGWINAPITabbedTextOutA(HDC hDC,int X,int Y,LPCSTR lpString,int nCount,int nTabPositions,LPINT lpnTabStopPositions,int nTabOrigin);WINUSERAPILONGWINAPITabbedTextOutW(HDC hDC,int X,int Y,LPCWSTR lpString,int nCount,int nTabPositions,LPINT lpnTabStopPositions,int nTabOrigin);#ifdef UNICODE#define TabbedTextOut TabbedTextOutW#else#define TabbedTextOut TabbedTextOutA#endif // !UNICODEWINUSERAPIDWORDWINAPIGetTabbedTextExtentA(HDC hDC,LPCSTR lpString,int nCount,int nTabPositions,LPINT lpnTabStopPositions);WINUSERAPIDWORDWINAPIGetTabbedTextExtentW(HDC hDC,LPCWSTR lpString,int nCount,int nTabPositions,LPINT lpnTabStopPositions);#ifdef UNICODE#define GetTabbedTextExtent GetTabbedTextExtentW#else#define GetTabbedTextExtent GetTabbedTextExtentA#endif // !UNICODEWINUSERAPIBOOLWINAPIUpdateWindow(HWND hWnd);WINUSERAPIHWNDWINAPISetActiveWindow(HWND hWnd);WINUSERAPIHWNDWINAPIGetForegroundWindow(VOID);#if(WINVER >= 0x0400)WINUSERAPI BOOL WINAPI PaintDesktop(HDC hdc);#endif /* WINVER >= 0x0400 */WINUSERAPIBOOLWINAPISetForegroundWindow(HWND hWnd);WINUSERAPIHWNDWINAPIWindowFromDC(HDC hDC);WINUSERAPIHDCWINAPIGetDC(HWND hWnd);WINUSERAPIHDCWINAPIGetDCEx(HWND hWnd ,HRGN hrgnClip,DWORD flags);/** GetDCEx() flags*/#define DCX_WINDOW 0x00000001L#define DCX_CACHE 0x00000002L#define DCX_NORESETATTRS 0x00000004L#define DCX_CLIPCHILDREN 0x00000008L#define DCX_CLIPSIBLINGS 0x00000010L#define DCX_PARENTCLIP 0x00000020L#define DCX_EXCLUDERGN 0x00000040L#define DCX_INTERSECTRGN 0x00000080L#define DCX_EXCLUDEUPDATE 0x00000100L#define DCX_INTERSECTUPDATE 0x00000200L#define DCX_LOCKWINDOWUPDATE 0x00000400L#define DCX_VALIDATE 0x00200000LWINUSERAPIBOOLWINAPIAlignRects(LPRECT arc, DWORD cCount, DWORD iPrimary, DWORD dwFlags);//// AlignRects flags//#define CUDR_NORMAL 0x0000#define CUDR_NOSNAPTOGRID 0x0001#define CUDR_NORESOLVEPOSITIONS 0x0002#define CUDR_NOCLOSEGAPS 0x0004#define CUDR_NEGATIVECOORDS 0x0008#define CUDR_NOPRIMARY 0x0010WINUSERAPIHDCWINAPIGetWindowDC(HWND hWnd);WINUSERAPIintWINAPIReleaseDC(HWND hWnd,HDC hDC);WINUSERAPIHDCWINAPIBeginPaint(HWND hWnd,LPPAINTSTRUCT lpPaint);WINUSERAPIBOOLWINAPIEndPaint(HWND hWnd,CONST PAINTSTRUCT *lpPaint);WINUSERAPIBOOLWINAPIGetUpdateRect(HWND hWnd,LPRECT lpRect,BOOL bErase);WINUSERAPIintWINAPIGetUpdateRgn(HWND hWnd,HRGN hRgn,BOOL bErase);WINUSERAPIintWINAPISetWindowRgn(HWND hWnd,HRGN hRgn,BOOL bRedraw);WINUSERAPIintWINAPIGetWindowRgn(HWND hWnd,HRGN hRgn);WINUSERAPIintWINAPIExcludeUpdateRgn(HDC hDC,HWND hWnd);WINUSERAPIBOOLWINAPIInvalidateRect(HWND hWnd ,CONST RECT *lpRect,BOOL bErase);WINUSERAPIBOOLWINAPIValidateRect(HWND hWnd ,CONST RECT *lpRect);WINUSERAPIBOOLWINAPIInvalidateRgn(HWND hWnd,HRGN hRgn,BOOL bErase);WINUSERAPIBOOLWINAPIValidateRgn(HWND hWnd,HRGN hRgn);WINUSERAPIBOOLWINAPIRedrawWindow(HWND hWnd,CONST RECT *lprcUpdate,HRGN hrgnUpdate,UINT flags);/** RedrawWindow() flags*/#define RDW_INVALIDATE 0x0001#define RDW_INTERNALPAINT 0x0002#define RDW_ERASE 0x0004#define RDW_VALIDATE 0x0008#define RDW_NOINTERNALPAINT 0x0010#define RDW_NOERASE 0x0020#define RDW_NOCHILDREN 0x0040#define RDW_ALLCHILDREN 0x0080#define RDW_UPDATENOW 0x0100#define RDW_ERASENOW 0x0200#define RDW_FRAME 0x0400#define RDW_NOFRAME 0x0800/** LockWindowUpdate API*/WINUSERAPIBOOLWINAPILockWindowUpdate(HWND hWndLock);WINUSERAPIBOOLWINAPIScrollWindow(HWND hWnd,int XAmount,int YAmount,CONST RECT *lpRect,CONST RECT *lpClipRect);WINUSERAPIBOOLWINAPIScrollDC(HDC hDC,int dx,int dy,CONST RECT *lprcScroll,CONST RECT *lprcClip ,HRGN hrgnUpdate,LPRECT lprcUpdate);WINUSERAPIintWINAPIScrollWindowEx(HWND hWnd,int dx,int dy,CONST RECT *prcScroll,CONST RECT *prcClip ,HRGN hrgnUpdate,LPRECT prcUpdate,UINT flags);#define SW_SCROLLCHILDREN 0x0001 /* Scroll children within *lprcScroll. */#define SW_INVALIDATE 0x0002 /* Invalidate after scrolling */#define SW_ERASE 0x0004 /* If SW_INVALIDATE, don't send WM_ERASEBACKGROUND */#if(WINVER >= 0x0500)#define SW_SMOOTHSCROLL 0x0010 /* Use smooth scrolling */#endif /* WINVER >= 0x0500 */#ifndef NOSCROLLWINUSERAPIintWINAPISetScrollPos(HWND hWnd,int nBar,int nPos,BOOL bRedraw);WINUSERAPIintWINAPIGetScrollPos(HWND hWnd,int nBar);WINUSERAPIBOOLWINAPISetScrollRange(HWND hWnd,int nBar,int nMinPos,int nMaxPos,BOOL bRedraw);WINUSERAPIBOOLWINAPIGetScrollRange(HWND hWnd,int nBar,LPINT lpMinPos,LPINT lpMaxPos);WINUSERAPIBOOLWINAPIShowScrollBar(HWND hWnd,int wBar,BOOL bShow);WINUSERAPIBOOLWINAPIEnableScrollBar(HWND hWnd,UINT wSBflags,UINT wArrows);/** EnableScrollBar() flags*/#define ESB_ENABLE_BOTH 0x0000#define ESB_DISABLE_BOTH 0x0003#define ESB_DISABLE_LEFT 0x0001#define ESB_DISABLE_RIGHT 0x0002#define ESB_DISABLE_UP 0x0001#define ESB_DISABLE_DOWN 0x0002#define ESB_DISABLE_LTUP ESB_DISABLE_LEFT#define ESB_DISABLE_RTDN ESB_DISABLE_RIGHT#endif /* !NOSCROLL */WINUSERAPIBOOLWINAPISetPropA(HWND hWnd,LPCSTR lpString,HANDLE hData);WINUSERAPIBOOLWINAPISetPropW(HWND hWnd,LPCWSTR lpString,HANDLE hData);#ifdef UNICODE#define SetProp SetPropW#else#define SetProp SetPropA#endif // !UNICODEWINUSERAPIHANDLEWINAPIGetPropA(HWND hWnd,LPCSTR lpString);WINUSERAPIHANDLEWINAPIGetPropW(HWND hWnd,LPCWSTR lpString);#ifdef UNICODE#define GetProp GetPropW#else#define GetProp GetPropA#endif // !UNICODEWINUSERAPIHANDLEWINAPIRemovePropA(HWND hWnd,LPCSTR lpString);WINUSERAPIHANDLEWINAPIRemovePropW(HWND hWnd,LPCWSTR lpString);#ifdef UNICODE#define RemoveProp RemovePropW#else#define RemoveProp RemovePropA#endif // !UNICODEWINUSERAPIintWINAPIEnumPropsExA(HWND hWnd,PROPENUMPROCEXA lpEnumFunc,LPARAM lParam);WINUSERAPIintWINAPIEnumPropsExW(HWND hWnd,PROPENUMPROCEXW lpEnumFunc,LPARAM lParam);#ifdef UNICODE#define EnumPropsEx EnumPropsExW#else#define EnumPropsEx EnumPropsExA#endif // !UNICODEWINUSERAPIintWINAPIEnumPropsA(HWND hWnd,PROPENUMPROCA lpEnumFunc);WINUSERAPIintWINAPIEnumPropsW(HWND hWnd,PROPENUMPROCW lpEnumFunc);#ifdef UNICODE#define EnumProps EnumPropsW#else#define EnumProps EnumPropsA#endif // !UNICODEWINUSERAPIBOOLWINAPISetWindowTextA(HWND hWnd,LPCSTR lpString);WINUSERAPIBOOLWINAPISetWindowTextW(HWND hWnd,LPCWSTR lpString);#ifdef UNICODE#define SetWindowText SetWindowTextW#else#define SetWindowText SetWindowTextA#endif // !UNICODEWINUSERAPIintWINAPIGetWindowTextA(HWND hWnd,LPSTR lpString,int nMaxCount);WINUSERAPIintWINAPIGetWindowTextW(HWND hWnd,LPWSTR lpString,int nMaxCount);#ifdef UNICODE#define GetWindowText GetWindowTextW#else#define GetWindowText GetWindowTextA#endif // !UNICODEWINUSERAPIintWINAPIGetWindowTextLengthA(HWND hWnd);WINUSERAPIintWINAPIGetWindowTextLengthW(HWND hWnd);#ifdef UNICODE#define GetWindowTextLength GetWindowTextLengthW#else#define GetWindowTextLength GetWindowTextLengthA#endif // !UNICODEWINUSERAPIBOOLWINAPIGetClientRect(HWND hWnd,LPRECT lpRect);WINUSERAPIBOOLWINAPIGetWindowRect(HWND hWnd,LPRECT lpRect);WINUSERAPIBOOLWINAPIAdjustWindowRect(LPRECT lpRect,DWORD dwStyle,BOOL bMenu);WINUSERAPIBOOLWINAPIAdjustWindowRectEx(LPRECT lpRect,DWORD dwStyle,BOOL bMenu,DWORD dwExStyle);#if(WINVER >= 0x0400)#define HELPINFO_WINDOW 0x0001#define HELPINFO_MENUITEM 0x0002typedef struct tagHELPINFO /* Structure pointed to by lParam of WM_HELP */{UINT cbSize; /* Size in bytes of this struct */int iContextType; /* Either HELPINFO_WINDOW or HELPINFO_MENUITEM */int iCtrlId; /* Control Id or a Menu item Id. */HANDLE hItemHandle; /* hWnd of control or hMenu. */DWORD dwContextId; /* Context Id associated with this item */POINT MousePos; /* Mouse Position in screen co-ordinates */} HELPINFO, FAR *LPHELPINFO;WINUSERAPI BOOL WINAPI SetWindowContextHelpId(HWND, DWORD);WINUSERAPI DWORD WINAPI GetWindowContextHelpId(HWND);WINUSERAPI BOOL WINAPI SetMenuContextHelpId(HMENU, DWORD);WINUSERAPI DWORD WINAPI GetMenuContextHelpId(HMENU);#endif /* WINVER >= 0x0400 */#ifndef NOMB/** MessageBox() Flags*/#define MB_OK 0x00000000L#define MB_OKCANCEL 0x00000001L#define MB_ABORTRETRYIGNORE 0x00000002L#define MB_YESNOCANCEL 0x00000003L#define MB_YESNO 0x00000004L#define MB_RETRYCANCEL 0x00000005L#define MB_ICONHAND 0x00000010L#define MB_ICONQUESTION 0x00000020L#define MB_ICONEXCLAMATION 0x00000030L#define MB_ICONASTERISK 0x00000040L#if(WINVER >= 0x0400)#define MB_USERICON 0x00000080L#define MB_ICONWARNING MB_ICONEXCLAMATION#define MB_ICONERROR MB_ICONHAND#endif /* WINVER >= 0x0400 */#define MB_ICONINFORMATION MB_ICONASTERISK#define MB_ICONSTOP MB_ICONHAND#define MB_DEFBUTTON1 0x00000000L#define MB_DEFBUTTON2 0x00000100L#define MB_DEFBUTTON3 0x00000200L#if(WINVER >= 0x0400)#define MB_DEFBUTTON4 0x00000300L#endif /* WINVER >= 0x0400 */#define MB_APPLMODAL 0x00000000L#define MB_SYSTEMMODAL 0x00001000L#define MB_TASKMODAL 0x00002000L#if(WINVER >= 0x0400)#define MB_HELP 0x00004000L // Help Button#endif /* WINVER >= 0x0400 */#define MB_NOFOCUS 0x00008000L#define MB_SETFOREGROUND 0x00010000L#define MB_DEFAULT_DESKTOP_ONLY 0x00020000L#if(WINVER >= 0x0400)#define MB_TOPMOST 0x00040000L#define MB_RIGHT 0x00080000L#define MB_RTLREADING 0x00100000L#endif /* WINVER >= 0x0400 */#ifdef _WIN32_WINNT#if (_WIN32_WINNT >= 0x0400)#define MB_SERVICE_NOTIFICATION 0x00200000L#else#define MB_SERVICE_NOTIFICATION 0x00040000L#endif#define MB_SERVICE_NOTIFICATION_NT3X 0x00040000L#endif#define MB_TYPEMASK 0x0000000FL#define MB_ICONMASK 0x000000F0L#define MB_DEFMASK 0x00000F00L#define MB_MODEMASK 0x00003000L#define MB_MISCMASK 0x0000C000LWINUSERAPIintWINAPIMessageBoxA(HWND hWnd ,LPCSTR lpText,LPCSTR lpCaption,UINT uType);WINUSERAPIintWINAPIMessageBoxW(HWND hWnd ,LPCWSTR lpText,LPCWSTR lpCaption,UINT uType);#ifdef UNICODE#define MessageBox MessageBoxW#else#define MessageBox MessageBoxA#endif // !UNICODEWINUSERAPIintWINAPIMessageBoxExA(HWND hWnd ,LPCSTR lpText,LPCSTR lpCaption,UINT uType,WORD wLanguageId);WINUSERAPIintWINAPIMessageBoxExW(HWND hWnd ,LPCWSTR lpText,LPCWSTR lpCaption,UINT uType,WORD wLanguageId);#ifdef UNICODE#define MessageBoxEx MessageBoxExW#else#define MessageBoxEx MessageBoxExA#endif // !UNICODE#if(WINVER >= 0x0400)typedef void (CALLBACK *MSGBOXCALLBACK)(LPHELPINFO lpHelpInfo);typedef struct tagMSGBOXPARAMSA{UINT cbSize;HWND hwndOwner;HINSTANCE hInstance;LPCSTR lpszText;LPCSTR lpszCaption;DWORD dwStyle;LPCSTR lpszIcon;DWORD dwContextHelpId;MSGBOXCALLBACK lpfnMsgBoxCallback;DWORD dwLanguageId;} MSGBOXPARAMSA, *PMSGBOXPARAMSA, *LPMSGBOXPARAMSA;typedef struct tagMSGBOXPARAMSW{UINT cbSize;HWND hwndOwner;HINSTANCE hInstance;LPCWSTR lpszText;LPCWSTR lpszCaption;DWORD dwStyle;LPCWSTR lpszIcon;DWORD dwContextHelpId;MSGBOXCALLBACK lpfnMsgBoxCallback;DWORD dwLanguageId;} MSGBOXPARAMSW, *PMSGBOXPARAMSW, *LPMSGBOXPARAMSW;#ifdef UNICODEtypedef MSGBOXPARAMSW MSGBOXPARAMS;typedef PMSGBOXPARAMSW PMSGBOXPARAMS;typedef LPMSGBOXPARAMSW LPMSGBOXPARAMS;#elsetypedef MSGBOXPARAMSA MSGBOXPARAMS;typedef PMSGBOXPARAMSA PMSGBOXPARAMS;typedef LPMSGBOXPARAMSA LPMSGBOXPARAMS;#endif // UNICODEWINUSERAPI int WINAPI MessageBoxIndirectA(LPMSGBOXPARAMSA);WINUSERAPI int WINAPI MessageBoxIndirectW(LPMSGBOXPARAMSW);#ifdef UNICODE#define MessageBoxIndirect MessageBoxIndirectW#else#define MessageBoxIndirect MessageBoxIndirectA#endif // !UNICODE#endif /* WINVER >= 0x0400 */WINUSERAPIBOOLWINAPIMessageBeep(UINT uType);#endif /* !NOMB */WINUSERAPIintWINAPIShowCursor(BOOL bShow);WINUSERAPIBOOLWINAPISetCursorPos(int X,int Y);WINUSERAPIHCURSORWINAPISetCursor(HCURSOR hCursor);WINUSERAPIBOOLWINAPIGetCursorPos(LPPOINT lpPoint);WINUSERAPIBOOLWINAPIClipCursor(CONST RECT *lpRect);WINUSERAPIBOOLWINAPIGetClipCursor(LPRECT lpRect);WINUSERAPIHCURSORWINAPIGetCursor(VOID);WINUSERAPIBOOLWINAPICreateCaret(HWND hWnd,HBITMAP hBitmap ,int nWidth,int nHeight);WINUSERAPIUINTWINAPIGetCaretBlinkTime(VOID);WINUSERAPIBOOLWINAPISetCaretBlinkTime(UINT uMSeconds);WINUSERAPIBOOLWINAPIDestroyCaret(VOID);WINUSERAPIBOOLWINAPIHideCaret(HWND hWnd);WINUSERAPIBOOLWINAPIShowCaret(HWND hWnd);WINUSERAPIBOOLWINAPISetCaretPos(int X,int Y);WINUSERAPIBOOLWINAPIGetCaretPos(LPPOINT lpPoint);WINUSERAPIBOOLWINAPIClientToScreen(HWND hWnd,LPPOINT lpPoint);WINUSERAPIBOOLWINAPIScreenToClient(HWND hWnd,LPPOINT lpPoint);WINUSERAPIintWINAPIMapWindowPoints(HWND hWndFrom,HWND hWndTo,LPPOINT lpPoints,UINT cPoints);WINUSERAPIHWNDWINAPIWindowFromPoint(POINT Point);WINUSERAPIHWNDWINAPIChildWindowFromPoint(HWND hWndParent,POINT Point);#if(WINVER >= 0x0400)#define CWP_ALL 0x0000#define CWP_SKIPINVISIBLE 0x0001#define CWP_SKIPDISABLED 0x0002#define CWP_SKIPTRANSPARENT 0x0004WINUSERAPI HWND WINAPI ChildWindowFromPointEx(HWND, POINT, UINT);#endif /* WINVER >= 0x0400 */#ifndef NOCOLOR/** Color Types*/#define CTLCOLOR_MSGBOX 0#define CTLCOLOR_EDIT 1#define CTLCOLOR_LISTBOX 2#define CTLCOLOR_BTN 3#define CTLCOLOR_DLG 4#define CTLCOLOR_SCROLLBAR 5#define CTLCOLOR_STATIC 6#define CTLCOLOR_MAX 7#define COLOR_SCROLLBAR 0#define COLOR_BACKGROUND 1#define COLOR_ACTIVECAPTION 2#define COLOR_INACTIVECAPTION 3#define COLOR_MENU 4#define COLOR_WINDOW 5#define COLOR_WINDOWFRAME 6#define COLOR_MENUTEXT 7#define COLOR_WINDOWTEXT 8#define COLOR_CAPTIONTEXT 9#define COLOR_ACTIVEBORDER 10#define COLOR_INACTIVEBORDER 11#define COLOR_APPWORKSPACE 12#define COLOR_HIGHLIGHT 13#define COLOR_HIGHLIGHTTEXT 14#define COLOR_BTNFACE 15#define COLOR_BTNSHADOW 16#define COLOR_GRAYTEXT 17#define COLOR_BTNTEXT 18#define COLOR_INACTIVECAPTIONTEXT 19#define COLOR_BTNHIGHLIGHT 20#if(WINVER >= 0x0400)#define COLOR_3DDKSHADOW 21#define COLOR_3DLIGHT 22#define COLOR_INFOTEXT 23#define COLOR_INFOBK 24#endif /* WINVER >= 0x0400 */#if(WINVER >= 0x0500)#define COLOR_HOTLIGHT 26#define COLOR_GRADIENTACTIVECAPTION 27#define COLOR_GRADIENTINACTIVECAPTION 28#endif /* WINVER >= 0x0500 */#if(WINVER >= 0x0400)#define COLOR_DESKTOP COLOR_BACKGROUND#define COLOR_3DFACE COLOR_BTNFACE#define COLOR_3DSHADOW COLOR_BTNSHADOW#define COLOR_3DHIGHLIGHT COLOR_BTNHIGHLIGHT#define COLOR_3DHILIGHT COLOR_BTNHIGHLIGHT#define COLOR_BTNHILIGHT COLOR_BTNHIGHLIGHT#endif /* WINVER >= 0x0400 */WINUSERAPIDWORDWINAPIGetSysColor(int nIndex);#if(WINVER >= 0x0400)WINUSERAPIHBRUSHWINAPIGetSysColorBrush(int nIndex);#endif /* WINVER >= 0x0400 */WINUSERAPIBOOLWINAPISetSysColors(int cElements,CONST INT * lpaElements,CONST COLORREF * lpaRgbValues);#endif /* !NOCOLOR */WINUSERAPIBOOLWINAPIDrawFocusRect(HDC hDC,CONST RECT * lprc);WINUSERAPIintWINAPIFillRect(HDC hDC,CONST RECT *lprc,HBRUSH hbr);WINUSERAPIintWINAPIFrameRect(HDC hDC,CONST RECT *lprc,HBRUSH hbr);WINUSERAPIBOOLWINAPIInvertRect(HDC hDC,CONST RECT *lprc);WINUSERAPIBOOLWINAPISetRect(LPRECT lprc,int xLeft,int yTop,int xRight,int yBottom);WINUSERAPIBOOLWINAPISetRectEmpty(LPRECT lprc);WINUSERAPIBOOLWINAPICopyRect(LPRECT lprcDst,CONST RECT *lprcSrc);WINUSERAPIBOOLWINAPIInflateRect(LPRECT lprc,int dx,int dy);WINUSERAPIBOOLWINAPIIntersectRect(LPRECT lprcDst,CONST RECT *lprcSrc1,CONST RECT *lprcSrc2);WINUSERAPIBOOLWINAPIUnionRect(LPRECT lprcDst,CONST RECT *lprcSrc1,CONST RECT *lprcSrc2);WINUSERAPIBOOLWINAPISubtractRect(LPRECT lprcDst,CONST RECT *lprcSrc1,CONST RECT *lprcSrc2);WINUSERAPIBOOLWINAPIOffsetRect(LPRECT lprc,int dx,int dy);WINUSERAPIBOOLWINAPIIsRectEmpty(CONST RECT *lprc);WINUSERAPIBOOLWINAPIEqualRect(CONST RECT *lprc1,CONST RECT *lprc2);WINUSERAPIBOOLWINAPIPtInRect(CONST RECT *lprc,POINT pt);#ifndef NOWINOFFSETSWINUSERAPIWORDWINAPIGetWindowWord(HWND hWnd,int nIndex);WINUSERAPIWORDWINAPISetWindowWord(HWND hWnd,int nIndex,WORD wNewWord);WINUSERAPILONGWINAPIGetWindowLongA(HWND hWnd,int nIndex);WINUSERAPILONGWINAPIGetWindowLongW(HWND hWnd,int nIndex);#ifdef UNICODE#define GetWindowLong GetWindowLongW#else#define GetWindowLong GetWindowLongA#endif // !UNICODEWINUSERAPILONGWINAPISetWindowLongA(HWND hWnd,int nIndex,LONG dwNewLong);WINUSERAPILONGWINAPISetWindowLongW(HWND hWnd,int nIndex,LONG dwNewLong);#ifdef UNICODE#define SetWindowLong SetWindowLongW#else#define SetWindowLong SetWindowLongA#endif // !UNICODEWINUSERAPIWORDWINAPIGetClassWord(HWND hWnd,int nIndex);WINUSERAPIWORDWINAPISetClassWord(HWND hWnd,int nIndex,WORD wNewWord);WINUSERAPIDWORDWINAPIGetClassLongA(HWND hWnd,int nIndex);WINUSERAPIDWORDWINAPIGetClassLongW(HWND hWnd,int nIndex);#ifdef UNICODE#define GetClassLong GetClassLongW#else#define GetClassLong GetClassLongA#endif // !UNICODEWINUSERAPIDWORDWINAPISetClassLongA(HWND hWnd,int nIndex,LONG dwNewLong);WINUSERAPIDWORDWINAPISetClassLongW(HWND hWnd,int nIndex,LONG dwNewLong);#ifdef UNICODE#define SetClassLong SetClassLongW#else#define SetClassLong SetClassLongA#endif // !UNICODE#endif /* !NOWINOFFSETS */WINUSERAPIHWNDWINAPIGetDesktopWindow(VOID);WINUSERAPIHWNDWINAPIGetParent(HWND hWnd);WINUSERAPIHWNDWINAPISetParent(HWND hWndChild,HWND hWndNewParent);WINUSERAPIBOOLWINAPIEnumChildWindows(HWND hWndParent,WNDENUMPROC lpEnumFunc,LPARAM lParam);WINUSERAPIHWNDWINAPIFindWindowA(LPCSTR lpClassName ,LPCSTR lpWindowName);WINUSERAPIHWNDWINAPIFindWindowW(LPCWSTR lpClassName ,LPCWSTR lpWindowName);#ifdef UNICODE#define FindWindow FindWindowW#else#define FindWindow FindWindowA#endif // !UNICODE#if(WINVER >= 0x0400)WINUSERAPI HWND WINAPI FindWindowExA(HWND, HWND, LPCSTR, LPCSTR);WINUSERAPI HWND WINAPI FindWindowExW(HWND, HWND, LPCWSTR, LPCWSTR);#ifdef UNICODE#define FindWindowEx FindWindowExW#else#define FindWindowEx FindWindowExA#endif // !UNICODE#endif /* WINVER >= 0x0400 */WINUSERAPIBOOLWINAPIEnumWindows(WNDENUMPROC lpEnumFunc,LPARAM lParam);WINUSERAPIBOOLWINAPIEnumThreadWindows(DWORD dwThreadId,WNDENUMPROC lpfn,LPARAM lParam);#define EnumTaskWindows(hTask, lpfn, lParam) EnumThreadWindows((DWORD)hTask, lpfn, lParam)WINUSERAPIintWINAPIGetClassNameA(HWND hWnd,LPSTR lpClassName,int nMaxCount);WINUSERAPIintWINAPIGetClassNameW(HWND hWnd,LPWSTR lpClassName,int nMaxCount);#ifdef UNICODE#define GetClassName GetClassNameW#else#define GetClassName GetClassNameA#endif // !UNICODEWINUSERAPIHWNDWINAPIGetTopWindow(HWND hWnd);#define GetNextWindow(hWnd, wCmd) GetWindow(hWnd, wCmd)#define GetSysModalWindow() (NULL)#define SetSysModalWindow(hWnd) (NULL)WINUSERAPIDWORDWINAPIGetWindowThreadProcessId(HWND hWnd,LPDWORD lpdwProcessId);#define GetWindowTask(hWnd) \((HANDLE)GetWindowThreadProcessId(hWnd, NULL))WINUSERAPIHWNDWINAPIGetLastActivePopup(HWND hWnd);/** GetWindow() Constants*/#define GW_HWNDFIRST 0#define GW_HWNDLAST 1#define GW_HWNDNEXT 2#define GW_HWNDPREV 3#define GW_OWNER 4#define GW_CHILD 5#if (_WIN32_WINNT <= 0x0400)#define GW_MAX 5#else#define GW_ENABLEDPOPUP 6#define GW_MAX 6#endifWINUSERAPIHWNDWINAPIGetWindow(HWND hWnd,UINT uCmd);#ifndef NOWH#ifdef STRICTWINUSERAPIHHOOKWINAPISetWindowsHookA(int nFilterType,HOOKPROC pfnFilterProc);WINUSERAPIHHOOKWINAPISetWindowsHookW(int nFilterType,HOOKPROC pfnFilterProc);#ifdef UNICODE#define SetWindowsHook SetWindowsHookW#else#define SetWindowsHook SetWindowsHookA#endif // !UNICODE#else /* !STRICT */WINUSERAPIHOOKPROCWINAPISetWindowsHookA(int nFilterType,HOOKPROC pfnFilterProc);WINUSERAPIHOOKPROCWINAPISetWindowsHookW(int nFilterType,HOOKPROC pfnFilterProc);#ifdef UNICODE#define SetWindowsHook SetWindowsHookW#else#define SetWindowsHook SetWindowsHookA#endif // !UNICODE#endif /* !STRICT */WINUSERAPIBOOLWINAPIUnhookWindowsHook(int nCode,HOOKPROC pfnFilterProc);WINUSERAPIHHOOKWINAPISetWindowsHookExA(int idHook,HOOKPROC lpfn,HINSTANCE hmod,DWORD dwThreadId);WINUSERAPIHHOOKWINAPISetWindowsHookExW(int idHook,HOOKPROC lpfn,HINSTANCE hmod,DWORD dwThreadId);#ifdef UNICODE#define SetWindowsHookEx SetWindowsHookExW#else#define SetWindowsHookEx SetWindowsHookExA#endif // !UNICODEWINUSERAPIBOOLWINAPIUnhookWindowsHookEx(HHOOK hhk);WINUSERAPILRESULTWINAPICallNextHookEx(HHOOK hhk,int nCode,WPARAM wParam,LPARAM lParam);/** Macros for source-level compatibility with old functions.*/#ifdef STRICT#define DefHookProc(nCode, wParam, lParam, phhk)\CallNextHookEx(*phhk, nCode, wParam, lParam)#else#define DefHookProc(nCode, wParam, lParam, phhk)\CallNextHookEx((HHOOK)*phhk, nCode, wParam, lParam)#endif /* STRICT */#endif /* !NOWH */#ifndef NOMENUS// begin_r_winuser/* ;win40 -- A lot of MF_* flags have been renamed as MFT_* and MFS_* flags *//** Menu flags for Add/Check/EnableMenuItem()*/#define MF_INSERT 0x00000000L#define MF_CHANGE 0x00000080L#define MF_APPEND 0x00000100L#define MF_DELETE 0x00000200L#define MF_REMOVE 0x00001000L#define MF_BYCOMMAND 0x00000000L#define MF_BYPOSITION 0x00000400L#define MF_SEPARATOR 0x00000800L#define MF_ENABLED 0x00000000L#define MF_GRAYED 0x00000001L#define MF_DISABLED 0x00000002L#define MF_UNCHECKED 0x00000000L#define MF_CHECKED 0x00000008L#define MF_USECHECKBITMAPS 0x00000200L#define MF_STRING 0x00000000L#define MF_BITMAP 0x00000004L#define MF_OWNERDRAW 0x00000100L#define MF_POPUP 0x00000010L#define MF_MENUBARBREAK 0x00000020L#define MF_MENUBREAK 0x00000040L#define MF_UNHILITE 0x00000000L#define MF_HILITE 0x00000080L#if(WINVER >= 0x0400)#define MF_DEFAULT 0x00001000L#endif /* WINVER >= 0x0400 */#define MF_SYSMENU 0x00002000L#define MF_HELP 0x00004000L#if(WINVER >= 0x0400)#define MF_RIGHTJUSTIFY 0x00004000L#endif /* WINVER >= 0x0400 */#define MF_MOUSESELECT 0x00008000L#if(WINVER >= 0x0400)#define MF_END 0x00000080L /* Obsolete -- only used by old RES files */#endif /* WINVER >= 0x0400 */#if(WINVER >= 0x0400)#define MFT_STRING MF_STRING#define MFT_BITMAP MF_BITMAP#define MFT_MENUBARBREAK MF_MENUBARBREAK#define MFT_MENUBREAK MF_MENUBREAK#define MFT_OWNERDRAW MF_OWNERDRAW#define MFT_RADIOCHECK 0x00000200L#define MFT_SEPARATOR MF_SEPARATOR#define MFT_RIGHTORDER 0x00002000L#define MFT_RIGHTJUSTIFY MF_RIGHTJUSTIFY/* Menu flags for Add/Check/EnableMenuItem() */#define MFS_GRAYED 0x00000003L#define MFS_DISABLED MFS_GRAYED#define MFS_CHECKED MF_CHECKED#define MFS_HILITE MF_HILITE#define MFS_ENABLED MF_ENABLED#define MFS_UNCHECKED MF_UNCHECKED#define MFS_UNHILITE MF_UNHILITE#define MFS_DEFAULT MF_DEFAULT#if(WINVER >= 0x0500)#define MFS_MASK 0x0000108BL#define MFS_HOTTRACKDRAWN 0x10000000L#define MFS_CACHEDBMP 0x20000000L#define MFS_BOTTOMGAPDROP 0x40000000L#define MFS_TOPGAPDROP 0x80000000L#define MFS_GAPDROP 0xC0000000L#endif /* WINVER >= 0x0500 */#endif /* WINVER >= 0x0400 */// end_r_winuser#if(WINVER >= 0x0400)WINUSERAPIBOOLWINAPICheckMenuRadioItem(HMENU, UINT, UINT, UINT, UINT);#endif /* WINVER >= 0x0400 *//** Menu item resource format*/typedef struct {WORD versionNumber;WORD offset;} MENUITEMTEMPLATEHEADER, *PMENUITEMTEMPLATEHEADER;typedef struct { // version 0WORD mtOption;WORD mtID;WCHAR mtString[1];} MENUITEMTEMPLATE, *PMENUITEMTEMPLATE;#define MF_END 0x00000080L // r_winuser#endif /* !NOMENUS */#ifndef NOSYSCOMMANDS// begin_r_winuser/** 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 *//** Obsolete names*/#define SC_ICON SC_MINIMIZE#define SC_ZOOM SC_MAXIMIZE// end_r_winuser#endif /* !NOSYSCOMMANDS *//** Resource Loading Routines*/WINUSERAPIHBITMAPWINAPILoadBitmapA(HINSTANCE hInstance,LPCSTR lpBitmapName);WINUSERAPIHBITMAPWINAPILoadBitmapW(HINSTANCE hInstance,LPCWSTR lpBitmapName);#ifdef UNICODE#define LoadBitmap LoadBitmapW#else#define LoadBitmap LoadBitmapA#endif // !UNICODEWINUSERAPIHCURSORWINAPILoadCursorA(HINSTANCE hInstance,LPCSTR lpCursorName);WINUSERAPIHCURSORWINAPILoadCursorW(HINSTANCE hInstance,LPCWSTR lpCursorName);#ifdef UNICODE#define LoadCursor LoadCursorW#else#define LoadCursor LoadCursorA#endif // !UNICODEWINUSERAPIHCURSORWINAPILoadCursorFromFileA(LPCSTR lpFileName);WINUSERAPIHCURSORWINAPILoadCursorFromFileW(LPCWSTR lpFileName);#ifdef UNICODE#define LoadCursorFromFile LoadCursorFromFileW#else#define LoadCursorFromFile LoadCursorFromFileA#endif // !UNICODEWINUSERAPIHCURSORWINAPICreateCursor(HINSTANCE hInst,int xHotSpot,int yHotSpot,int nWidth,int nHeight,CONST VOID *pvANDPlane,CONST VOID *pvXORPlane);WINUSERAPIBOOLWINAPIDestroyCursor(HCURSOR hCursor);#ifndef _MAC#define CopyCursor(pcur) ((HCURSOR)CopyIcon((HICON)(pcur)))#elseWINUSERAPIHCURSORWINAPICopyCursor(HCURSOR hCursor);#endif/** Standard Cursor IDs*/#define IDC_ARROW MAKEINTRESOURCE(32512)#define IDC_IBEAM MAKEINTRESOURCE(32513)#define IDC_WAIT MAKEINTRESOURCE(32514)#define IDC_CROSS MAKEINTRESOURCE(32515)#define IDC_UPARROW MAKEINTRESOURCE(32516)#define IDC_SIZE MAKEINTRESOURCE(32640) /* OBSOLETE: use IDC_SIZEALL */#define IDC_ICON MAKEINTRESOURCE(32641) /* OBSOLETE: use IDC_ARROW */#define IDC_SIZENWSE MAKEINTRESOURCE(32642)#define IDC_SIZENESW MAKEINTRESOURCE(32643)#define IDC_SIZEWE MAKEINTRESOURCE(32644)#define IDC_SIZENS MAKEINTRESOURCE(32645)#define IDC_SIZEALL MAKEINTRESOURCE(32646)#define IDC_NO MAKEINTRESOURCE(32648) /* not in win3.1 */#if(WINVER >= 0x0500)#define IDC_HAND MAKEINTRESOURCE(32649)#endif /* WINVER >= 0x0500 */#define IDC_APPSTARTING MAKEINTRESOURCE(32650) /* not in win3.1 */#if(WINVER >= 0x0400)#define IDC_HELP MAKEINTRESOURCE(32651)#endif /* WINVER >= 0x0400 */WINUSERAPIBOOLWINAPISetSystemCursor(HCURSOR hcur,DWORD id);typedef struct _ICONINFO {BOOL fIcon;DWORD xHotspot;DWORD yHotspot;HBITMAP hbmMask;HBITMAP hbmColor;} ICONINFO;typedef ICONINFO *PICONINFO;WINUSERAPIHICONWINAPILoadIconA(HINSTANCE hInstance,LPCSTR lpIconName);WINUSERAPIHICONWINAPILoadIconW(HINSTANCE hInstance,LPCWSTR lpIconName);#ifdef UNICODE#define LoadIcon LoadIconW#else#define LoadIcon LoadIconA#endif // !UNICODEWINUSERAPIHICONWINAPICreateIcon(HINSTANCE hInstance,int nWidth,int nHeight,BYTE cPlanes,BYTE cBitsPixel,CONST BYTE *lpbANDbits,CONST BYTE *lpbXORbits);WINUSERAPIBOOLWINAPIDestroyIcon(HICON hIcon);WINUSERAPIintWINAPILookupIconIdFromDirectory(PBYTE presbits,BOOL fIcon);#if(WINVER >= 0x0400)WINUSERAPIintWINAPILookupIconIdFromDirectoryEx(PBYTE presbits,BOOL fIcon,int cxDesired,int cyDesired,UINT Flags);#endif /* WINVER >= 0x0400 */WINUSERAPIHICONWINAPICreateIconFromResource(PBYTE presbits,DWORD dwResSize,BOOL fIcon,DWORD dwVer);#if(WINVER >= 0x0400)WINUSERAPIHICONWINAPICreateIconFromResourceEx(PBYTE presbits,DWORD dwResSize,BOOL fIcon,DWORD dwVer,int cxDesired,int cyDesired,UINT Flags);/* Icon/Cursor header */typedef struct tagCURSORSHAPE{int xHotSpot;int yHotSpot;int cx;int cy;int cbWidth;BYTE Planes;BYTE BitsPixel;} CURSORSHAPE, FAR *LPCURSORSHAPE;#endif /* WINVER >= 0x0400 */#define IMAGE_BITMAP 0#define IMAGE_ICON 1#define IMAGE_CURSOR 2#if(WINVER >= 0x0400)#define IMAGE_ENHMETAFILE 3#define LR_DEFAULTCOLOR 0x0000#define LR_MONOCHROME 0x0001#define LR_COLOR 0x0002#define LR_COPYRETURNORG 0x0004#define LR_COPYDELETEORG 0x0008#define LR_LOADFROMFILE 0x0010#define LR_LOADTRANSPARENT 0x0020#define LR_DEFAULTSIZE 0x0040#define LR_VGACOLOR 0x0080#define LR_LOADMAP3DCOLORS 0x1000#define LR_CREATEDIBSECTION 0x2000#define LR_COPYFROMRESOURCE 0x4000#define LR_SHARED 0x8000WINUSERAPIHANDLEWINAPILoadImageA(HINSTANCE,LPCSTR,UINT,int,int,UINT);WINUSERAPIHANDLEWINAPILoadImageW(HINSTANCE,LPCWSTR,UINT,int,int,UINT);#ifdef UNICODE#define LoadImage LoadImageW#else#define LoadImage LoadImageA#endif // !UNICODEWINUSERAPIHANDLEWINAPICopyImage(HANDLE,UINT,int,int,UINT);#define DI_MASK 0x0001#define DI_IMAGE 0x0002#define DI_NORMAL 0x0003#define DI_COMPAT 0x0004#define DI_DEFAULTSIZE 0x0008WINUSERAPI BOOL WINAPI DrawIconEx(HDC hdc, int xLeft, int yTop,HICON hIcon, int cxWidth, int cyWidth,UINT istepIfAniCur, HBRUSH hbrFlickerFreeDraw, UINT diFlags);#endif /* WINVER >= 0x0400 */WINUSERAPIHICONWINAPICreateIconIndirect(PICONINFO piconinfo);WINUSERAPIHICONWINAPICopyIcon(HICON hIcon);WINUSERAPIBOOLWINAPIGetIconInfo(HICON hIcon,PICONINFO piconinfo);#if(WINVER >= 0x0400)#define RES_ICON 1#define RES_CURSOR 2#endif /* WINVER >= 0x0400 */#ifdef OEMRESOURCE// begin_r_winuser/** OEM Resource Ordinal Numbers*/#define OBM_CLOSE 32754#define OBM_UPARROW 32753#define OBM_DNARROW 32752#define OBM_RGARROW 32751#define OBM_LFARROW 32750#define OBM_REDUCE 32749#define OBM_ZOOM 32748#define OBM_RESTORE 32747#define OBM_REDUCED 32746#define OBM_ZOOMD 32745#define OBM_RESTORED 32744#define OBM_UPARROWD 32743#define OBM_DNARROWD 32742#define OBM_RGARROWD 32741#define OBM_LFARROWD 32740#define OBM_MNARROW 32739#define OBM_COMBO 32738#define OBM_UPARROWI 32737#define OBM_DNARROWI 32736#define OBM_RGARROWI 32735#define OBM_LFARROWI 32734#define OBM_OLD_CLOSE 32767#define OBM_SIZE 32766#define OBM_OLD_UPARROW 32765#define OBM_OLD_DNARROW 32764#define OBM_OLD_RGARROW 32763#define OBM_OLD_LFARROW 32762#define OBM_BTSIZE 32761#define OBM_CHECK 32760#define OBM_CHECKBOXES 32759#define OBM_BTNCORNERS 32758#define OBM_OLD_REDUCE 32757#define OBM_OLD_ZOOM 32756#define OBM_OLD_RESTORE 32755#define OCR_NORMAL 32512#define OCR_IBEAM 32513#define OCR_WAIT 32514#define OCR_CROSS 32515#define OCR_UP 32516#define OCR_SIZE 32640 /* OBSOLETE: use OCR_SIZEALL */#define OCR_ICON 32641 /* OBSOLETE: use OCR_NORMAL */#define OCR_SIZENWSE 32642#define OCR_SIZENESW 32643#define OCR_SIZEWE 32644#define OCR_SIZENS 32645#define OCR_SIZEALL 32646#define OCR_ICOCUR 32647 /* OBSOLETE: use OIC_WINLOGO */#define OCR_NO 32648#if(WINVER >= 0x0500)#define OCR_HAND 32649#endif /* WINVER >= 0x0500 */#if(WINVER >= 0x0400)#define OCR_APPSTARTING 32650#endif /* WINVER >= 0x0400 */#define OIC_SAMPLE 32512#define OIC_HAND 32513#define OIC_QUES 32514#define OIC_BANG 32515#define OIC_NOTE 32516#if(WINVER >= 0x0400)#define OIC_WINLOGO 32517#define OIC_WARNING OIC_BANG#define OIC_ERROR OIC_HAND#define OIC_INFORMATION OIC_NOTE#endif /* WINVER >= 0x0400 */// end_r_winuser#endif /* OEMRESOURCE */#define ORD_LANGDRIVER 1 /* The ordinal number for the entry point of** language drivers.*/#ifndef NOICONS// begin_r_winuser/** Standard Icon IDs*/#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 */#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 */#endif /* RC_INVOKED */#if(WINVER >= 0x0400)#define IDI_WARNING IDI_EXCLAMATION#define IDI_ERROR IDI_HAND#define IDI_INFORMATION IDI_ASTERISK#endif /* WINVER >= 0x0400 */// end_r_winuser#endif /* !NOICONS */WINUSERAPIintWINAPILoadStringA(HINSTANCE hInstance,UINT uID,LPSTR lpBuffer,int nBufferMax);WINUSERAPIintWINAPILoadStringW(HINSTANCE hInstance,UINT uID,LPWSTR lpBuffer,int nBufferMax);#ifdef UNICODE#define LoadString LoadStringW#else#define LoadString LoadStringA#endif // !UNICODE// begin_r_winuser/** Dialog Box Command IDs*/#define IDOK 1#define IDCANCEL 2#define IDABORT 3#define IDRETRY 4#define IDIGNORE 5#define IDYES 6#define IDNO 7#if(WINVER >= 0x0400)#define IDCLOSE 8#define IDHELP 9#endif /* WINVER >= 0x0400 */// end_r_winuser#ifndef NOCTLMGR/** Control Manager Structures and Definitions*/#ifndef NOWINSTYLES// begin_r_winuser/** Edit Control Styles*/#define ES_LEFT 0x0000L#define ES_CENTER 0x0001L#define ES_RIGHT 0x0002L#define ES_MULTILINE 0x0004L#define ES_UPPERCASE 0x0008L#define ES_LOWERCASE 0x0010L#define ES_PASSWORD 0x0020L#define ES_AUTOVSCROLL 0x0040L#define ES_AUTOHSCROLL 0x0080L#define ES_NOHIDESEL 0x0100L#define ES_OEMCONVERT 0x0400L#define ES_READONLY 0x0800L#define ES_WANTRETURN 0x1000L#if(WINVER >= 0x0400)#define ES_NUMBER 0x2000L#endif /* WINVER >= 0x0400 */// end_r_winuser#endif /* !NOWINSTYLES *//** Edit Control Notification Codes*/#define EN_SETFOCUS 0x0100#define EN_KILLFOCUS 0x0200#define EN_CHANGE 0x0300#define EN_UPDATE 0x0400#define EN_ERRSPACE 0x0500#define EN_MAXTEXT 0x0501#define EN_HSCROLL 0x0601#define EN_VSCROLL 0x0602#if(WINVER >= 0x0400)/* Edit control EM_SETMARGIN parameters */#define EC_LEFTMARGIN 0x0001#define EC_RIGHTMARGIN 0x0002#define EC_USEFONTINFO 0xffff#endif /* WINVER >= 0x0400 */#if(WINVER >= 0x0500)/* wParam of EM_GET/SETIMESTATUS */#define EMSIS_COMPOSITIONSTRING 0x0001/* lParam for EMSIS_COMPOSITIONSTRING */#define EIMES_GETCOMPSTRATONCE 0x0001#define EIMES_CANCELCOMPSTRINFOCUS 0x0002#define EIMES_COMPLETECOMPSTRKILLFOCUS 0x0004#endif /* WINVER >= 0x0500 */#ifndef NOWINMESSAGES// begin_r_winuser/** Edit Control Messages*/#define EM_GETSEL 0x00B0#define EM_SETSEL 0x00B1#define EM_GETRECT 0x00B2#define EM_SETRECT 0x00B3#define EM_SETRECTNP 0x00B4#define EM_SCROLL 0x00B5#define EM_LINESCROLL 0x00B6#define EM_SCROLLCARET 0x00B7#define EM_GETMODIFY 0x00B8#define EM_SETMODIFY 0x00B9#define EM_GETLINECOUNT 0x00BA#define EM_LINEINDEX 0x00BB#define EM_SETHANDLE 0x00BC#define EM_GETHANDLE 0x00BD#define EM_GETTHUMB 0x00BE#define EM_LINELENGTH 0x00C1#define EM_REPLACESEL 0x00C2#define EM_GETLINE 0x00C4#define EM_LIMITTEXT 0x00C5#define EM_CANUNDO 0x00C6#define EM_UNDO 0x00C7#define EM_FMTLINES 0x00C8#define EM_LINEFROMCHAR 0x00C9#define EM_SETTABSTOPS 0x00CB#define EM_SETPASSWORDCHAR 0x00CC#define EM_EMPTYUNDOBUFFER 0x00CD#define EM_GETFIRSTVISIBLELINE 0x00CE#define EM_SETREADONLY 0x00CF#define EM_SETWORDBREAKPROC 0x00D0#define EM_GETWORDBREAKPROC 0x00D1#define EM_GETPASSWORDCHAR 0x00D2#if(WINVER >= 0x0400)#define EM_SETMARGINS 0x00D3#define EM_GETMARGINS 0x00D4#define EM_SETLIMITTEXT EM_LIMITTEXT /* ;win40 Name change */#define EM_GETLIMITTEXT 0x00D5#define EM_POSFROMCHAR 0x00D6#define EM_CHARFROMPOS 0x00D7#endif /* WINVER >= 0x0400 */#if(WINVER >= 0x0500)#define EM_SETIMESTATUS 0x00D8#define EM_GETIMESTATUS 0x00D9#endif /* WINVER >= 0x0500 */// end_r_winuser#endif /* !NOWINMESSAGES *//** EDITWORDBREAKPROC code values*/#define WB_LEFT 0#define WB_RIGHT 1#define WB_ISDELIMITER 2// begin_r_winuser/** Button Control Styles*/#define BS_PUSHBUTTON 0x00000000L#define BS_DEFPUSHBUTTON 0x00000001L#define BS_CHECKBOX 0x00000002L#define BS_AUTOCHECKBOX 0x00000003L#define BS_RADIOBUTTON 0x00000004L#define BS_3STATE 0x00000005L#define BS_AUTO3STATE 0x00000006L#define BS_GROUPBOX 0x00000007L#define BS_USERBUTTON 0x00000008L#define BS_AUTORADIOBUTTON 0x00000009L#define BS_OWNERDRAW 0x0000000BL#define BS_LEFTTEXT 0x00000020L#if(WINVER >= 0x0400)#define BS_TEXT 0x00000000L#define BS_ICON 0x00000040L#define BS_BITMAP 0x00000080L#define BS_LEFT 0x00000100L#define BS_RIGHT 0x00000200L#define BS_CENTER 0x00000300L#define BS_TOP 0x00000400L#define BS_BOTTOM 0x00000800L#define BS_VCENTER 0x00000C00L#define BS_PUSHLIKE 0x00001000L#define BS_MULTILINE 0x00002000L#define BS_NOTIFY 0x00004000L#define BS_FLAT 0x00008000L#define BS_RIGHTBUTTON BS_LEFTTEXT#endif /* WINVER >= 0x0400 *//** User Button Notification Codes*/#define BN_CLICKED 0#define BN_PAINT 1#define BN_HILITE 2#define BN_UNHILITE 3#define BN_DISABLE 4#define BN_DOUBLECLICKED 5#if(WINVER >= 0x0400)#define BN_PUSHED BN_HILITE#define BN_UNPUSHED BN_UNHILITE#define BN_DBLCLK BN_DOUBLECLICKED#define BN_SETFOCUS 6#define BN_KILLFOCUS 7#endif /* WINVER >= 0x0400 *//** Button Control Messages*/#define BM_GETCHECK 0x00F0#define BM_SETCHECK 0x00F1#define BM_GETSTATE 0x00F2#define BM_SETSTATE 0x00F3#define BM_SETSTYLE 0x00F4#if(WINVER >= 0x0400)#define BM_CLICK 0x00F5#define BM_GETIMAGE 0x00F6#define BM_SETIMAGE 0x00F7#define BST_UNCHECKED 0x0000#define BST_CHECKED 0x0001#define BST_INDETERMINATE 0x0002#define BST_PUSHED 0x0004#define BST_FOCUS 0x0008#endif /* WINVER >= 0x0400 *//** Static Control Constants*/#define SS_LEFT 0x00000000L#define SS_CENTER 0x00000001L#define SS_RIGHT 0x00000002L#define SS_ICON 0x00000003L#define SS_BLACKRECT 0x00000004L#define SS_GRAYRECT 0x00000005L#define SS_WHITERECT 0x00000006L#define SS_BLACKFRAME 0x00000007L#define SS_GRAYFRAME 0x00000008L#define SS_WHITEFRAME 0x00000009L#define SS_USERITEM 0x0000000AL#define SS_SIMPLE 0x0000000BL#define SS_LEFTNOWORDWRAP 0x0000000CL#if(WINVER >= 0x0400)#define SS_OWNERDRAW 0x0000000DL#define SS_BITMAP 0x0000000EL#define SS_ENHMETAFILE 0x0000000FL#define SS_ETCHEDHORZ 0x00000010L#define SS_ETCHEDVERT 0x00000011L#define SS_ETCHEDFRAME 0x00000012L#define SS_TYPEMASK 0x0000001FL#endif /* WINVER >= 0x0400 */#define SS_NOPREFIX 0x00000080L /* Don't do "&" character translation */#if(WINVER >= 0x0400)#define SS_NOTIFY 0x00000100L#define SS_CENTERIMAGE 0x00000200L#define SS_RIGHTJUST 0x00000400L#define SS_REALSIZEIMAGE 0x00000800L#define SS_SUNKEN 0x00001000L#define SS_ENDELLIPSIS 0x00004000L#define SS_PATHELLIPSIS 0x00008000L#define SS_WORDELLIPSIS 0x0000C000L#define SS_ELLIPSISMASK 0x0000C000L#endif /* WINVER >= 0x0400 */// end_r_winuser#ifndef NOWINMESSAGES/** Static Control Mesages*/#define STM_SETICON 0x0170#define STM_GETICON 0x0171#if(WINVER >= 0x0400)#define STM_SETIMAGE 0x0172#define STM_GETIMAGE 0x0173#define STN_CLICKED 0#define STN_DBLCLK 1#define STN_ENABLE 2#define STN_DISABLE 3#endif /* WINVER >= 0x0400 */#define STM_MSGMAX 0x0174#endif /* !NOWINMESSAGES *//** Dialog window class*/#define WC_DIALOG (MAKEINTATOM(0x8002))/** Get/SetWindowWord/Long offsets for use with WC_DIALOG windows*/#define DWL_MSGRESULT 0#define DWL_DLGPROC 4#define DWL_USER 8/** Dialog Manager Routines*/#ifndef NOMSGWINUSERAPIBOOLWINAPIIsDialogMessageA(HWND hDlg,LPMSG lpMsg);WINUSERAPIBOOLWINAPIIsDialogMessageW(HWND hDlg,LPMSG lpMsg);#ifdef UNICODE#define IsDialogMessage IsDialogMessageW#else#define IsDialogMessage IsDialogMessageA#endif // !UNICODE#endif /* !NOMSG */WINUSERAPIBOOLWINAPIMapDialogRect(HWND hDlg,LPRECT lpRect);WINUSERAPIintWINAPIDlgDirListA(HWND hDlg,LPSTR lpPathSpec,int nIDListBox,int nIDStaticPath,UINT uFileType);WINUSERAPIintWINAPIDlgDirListW(HWND hDlg,LPWSTR lpPathSpec,int nIDListBox,int nIDStaticPath,UINT uFileType);#ifdef UNICODE#define DlgDirList DlgDirListW#else#define DlgDirList DlgDirListA#endif // !UNICODE/** DlgDirList, DlgDirListComboBox flags values*/#define DDL_READWRITE 0x0000#define DDL_READONLY 0x0001#define DDL_HIDDEN 0x0002#define DDL_SYSTEM 0x0004#define DDL_DIRECTORY 0x0010#define DDL_ARCHIVE 0x0020#define DDL_POSTMSGS 0x2000#define DDL_DRIVES 0x4000#define DDL_EXCLUSIVE 0x8000WINUSERAPIBOOLWINAPIDlgDirSelectExA(HWND hDlg,LPSTR lpString,int nCount,int nIDListBox);WINUSERAPIBOOLWINAPIDlgDirSelectExW(HWND hDlg,LPWSTR lpString,int nCount,int nIDListBox);#ifdef UNICODE#define DlgDirSelectEx DlgDirSelectExW#else#define DlgDirSelectEx DlgDirSelectExA#endif // !UNICODEWINUSERAPIintWINAPIDlgDirListComboBoxA(HWND hDlg,LPSTR lpPathSpec,int nIDComboBox,int nIDStaticPath,UINT uFiletype);WINUSERAPIintWINAPIDlgDirListComboBoxW(HWND hDlg,LPWSTR lpPathSpec,int nIDComboBox,int nIDStaticPath,UINT uFiletype);#ifdef UNICODE#define DlgDirListComboBox DlgDirListComboBoxW#else#define DlgDirListComboBox DlgDirListComboBoxA#endif // !UNICODEWINUSERAPIBOOLWINAPIDlgDirSelectComboBoxExA(HWND hDlg,LPSTR lpString,int nCount,int nIDComboBox);WINUSERAPIBOOLWINAPIDlgDirSelectComboBoxExW(HWND hDlg,LPWSTR lpString,int nCount,int nIDComboBox);#ifdef UNICODE#define DlgDirSelectComboBoxEx DlgDirSelectComboBoxExW#else#define DlgDirSelectComboBoxEx DlgDirSelectComboBoxExA#endif // !UNICODE// begin_r_winuser/** Dialog Styles*/#define DS_ABSALIGN 0x01L#define DS_SYSMODAL 0x02L#define DS_LOCALEDIT 0x20L /* Edit items get Local storage. */#define DS_SETFONT 0x40L /* User specified font for Dlg controls */#define DS_MODALFRAME 0x80L /* Can be combined with WS_CAPTION */#define DS_NOIDLEMSG 0x100L /* WM_ENTERIDLE message will not be sent */#define DS_SETFOREGROUND 0x200L /* not in win3.1 */#if(WINVER >= 0x0400)#define DS_3DLOOK 0x0004L#define DS_FIXEDSYS 0x0008L#define DS_NOFAILCREATE 0x0010L#define DS_CONTROL 0x0400L#define DS_CENTER 0x0800L#define DS_CENTERMOUSE 0x1000L#define DS_CONTEXTHELP 0x2000L#endif /* WINVER >= 0x0400 */// end_r_winuser#define DM_GETDEFID (WM_USER+0)#define DM_SETDEFID (WM_USER+1)#if(WINVER >= 0x0400)#define DM_REPOSITION (WM_USER+2)#endif /* WINVER >= 0x0400 *//** Returned in HIWORD() of DM_GETDEFID result if msg is supported*/#define DC_HASDEFID 0x534B/** Dialog Codes*/#define DLGC_WANTARROWS 0x0001 /* Control wants arrow keys */#define DLGC_WANTTAB 0x0002 /* Control wants tab keys */#define DLGC_WANTALLKEYS 0x0004 /* Control wants all keys */#define DLGC_WANTMESSAGE 0x0004 /* Pass message to control */#define DLGC_HASSETSEL 0x0008 /* Understands EM_SETSEL message */#define DLGC_DEFPUSHBUTTON 0x0010 /* Default pushbutton */#define DLGC_UNDEFPUSHBUTTON 0x0020 /* Non-default pushbutton */#define DLGC_RADIOBUTTON 0x0040 /* Radio button */#define DLGC_WANTCHARS 0x0080 /* Want WM_CHAR messages */#define DLGC_STATIC 0x0100 /* Static item: don't include */#define DLGC_BUTTON 0x2000 /* Button item: can be checked */#define LB_CTLCODE 0L/** Listbox Return Values*/#define LB_OKAY 0#define LB_ERR (-1)#define LB_ERRSPACE (-2)/*** The idStaticPath parameter to DlgDirList can have the following values** ORed if the list box should show other details of the files along with** the name of the files;*//* all other details also will be returned *//** Listbox Notification Codes*/#define LBN_ERRSPACE (-2)#define LBN_SELCHANGE 1#define LBN_DBLCLK 2#define LBN_SELCANCEL 3#define LBN_SETFOCUS 4#define LBN_KILLFOCUS 5#ifndef NOWINMESSAGES/** Listbox messages*/#define LB_ADDSTRING 0x0180#define LB_INSERTSTRING 0x0181#define LB_DELETESTRING 0x0182#define LB_SELITEMRANGEEX 0x0183#define LB_RESETCONTENT 0x0184#define LB_SETSEL 0x0185#define LB_SETCURSEL 0x0186#define LB_GETSEL 0x0187#define LB_GETCURSEL 0x0188#define LB_GETTEXT 0x0189#define LB_GETTEXTLEN 0x018A#define LB_GETCOUNT 0x018B#define LB_SELECTSTRING 0x018C#define LB_DIR 0x018D#define LB_GETTOPINDEX 0x018E#define LB_FINDSTRING 0x018F#define LB_GETSELCOUNT 0x0190#define LB_GETSELITEMS 0x0191#define LB_SETTABSTOPS 0x0192#define LB_GETHORIZONTALEXTENT 0x0193#define LB_SETHORIZONTALEXTENT 0x0194#define LB_SETCOLUMNWIDTH 0x0195#define LB_ADDFILE 0x0196#define LB_SETTOPINDEX 0x0197#define LB_GETITEMRECT 0x0198#define LB_GETITEMDATA 0x0199#define LB_SETITEMDATA 0x019A#define LB_SELITEMRANGE 0x019B#define LB_SETANCHORINDEX 0x019C#define LB_GETANCHORINDEX 0x019D#define LB_SETCARETINDEX 0x019E#define LB_GETCARETINDEX 0x019F#define LB_SETITEMHEIGHT 0x01A0#define LB_GETITEMHEIGHT 0x01A1#define LB_FINDSTRINGEXACT 0x01A2#define LB_SETLOCALE 0x01A5#define LB_GETLOCALE 0x01A6#define LB_SETCOUNT 0x01A7#if(WINVER >= 0x0400)#define LB_INITSTORAGE 0x01A8#define LB_ITEMFROMPOINT 0x01A9#endif /* WINVER >= 0x0400 */#if(WINVER >= 0x0400)#define LB_MSGMAX 0x01B0#else#define LB_MSGMAX 0x01A8#endif#endif /* !NOWINMESSAGES */#ifndef NOWINSTYLES// begin_r_winuser/** Listbox Styles*/#define LBS_NOTIFY 0x0001L#define LBS_SORT 0x0002L#define LBS_NOREDRAW 0x0004L#define LBS_MULTIPLESEL 0x0008L#define LBS_OWNERDRAWFIXED 0x0010L#define LBS_OWNERDRAWVARIABLE 0x0020L#define LBS_HASSTRINGS 0x0040L#define LBS_USETABSTOPS 0x0080L#define LBS_NOINTEGRALHEIGHT 0x0100L#define LBS_MULTICOLUMN 0x0200L#define LBS_WANTKEYBOARDINPUT 0x0400L#define LBS_EXTENDEDSEL 0x0800L#define LBS_DISABLENOSCROLL 0x1000L#define LBS_NODATA 0x2000L#if(WINVER >= 0x0400)#define LBS_NOSEL 0x4000L#endif /* WINVER >= 0x0400 */#define LBS_STANDARD (LBS_NOTIFY | LBS_SORT | WS_VSCROLL | WS_BORDER)// end_r_winuser#endif /* !NOWINSTYLES *//** Combo Box return Values*/#define CB_OKAY 0#define CB_ERR (-1)#define CB_ERRSPACE (-2)/** Combo Box Notification Codes*/#define CBN_ERRSPACE (-1)#define CBN_SELCHANGE 1#define CBN_DBLCLK 2#define CBN_SETFOCUS 3#define CBN_KILLFOCUS 4#define CBN_EDITCHANGE 5#define CBN_EDITUPDATE 6#define CBN_DROPDOWN 7#define CBN_CLOSEUP 8#define CBN_SELENDOK 9#define CBN_SELENDCANCEL 10#ifndef NOWINSTYLES// begin_r_winuser/** Combo Box styles*/#define CBS_SIMPLE 0x0001L#define CBS_DROPDOWN 0x0002L#define CBS_DROPDOWNLIST 0x0003L#define CBS_OWNERDRAWFIXED 0x0010L#define CBS_OWNERDRAWVARIABLE 0x0020L#define CBS_AUTOHSCROLL 0x0040L#define CBS_OEMCONVERT 0x0080L#define CBS_SORT 0x0100L#define CBS_HASSTRINGS 0x0200L#define CBS_NOINTEGRALHEIGHT 0x0400L#define CBS_DISABLENOSCROLL 0x0800L#if(WINVER >= 0x0400)#define CBS_UPPERCASE 0x2000L#define CBS_LOWERCASE 0x4000L#endif /* WINVER >= 0x0400 */// end_r_winuser#endif /* !NOWINSTYLES *//** Combo Box messages*/#ifndef NOWINMESSAGES#define CB_GETEDITSEL 0x0140#define CB_LIMITTEXT 0x0141#define CB_SETEDITSEL 0x0142#define CB_ADDSTRING 0x0143#define CB_DELETESTRING 0x0144#define CB_DIR 0x0145#define CB_GETCOUNT 0x0146#define CB_GETCURSEL 0x0147#define CB_GETLBTEXT 0x0148#define CB_GETLBTEXTLEN 0x0149#define CB_INSERTSTRING 0x014A#define CB_RESETCONTENT 0x014B#define CB_FINDSTRING 0x014C#define CB_SELECTSTRING 0x014D#define CB_SETCURSEL 0x014E#define CB_SHOWDROPDOWN 0x014F#define CB_GETITEMDATA 0x0150#define CB_SETITEMDATA 0x0151#define CB_GETDROPPEDCONTROLRECT 0x0152#define CB_SETITEMHEIGHT 0x0153#define CB_GETITEMHEIGHT 0x0154#define CB_SETEXTENDEDUI 0x0155#define CB_GETEXTENDEDUI 0x0156#define CB_GETDROPPEDSTATE 0x0157#define CB_FINDSTRINGEXACT 0x0158#define CB_SETLOCALE 0x0159#define CB_GETLOCALE 0x015A#if(WINVER >= 0x0400)#define CB_GETTOPINDEX 0x015b#define CB_SETTOPINDEX 0x015c#define CB_GETHORIZONTALEXTENT 0x015d#define CB_SETHORIZONTALEXTENT 0x015e#define CB_GETDROPPEDWIDTH 0x015f#define CB_SETDROPPEDWIDTH 0x0160#define CB_INITSTORAGE 0x0161#endif /* WINVER >= 0x0400 */#if(WINVER >= 0x0400)#define CB_MSGMAX 0x0162#else#define CB_MSGMAX 0x015B#endif#endif /* !NOWINMESSAGES */#ifndef NOWINSTYLES// begin_r_winuser/** Scroll Bar Styles*/#define SBS_HORZ 0x0000L#define SBS_VERT 0x0001L#define SBS_TOPALIGN 0x0002L#define SBS_LEFTALIGN 0x0002L#define SBS_BOTTOMALIGN 0x0004L#define SBS_RIGHTALIGN 0x0004L#define SBS_SIZEBOXTOPLEFTALIGN 0x0002L#define SBS_SIZEBOXBOTTOMRIGHTALIGN 0x0004L#define SBS_SIZEBOX 0x0008L#if(WINVER >= 0x0400)#define SBS_SIZEGRIP 0x0010L#endif /* WINVER >= 0x0400 */// end_r_winuser#endif /* !NOWINSTYLES *//** Scroll bar messages*/#ifndef NOWINMESSAGES#define SBM_SETPOS 0x00E0 /*not in win3.1 */#define SBM_GETPOS 0x00E1 /*not in win3.1 */#define SBM_SETRANGE 0x00E2 /*not in win3.1 */#define SBM_SETRANGEREDRAW 0x00E6 /*not in win3.1 */#define SBM_GETRANGE 0x00E3 /*not in win3.1 */#define SBM_ENABLE_ARROWS 0x00E4 /*not in win3.1 */#if(WINVER >= 0x0400)#define SBM_SETSCROLLINFO 0x00E9#define SBM_GETSCROLLINFO 0x00EA#define SIF_RANGE 0x0001#define SIF_PAGE 0x0002#define SIF_POS 0x0004#define SIF_DISABLENOSCROLL 0x0008#define SIF_TRACKPOS 0x0010#define SIF_ALL (SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS)typedef struct tagSCROLLINFO{UINT cbSize;UINT fMask;int nMin;int nMax;UINT nPage;int nPos;int nTrackPos;} SCROLLINFO, FAR *LPSCROLLINFO;typedef SCROLLINFO CONST FAR *LPCSCROLLINFO;WINUSERAPI int WINAPI SetScrollInfo(HWND, int, LPCSCROLLINFO, BOOL);WINUSERAPI BOOL WINAPI GetScrollInfo(HWND, int, LPSCROLLINFO);#endif /* WINVER >= 0x0400 */#endif /* !NOWINMESSAGES */#endif /* !NOCTLMGR */#ifndef NOMDI/** MDI client style bits*/#define MDIS_ALLCHILDSTYLES 0x0001/** wParam Flags for WM_MDITILE and WM_MDICASCADE messages.*/#define MDITILE_VERTICAL 0x0000 /*not in win3.1 */#define MDITILE_HORIZONTAL 0x0001 /*not in win3.1 */#define MDITILE_SKIPDISABLED 0x0002 /*not in win3.1 */typedef struct tagMDICREATESTRUCTA {LPCSTR szClass;LPCSTR szTitle;HANDLE hOwner;int x;int y;int cx;int cy;DWORD style;LPARAM lParam; /* app-defined stuff */} MDICREATESTRUCTA, *LPMDICREATESTRUCTA;typedef struct tagMDICREATESTRUCTW {LPCWSTR szClass;LPCWSTR szTitle;HANDLE hOwner;int x;int y;int cx;int cy;DWORD style;LPARAM lParam; /* app-defined stuff */} MDICREATESTRUCTW, *LPMDICREATESTRUCTW;#ifdef UNICODEtypedef MDICREATESTRUCTW MDICREATESTRUCT;typedef LPMDICREATESTRUCTW LPMDICREATESTRUCT;#elsetypedef MDICREATESTRUCTA MDICREATESTRUCT;typedef LPMDICREATESTRUCTA LPMDICREATESTRUCT;#endif // UNICODEtypedef struct tagCLIENTCREATESTRUCT {HANDLE hWindowMenu;UINT idFirstChild;} CLIENTCREATESTRUCT, *LPCLIENTCREATESTRUCT;WINUSERAPILRESULTWINAPIDefFrameProcA(HWND hWnd,HWND hWndMDIClient ,UINT uMsg,WPARAM wParam,LPARAM lParam);WINUSERAPILRESULTWINAPIDefFrameProcW(HWND hWnd,HWND hWndMDIClient ,UINT uMsg,WPARAM wParam,LPARAM lParam);#ifdef UNICODE#define DefFrameProc DefFrameProcW#else#define DefFrameProc DefFrameProcA#endif // !UNICODEWINUSERAPI#ifndef _MACLRESULTWINAPI#elseLRESULTCALLBACK#endifDefMDIChildProcA(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam);WINUSERAPI#ifndef _MACLRESULTWINAPI#elseLRESULTCALLBACK#endifDefMDIChildProcW(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam);#ifdef UNICODE#define DefMDIChildProc DefMDIChildProcW#else#define DefMDIChildProc DefMDIChildProcA#endif // !UNICODE#ifndef NOMSGWINUSERAPIBOOLWINAPITranslateMDISysAccel(HWND hWndClient,LPMSG lpMsg);#endif /* !NOMSG */WINUSERAPIUINTWINAPIArrangeIconicWindows(HWND hWnd);WINUSERAPIHWNDWINAPICreateMDIWindowA(LPSTR lpClassName,LPSTR lpWindowName,DWORD dwStyle,int X,int Y,int nWidth,int nHeight,HWND hWndParent,HINSTANCE hInstance,LPARAM lParam);WINUSERAPIHWNDWINAPICreateMDIWindowW(LPWSTR lpClassName,LPWSTR lpWindowName,DWORD dwStyle,int X,int Y,int nWidth,int nHeight,HWND hWndParent,HINSTANCE hInstance,LPARAM lParam);#ifdef UNICODE#define CreateMDIWindow CreateMDIWindowW#else#define CreateMDIWindow CreateMDIWindowA#endif // !UNICODE#if(WINVER >= 0x0400)WINUSERAPI WORD WINAPI TileWindows(HWND hwndParent, UINT wHow, CONST RECT * lpRect, UINT cKids, const HWND FAR * lpKids);WINUSERAPI WORD WINAPI CascadeWindows(HWND hwndParent, UINT wHow, CONST RECT * lpRect, UINT cKids, const HWND FAR * lpKids);#endif /* WINVER >= 0x0400 */#endif /* !NOMDI */#endif /* !NOUSER *//****** Help support ********************************************************/#ifndef NOHELPtypedef DWORD HELPPOLY;typedef struct tagMULTIKEYHELPA {#ifndef _MACDWORD mkSize;#elseWORD mkSize;#endifCHAR mkKeylist;CHAR szKeyphrase[1];} MULTIKEYHELPA, *PMULTIKEYHELPA, *LPMULTIKEYHELPA;typedef struct tagMULTIKEYHELPW {#ifndef _MACDWORD mkSize;#elseWORD mkSize;#endifWCHAR mkKeylist;WCHAR szKeyphrase[1];} MULTIKEYHELPW, *PMULTIKEYHELPW, *LPMULTIKEYHELPW;#ifdef UNICODEtypedef MULTIKEYHELPW MULTIKEYHELP;typedef PMULTIKEYHELPW PMULTIKEYHELP;typedef LPMULTIKEYHELPW LPMULTIKEYHELP;#elsetypedef MULTIKEYHELPA MULTIKEYHELP;typedef PMULTIKEYHELPA PMULTIKEYHELP;typedef LPMULTIKEYHELPA LPMULTIKEYHELP;#endif // UNICODEtypedef struct tagHELPWININFOA {int wStructSize;int x;int y;int dx;int dy;int wMax;CHAR rgchMember[2];} HELPWININFOA, *PHELPWININFOA, *LPHELPWININFOA;typedef struct tagHELPWININFOW {int wStructSize;int x;int y;int dx;int dy;int wMax;WCHAR rgchMember[2];} HELPWININFOW, *PHELPWININFOW, *LPHELPWININFOW;#ifdef UNICODEtypedef HELPWININFOW HELPWININFO;typedef PHELPWININFOW PHELPWININFO;typedef LPHELPWININFOW LPHELPWININFO;#elsetypedef HELPWININFOA HELPWININFO;typedef PHELPWININFOA PHELPWININFO;typedef LPHELPWININFOA LPHELPWININFO;#endif // UNICODE// begin_r_winuser/** Commands to pass to WinHelp()*/#define HELP_CONTEXT 0x0001L /* Display topic in ulTopic */#define HELP_QUIT 0x0002L /* Terminate help */#define HELP_INDEX 0x0003L /* Display index */#define HELP_CONTENTS 0x0003L#define HELP_HELPONHELP 0x0004L /* Display help on using help */#define HELP_SETINDEX 0x0005L /* Set current Index for multi index help */#define HELP_SETCONTENTS 0x0005L#define HELP_CONTEXTPOPUP 0x0008L#define HELP_FORCEFILE 0x0009L#define HELP_KEY 0x0101L /* Display topic for keyword in offabData */#define HELP_COMMAND 0x0102L#define HELP_PARTIALKEY 0x0105L#define HELP_MULTIKEY 0x0201L#define HELP_SETWINPOS 0x0203L#if(WINVER >= 0x0400)#define HELP_CONTEXTMENU 0x000a#define HELP_FINDER 0x000b#define HELP_WM_HELP 0x000c#define HELP_SETPOPUP_POS 0x000d#define HELP_TCARD 0x8000#define HELP_TCARD_DATA 0x0010#define HELP_TCARD_OTHER_CALLER 0x0011// These are in winhelp.h in Win95.#define IDH_NO_HELP 28440#define IDH_MISSING_CONTEXT 28441 // Control doesn't have matching help context#define IDH_GENERIC_HELP_BUTTON 28442 // Property sheet help button#define IDH_OK 28443#define IDH_CANCEL 28444#define IDH_HELP 28445#endif /* WINVER >= 0x0400 */// end_r_winuserWINUSERAPIBOOLWINAPIWinHelpA(HWND hWndMain,LPCSTR lpszHelp,UINT uCommand,DWORD dwData);WINUSERAPIBOOLWINAPIWinHelpW(HWND hWndMain,LPCWSTR lpszHelp,UINT uCommand,DWORD dwData);#ifdef UNICODE#define WinHelp WinHelpW#else#define WinHelp WinHelpA#endif // !UNICODE#endif /* !NOHELP */#if(WINVER >= 0x0500)#define GR_GDIOBJECTS 0 /* Count of GDI objects */#define GR_USEROBJECTS 1 /* Count of USER objects */DWORD GetGuiResources(HANDLE hProcess, DWORD uiFlags);#endif /* WINVER >= 0x0500 */#ifndef NOSYSPARAMSINFO/** Parameter for SystemParametersInfo()*/#define SPI_GETBEEP 1#define SPI_SETBEEP 2#define SPI_GETMOUSE 3#define SPI_SETMOUSE 4#define SPI_GETBORDER 5#define SPI_SETBORDER 6#define SPI_GETKEYBOARDSPEED 10#define SPI_SETKEYBOARDSPEED 11#define SPI_LANGDRIVER 12#define SPI_ICONHORIZONTALSPACING 13#define SPI_GETSCREENSAVETIMEOUT 14#define SPI_SETSCREENSAVETIMEOUT 15#define SPI_GETSCREENSAVEACTIVE 16#define SPI_SETSCREENSAVEACTIVE 17#define SPI_GETGRIDGRANULARITY 18#define SPI_SETGRIDGRANULARITY 19#define SPI_SETDESKWALLPAPER 20#define SPI_SETDESKPATTERN 21#define SPI_GETKEYBOARDDELAY 22#define SPI_SETKEYBOARDDELAY 23#define SPI_ICONVERTICALSPACING 24#define SPI_GETICONTITLEWRAP 25#define SPI_SETICONTITLEWRAP 26#define SPI_GETMENUDROPALIGNMENT 27#define SPI_SETMENUDROPALIGNMENT 28#define SPI_SETDOUBLECLKWIDTH 29#define SPI_SETDOUBLECLKHEIGHT 30#define SPI_GETICONTITLELOGFONT 31#define SPI_SETDOUBLECLICKTIME 32#define SPI_SETMOUSEBUTTONSWAP 33#define SPI_SETICONTITLELOGFONT 34#define SPI_GETFASTTASKSWITCH 35#define SPI_SETFASTTASKSWITCH 36#if(WINVER >= 0x0400)#define SPI_SETDRAGFULLWINDOWS 37#define SPI_GETDRAGFULLWINDOWS 38#define SPI_GETNONCLIENTMETRICS 41#define SPI_SETNONCLIENTMETRICS 42#define SPI_GETMINIMIZEDMETRICS 43#define SPI_SETMINIMIZEDMETRICS 44#define SPI_GETICONMETRICS 45#define SPI_SETICONMETRICS 46#define SPI_SETWORKAREA 47#define SPI_GETWORKAREA 48#define SPI_SETPENWINDOWS 49#define SPI_GETHIGHCONTRAST 66#define SPI_SETHIGHCONTRAST 67#define SPI_GETKEYBOARDPREF 68#define SPI_SETKEYBOARDPREF 69#define SPI_GETSCREENREADER 70#define SPI_SETSCREENREADER 71#define SPI_GETANIMATION 72#define SPI_SETANIMATION 73#define SPI_GETFONTSMOOTHING 74#define SPI_SETFONTSMOOTHING 75#define SPI_SETDRAGWIDTH 76#define SPI_SETDRAGHEIGHT 77#define SPI_SETHANDHELD 78#define SPI_GETLOWPOWERTIMEOUT 79#define SPI_GETPOWEROFFTIMEOUT 80#define SPI_SETLOWPOWERTIMEOUT 81#define SPI_SETPOWEROFFTIMEOUT 82#define SPI_GETLOWPOWERACTIVE 83#define SPI_GETPOWEROFFACTIVE 84#define SPI_SETLOWPOWERACTIVE 85#define SPI_SETPOWEROFFACTIVE 86#define SPI_SETCURSORS 87#define SPI_SETICONS 88#define SPI_GETDEFAULTINPUTLANG 89#define SPI_SETDEFAULTINPUTLANG 90#define SPI_SETLANGTOGGLE 91#define SPI_GETWINDOWSEXTENSION 92#define SPI_SETMOUSETRAILS 93#define SPI_GETMOUSETRAILS 94#define SPI_SETSCREENSAVERRUNNING 97#define SPI_SCREENSAVERRUNNING SPI_SETSCREENSAVERRUNNING#endif /* WINVER >= 0x0400 */#define SPI_GETFILTERKEYS 50#define SPI_SETFILTERKEYS 51#define SPI_GETTOGGLEKEYS 52#define SPI_SETTOGGLEKEYS 53#define SPI_GETMOUSEKEYS 54#define SPI_SETMOUSEKEYS 55#define SPI_GETSHOWSOUNDS 56#define SPI_SETSHOWSOUNDS 57#define SPI_GETSTICKYKEYS 58#define SPI_SETSTICKYKEYS 59#define SPI_GETACCESSTIMEOUT 60#define SPI_SETACCESSTIMEOUT 61#if(WINVER >= 0x0400)#define SPI_GETSERIALKEYS 62#define SPI_SETSERIALKEYS 63#endif /* WINVER >= 0x0400 */#define SPI_GETSOUNDSENTRY 64#define SPI_SETSOUNDSENTRY 65#if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)#define SPI_GETMOUSEHOVERWIDTH 98#define SPI_SETMOUSEHOVERWIDTH 99#define SPI_GETMOUSEHOVERHEIGHT 100#define SPI_SETMOUSEHOVERHEIGHT 101#define SPI_GETMOUSEHOVERTIME 102#define SPI_SETMOUSEHOVERTIME 103#define SPI_GETWHEELSCROLLLINES 104#define SPI_SETWHEELSCROLLLINES 105#define SPI_GETSHOWIMEUI 110#define SPI_SETSHOWIMEUI 111#endif#if(WINVER >= 0x0500)#define SPI_GETMOUSESPEED 112#define SPI_SETMOUSESPEED 113#define SPI_GETSCREENSAVERRUNNING 114#endif /* WINVER >= 0x0500 */#if(WINVER >= 0x0500)#define SPI_GETACTIVEWINDOWTRACKING 0x1000#define SPI_SETACTIVEWINDOWTRACKING 0x1001#define SPI_GETMENUANIMATION 0x1002#define SPI_SETMENUANIMATION 0x1003#define SPI_GETCOMBOBOXANIMATION 0x1004#define SPI_SETCOMBOBOXANIMATION 0x1005#define SPI_GETLISTBOXSMOOTHSCROLLING 0x1006#define SPI_SETLISTBOXSMOOTHSCROLLING 0x1007#define SPI_GETGRADIENTCAPTIONS 0x1008#define SPI_SETGRADIENTCAPTIONS 0x1009#define SPI_GETMENUUNDERLINES 0x100A#define SPI_SETMENUUNDERLINES 0x100B#define SPI_GETACTIVEWNDTRKZORDER 0x100C#define SPI_SETACTIVEWNDTRKZORDER 0x100D#define SPI_GETHOTTRACKING 0x100E#define SPI_SETHOTTRACKING 0x100F#define SPI_GETFOREGROUNDLOCKTIMEOUT 0x2000#define SPI_SETFOREGROUNDLOCKTIMEOUT 0x2001#define SPI_GETACTIVEWNDTRKTIMEOUT 0x2002#define SPI_SETACTIVEWNDTRKTIMEOUT 0x2003#define SPI_GETFOREGROUNDFLASHCOUNT 0x2004#define SPI_SETFOREGROUNDFLASHCOUNT 0x2005#endif /* WINVER >= 0x0500 *//** Flags*/#define SPIF_UPDATEINIFILE 0x0001#define SPIF_SENDWININICHANGE 0x0002#define SPIF_SENDCHANGE SPIF_SENDWININICHANGE#define METRICS_USEDEFAULT -1#ifdef _WINGDI_#ifndef NOGDItypedef struct tagNONCLIENTMETRICSA{UINT cbSize;int iBorderWidth;int iScrollWidth;int iScrollHeight;int iCaptionWidth;int iCaptionHeight;LOGFONTA lfCaptionFont;int iSmCaptionWidth;int iSmCaptionHeight;LOGFONTA lfSmCaptionFont;int iMenuWidth;int iMenuHeight;LOGFONTA lfMenuFont;LOGFONTA lfStatusFont;LOGFONTA lfMessageFont;} NONCLIENTMETRICSA, *PNONCLIENTMETRICSA, FAR* LPNONCLIENTMETRICSA;typedef struct tagNONCLIENTMETRICSW{UINT cbSize;int iBorderWidth;int iScrollWidth;int iScrollHeight;int iCaptionWidth;int iCaptionHeight;LOGFONTW lfCaptionFont;int iSmCaptionWidth;int iSmCaptionHeight;LOGFONTW lfSmCaptionFont;int iMenuWidth;int iMenuHeight;LOGFONTW lfMenuFont;LOGFONTW lfStatusFont;LOGFONTW lfMessageFont;} NONCLIENTMETRICSW, *PNONCLIENTMETRICSW, FAR* LPNONCLIENTMETRICSW;#ifdef UNICODEtypedef NONCLIENTMETRICSW NONCLIENTMETRICS;typedef PNONCLIENTMETRICSW PNONCLIENTMETRICS;typedef LPNONCLIENTMETRICSW LPNONCLIENTMETRICS;#elsetypedef NONCLIENTMETRICSA NONCLIENTMETRICS;typedef PNONCLIENTMETRICSA PNONCLIENTMETRICS;typedef LPNONCLIENTMETRICSA LPNONCLIENTMETRICS;#endif // UNICODE#endif /* NOGDI */#endif /* _WINGDI_ */#define ARW_BOTTOMLEFT 0x0000L#define ARW_BOTTOMRIGHT 0x0001L#define ARW_TOPLEFT 0x0002L#define ARW_TOPRIGHT 0x0003L#define ARW_STARTMASK 0x0003L#define ARW_STARTRIGHT 0x0001L#define ARW_STARTTOP 0x0002L#define ARW_LEFT 0x0000L#define ARW_RIGHT 0x0000L#define ARW_UP 0x0004L#define ARW_DOWN 0x0004L#define ARW_HIDE 0x0008Ltypedef struct tagMINIMIZEDMETRICS{UINT cbSize;int iWidth;int iHorzGap;int iVertGap;int iArrange;} MINIMIZEDMETRICS, *PMINIMIZEDMETRICS, *LPMINIMIZEDMETRICS;#ifdef _WINGDI_#ifndef NOGDItypedef struct tagICONMETRICSA{UINT cbSize;int iHorzSpacing;int iVertSpacing;int iTitleWrap;LOGFONTA lfFont;} ICONMETRICSA, *PICONMETRICSA, *LPICONMETRICSA;typedef struct tagICONMETRICSW{UINT cbSize;int iHorzSpacing;int iVertSpacing;int iTitleWrap;LOGFONTW lfFont;} ICONMETRICSW, *PICONMETRICSW, *LPICONMETRICSW;#ifdef UNICODEtypedef ICONMETRICSW ICONMETRICS;typedef PICONMETRICSW PICONMETRICS;typedef LPICONMETRICSW LPICONMETRICS;#elsetypedef ICONMETRICSA ICONMETRICS;typedef PICONMETRICSA PICONMETRICS;typedef LPICONMETRICSA LPICONMETRICS;#endif // UNICODE#endif /* NOGDI */#endif /* _WINGDI_ */typedef struct tagANIMATIONINFO{UINT cbSize;int iMinAnimate;} ANIMATIONINFO, *LPANIMATIONINFO;typedef struct tagSERIALKEYSA{UINT cbSize;DWORD dwFlags;LPSTR lpszActivePort;LPSTR lpszPort;UINT iBaudRate;UINT iPortState;UINT iActive;} SERIALKEYSA, *LPSERIALKEYSA;typedef struct tagSERIALKEYSW{UINT cbSize;DWORD dwFlags;LPWSTR lpszActivePort;LPWSTR lpszPort;UINT iBaudRate;UINT iPortState;UINT iActive;} SERIALKEYSW, *LPSERIALKEYSW;#ifdef UNICODEtypedef SERIALKEYSW SERIALKEYS;typedef LPSERIALKEYSW LPSERIALKEYS;#elsetypedef SERIALKEYSA SERIALKEYS;typedef LPSERIALKEYSA LPSERIALKEYS;#endif // UNICODE/* flags for SERIALKEYS dwFlags field */#define SERKF_SERIALKEYSON 0x00000001#define SERKF_AVAILABLE 0x00000002#define SERKF_INDICATOR 0x00000004typedef struct tagHIGHCONTRASTA{UINT cbSize;DWORD dwFlags;LPSTR lpszDefaultScheme;} HIGHCONTRASTA, *LPHIGHCONTRASTA;typedef struct tagHIGHCONTRASTW{UINT cbSize;DWORD dwFlags;LPWSTR lpszDefaultScheme;} HIGHCONTRASTW, *LPHIGHCONTRASTW;#ifdef UNICODEtypedef HIGHCONTRASTW HIGHCONTRAST;typedef LPHIGHCONTRASTW LPHIGHCONTRAST;#elsetypedef HIGHCONTRASTA HIGHCONTRAST;typedef LPHIGHCONTRASTA LPHIGHCONTRAST;#endif // UNICODE/* flags for HIGHCONTRAST dwFlags field */#define HCF_HIGHCONTRASTON 0x00000001#define HCF_AVAILABLE 0x00000002#define HCF_HOTKEYACTIVE 0x00000004#define HCF_CONFIRMHOTKEY 0x00000008#define HCF_HOTKEYSOUND 0x00000010#define HCF_INDICATOR 0x00000020#define HCF_HOTKEYAVAILABLE 0x00000040/* Flags for ChangeDisplaySettings */#define CDS_UPDATEREGISTRY 0x00000001#define CDS_TEST 0x00000002#define CDS_FULLSCREEN 0x00000004#define CDS_GLOBAL 0x00000008#define CDS_SET_PRIMARY 0x00000010#define CDS_RESET 0x40000000#define CDS_SETRECT 0x20000000#define CDS_NORESET 0x10000000/* Return values for ChangeDisplaySettings */#define DISP_CHANGE_SUCCESSFUL 0#define DISP_CHANGE_RESTART 1#define DISP_CHANGE_FAILED -1#define DISP_CHANGE_BADMODE -2#define DISP_CHANGE_NOTUPDATED -3#define DISP_CHANGE_BADFLAGS -4#define DISP_CHANGE_BADPARAM -5#ifdef _WINGDI_#ifndef NOGDIWINUSERAPILONGWINAPIChangeDisplaySettingsA(LPDEVMODEA lpDevMode,DWORD dwFlags);WINUSERAPILONGWINAPIChangeDisplaySettingsW(LPDEVMODEW lpDevMode,DWORD dwFlags);#ifdef UNICODE#define ChangeDisplaySettings ChangeDisplaySettingsW#else#define ChangeDisplaySettings ChangeDisplaySettingsA#endif // !UNICODEWINUSERAPILONGWINAPIChangeDisplaySettingsExA(LPCSTR lpszDeviceName,LPDEVMODEA lpDevMode,HWND hwnd,DWORD dwflags,LPVOID lParam);WINUSERAPILONGWINAPIChangeDisplaySettingsExW(LPCWSTR lpszDeviceName,LPDEVMODEW lpDevMode,HWND hwnd,DWORD dwflags,LPVOID lParam);#ifdef UNICODE#define ChangeDisplaySettingsEx ChangeDisplaySettingsExW#else#define ChangeDisplaySettingsEx ChangeDisplaySettingsExA#endif // !UNICODE#define ENUM_CURRENT_SETTINGS ((DWORD)-1)#define ENUM_REGISTRY_SETTINGS ((DWORD)-2)WINUSERAPIBOOLWINAPIEnumDisplaySettingsA(LPCSTR lpszDeviceName,DWORD iModeNum,LPDEVMODEA lpDevMode);WINUSERAPIBOOLWINAPIEnumDisplaySettingsW(LPCWSTR lpszDeviceName,DWORD iModeNum,LPDEVMODEW lpDevMode);#ifdef UNICODE#define EnumDisplaySettings EnumDisplaySettingsW#else#define EnumDisplaySettings EnumDisplaySettingsA#endif // !UNICODE#if(WINVER >= 0x0500)WINUSERAPIBOOLWINAPIEnumDisplayDevicesA(PVOID Unused,DWORD iDevNum,PDISPLAY_DEVICEA lpDisplayDevice,DWORD dwFlags);WINUSERAPIBOOLWINAPIEnumDisplayDevicesW(PVOID Unused,DWORD iDevNum,PDISPLAY_DEVICEW lpDisplayDevice,DWORD dwFlags);#ifdef UNICODE#define EnumDisplayDevices EnumDisplayDevicesW#else#define EnumDisplayDevices EnumDisplayDevicesA#endif // !UNICODE#endif /* WINVER >= 0x0500 */#endif /* NOGDI */#endif /* _WINGDI_ */WINUSERAPIBOOLWINAPISystemParametersInfoA(UINT uiAction,UINT uiParam,PVOID pvParam,UINT fWinIni);WINUSERAPIBOOLWINAPISystemParametersInfoW(UINT uiAction,UINT uiParam,PVOID pvParam,UINT fWinIni);#ifdef UNICODE#define SystemParametersInfo SystemParametersInfoW#else#define SystemParametersInfo SystemParametersInfoA#endif // !UNICODE#endif /* !NOSYSPARAMSINFO *//** Accessibility support*/typedef struct tagFILTERKEYS{UINT cbSize;DWORD dwFlags;DWORD iWaitMSec; // Acceptance DelayDWORD iDelayMSec; // Delay Until RepeatDWORD iRepeatMSec; // Repeat RateDWORD iBounceMSec; // Debounce Time} FILTERKEYS, *LPFILTERKEYS;/** FILTERKEYS dwFlags field*/#define FKF_FILTERKEYSON 0x00000001#define FKF_AVAILABLE 0x00000002#define FKF_HOTKEYACTIVE 0x00000004#define FKF_CONFIRMHOTKEY 0x00000008#define FKF_HOTKEYSOUND 0x00000010#define FKF_INDICATOR 0x00000020#define FKF_CLICKON 0x00000040typedef struct tagSTICKYKEYS{UINT cbSize;DWORD dwFlags;} STICKYKEYS, *LPSTICKYKEYS;/** STICKYKEYS dwFlags field*/#define SKF_STICKYKEYSON 0x00000001#define SKF_AVAILABLE 0x00000002#define SKF_HOTKEYACTIVE 0x00000004#define SKF_CONFIRMHOTKEY 0x00000008#define SKF_HOTKEYSOUND 0x00000010#define SKF_INDICATOR 0x00000020#define SKF_AUDIBLEFEEDBACK 0x00000040#define SKF_TRISTATE 0x00000080#define SKF_TWOKEYSOFF 0x00000100#if(_WIN32_WINNT >= 0x0500)#define SKF_LALTLATCHED 0x10000000#define SKF_LCTLLATCHED 0x04000000#define SKF_LSHIFTLATCHED 0x01000000#define SKF_RALTLATCHED 0x20000000#define SKF_RCTLLATCHED 0x08000000#define SKF_RSHIFTLATCHED 0x02000000#define SKF_LWINLATCHED 0x40000000#define SKF_RWINLATCHED 0x80000000#define SKF_LALTLOCKED 0x00100000#define SKF_LCTLLOCKED 0x00040000#define SKF_LSHIFTLOCKED 0x00010000#define SKF_RALTLOCKED 0x00200000#define SKF_RCTLLOCKED 0x00080000#define SKF_RSHIFTLOCKED 0x00020000#define SKF_LWINLOCKED 0x00400000#define SKF_RWINLOCKED 0x00800000#endif /* _WIN32_WINNT >= 0x0500 */typedef struct tagMOUSEKEYS{UINT cbSize;DWORD dwFlags;DWORD iMaxSpeed;DWORD iTimeToMaxSpeed;DWORD iCtrlSpeed;DWORD dwReserved1;DWORD dwReserved2;} MOUSEKEYS, *LPMOUSEKEYS;/** MOUSEKEYS dwFlags field*/#define MKF_MOUSEKEYSON 0x00000001#define MKF_AVAILABLE 0x00000002#define MKF_HOTKEYACTIVE 0x00000004#define MKF_CONFIRMHOTKEY 0x00000008#define MKF_HOTKEYSOUND 0x00000010#define MKF_INDICATOR 0x00000020#define MKF_MODIFIERS 0x00000040#define MKF_REPLACENUMBERS 0x00000080#if(_WIN32_WINNT >= 0x0500)#define MKF_LEFTBUTTONSEL 0x10000000#define MKF_RIGHTBUTTONSEL 0x20000000#define MKF_LEFTBUTTONDOWN 0x01000000#define MKF_RIGHTBUTTONDOWN 0x02000000#define MKF_MOUSEMODE 0x80000000#endif /* _WIN32_WINNT >= 0x0500 */typedef struct tagACCESSTIMEOUT{UINT cbSize;DWORD dwFlags;DWORD iTimeOutMSec;} ACCESSTIMEOUT, *LPACCESSTIMEOUT;/** ACCESSTIMEOUT dwFlags field*/#define ATF_TIMEOUTON 0x00000001#define ATF_ONOFFFEEDBACK 0x00000002/* values for SOUNDSENTRY iFSGrafEffect field */#define SSGF_NONE 0#define SSGF_DISPLAY 3/* values for SOUNDSENTRY iFSTextEffect field */#define SSTF_NONE 0#define SSTF_CHARS 1#define SSTF_BORDER 2#define SSTF_DISPLAY 3/* values for SOUNDSENTRY iWindowsEffect field */#define SSWF_NONE 0#define SSWF_TITLE 1#define SSWF_WINDOW 2#define SSWF_DISPLAY 3#define SSWF_CUSTOM 4typedef struct tagSOUNDSENTRYA{UINT cbSize;DWORD dwFlags;DWORD iFSTextEffect;DWORD iFSTextEffectMSec;DWORD iFSTextEffectColorBits;DWORD iFSGrafEffect;DWORD iFSGrafEffectMSec;DWORD iFSGrafEffectColor;DWORD iWindowsEffect;DWORD iWindowsEffectMSec;LPSTR lpszWindowsEffectDLL;DWORD iWindowsEffectOrdinal;} SOUNDSENTRYA, *LPSOUNDSENTRYA;typedef struct tagSOUNDSENTRYW{UINT cbSize;DWORD dwFlags;DWORD iFSTextEffect;DWORD iFSTextEffectMSec;DWORD iFSTextEffectColorBits;DWORD iFSGrafEffect;DWORD iFSGrafEffectMSec;DWORD iFSGrafEffectColor;DWORD iWindowsEffect;DWORD iWindowsEffectMSec;LPWSTR lpszWindowsEffectDLL;DWORD iWindowsEffectOrdinal;} SOUNDSENTRYW, *LPSOUNDSENTRYW;#ifdef UNICODEtypedef SOUNDSENTRYW SOUNDSENTRY;typedef LPSOUNDSENTRYW LPSOUNDSENTRY;#elsetypedef SOUNDSENTRYA SOUNDSENTRY;typedef LPSOUNDSENTRYA LPSOUNDSENTRY;#endif // UNICODE/** SOUNDSENTRY dwFlags field*/#define SSF_SOUNDSENTRYON 0x00000001#define SSF_AVAILABLE 0x00000002#define SSF_INDICATOR 0x00000004typedef struct tagTOGGLEKEYS{UINT cbSize;DWORD dwFlags;} TOGGLEKEYS, *LPTOGGLEKEYS;/** TOGGLEKEYS dwFlags field*/#define TKF_TOGGLEKEYSON 0x00000001#define TKF_AVAILABLE 0x00000002#define TKF_HOTKEYACTIVE 0x00000004#define TKF_CONFIRMHOTKEY 0x00000008#define TKF_HOTKEYSOUND 0x00000010#define TKF_INDICATOR 0x00000020/** Set debug level*/WINUSERAPIVOIDWINAPISetDebugErrorLevel(DWORD dwLevel);/** SetLastErrorEx() types.*/#define SLE_ERROR 0x00000001#define SLE_MINORERROR 0x00000002#define SLE_WARNING 0x00000003WINUSERAPIVOIDWINAPISetLastErrorEx(DWORD dwErrCode,DWORD dwType);#if(WINVER >= 0x0500)/** Multimonitor API.*/#define MONITOR_DEFAULTTONULL 0x00000000#define MONITOR_DEFAULTTOPRIMARY 0x00000001#define MONITOR_DEFAULTTONEAREST 0x00000002WINUSERAPIHMONITORWINAPIMonitorFromPoint(POINT pt, DWORD dwFlags);WINUSERAPIHMONITORWINAPIMonitorFromRect(LPCRECT lprc, DWORD dwFlags);WINUSERAPIHMONITORWINAPIMonitorFromWindow(HWND hwnd, DWORD dwFlags);#define MONITORINFOF_PRIMARY 0x00000001#ifndef CCHDEVICENAME#define CCHDEVICENAME 32#endiftypedef struct tagMONITORINFO{DWORD cbSize;RECT rcMonitor;RECT rcWork;DWORD dwFlags;} MONITORINFO, *LPMONITORINFO;#ifdef __cplusplustypedef struct tagMONITORINFOEXA : public tagMONITORINFO{CHAR szDevice[CCHDEVICENAME];} MONITORINFOEXA, *LPMONITORINFOEXA;typedef struct tagMONITORINFOEXW : public tagMONITORINFO{WCHAR szDevice[CCHDEVICENAME];} MONITORINFOEXW, *LPMONITORINFOEXW;#ifdef UNICODEtypedef MONITORINFOEXW MONITORINFOEX;typedef LPMONITORINFOEXW LPMONITORINFOEX;#elsetypedef MONITORINFOEXA MONITORINFOEX;typedef LPMONITORINFOEXA LPMONITORINFOEX;#endif // UNICODE#else // ndef __cplusplustypedef struct tagMONITORINFOEXA{MONITORINFO;CHAR szDevice[CCHDEVICENAME];} MONITORINFOEXA, *LPMONITORINFOEXA;typedef struct tagMONITORINFOEXW{MONITORINFO;WCHAR szDevice[CCHDEVICENAME];} MONITORINFOEXW, *LPMONITORINFOEXW;#ifdef UNICODEtypedef MONITORINFOEXW MONITORINFOEX;typedef LPMONITORINFOEXW LPMONITORINFOEX;#elsetypedef MONITORINFOEXA MONITORINFOEX;typedef LPMONITORINFOEXA LPMONITORINFOEX;#endif // UNICODE#endifWINUSERAPI BOOL WINAPI GetMonitorInfoA(HMONITOR hMonitor, LPMONITORINFO lpmi);WINUSERAPI BOOL WINAPI GetMonitorInfoW(HMONITOR hMonitor, LPMONITORINFO lpmi);#ifdef UNICODE#define GetMonitorInfo GetMonitorInfoW#else#define GetMonitorInfo GetMonitorInfoA#endif // !UNICODEtypedef BOOL (CALLBACK* MONITORENUMPROC)(HMONITOR, HDC, LPRECT, LPARAM);WINUSERAPIBOOLWINAPIEnumDisplayMonitors(HDC hdc,LPCRECT lprcClip,MONITORENUMPROC lpfnEnum,LPARAM dwData);#ifndef NOWINABLE/** WinEvents - Active Accessibility hooks*/WINUSERAPI VOID WINAPINotifyWinEvent(DWORD event,HWND hwnd,LONG idObject,LONG idChild);typedef VOID (CALLBACK* WINEVENTPROC)(HWINEVENTHOOK hWinEventHook,DWORD event,HWND hwnd,LONG idObject,LONG idChild,DWORD idEventThread,DWORD dwmsEventTime);/** idObject values for WinEventProc and NotifyWinEvent*//** hwnd + idObject can be used with OLEACC.DLL's OleGetObjectFromWindow()* to get an interface pointer to the container. indexChild is the item* within the container in question. Setup a VARIANT with vt VT_I4 and* lVal the indexChild and pass that in to all methods. Then you* are raring to go.*//** Common object IDs (cookies, only for sending WM_GETOBJECT to get at the* thing in question). Positive IDs are reserved for apps (app specific),* negative IDs are system things and are global, 0 means "just little old* me".*/#define CHILDID_SELF 0#define INDEXID_OBJECT 0#define INDEXID_CONTAINER 0/** Reserved IDs for system objects*/#define OBJID_WINDOW 0x00000000#define OBJID_SYSMENU 0xFFFFFFFF#define OBJID_TITLEBAR 0xFFFFFFFE#define OBJID_MENU 0xFFFFFFFD#define OBJID_CLIENT 0xFFFFFFFC#define OBJID_VSCROLL 0xFFFFFFFB#define OBJID_HSCROLL 0xFFFFFFFA#define OBJID_SIZEGRIP 0xFFFFFFF9#define OBJID_CARET 0xFFFFFFF8#define OBJID_CURSOR 0xFFFFFFF7#define OBJID_ALERT 0xFFFFFFF6#define OBJID_SOUND 0xFFFFFFF5/** EVENT DEFINITION*/#define EVENT_MIN 0x00000001#define EVENT_MAX 0x7FFFFFFF/** EVENT_SYSTEM_SOUND* Sent when a sound is played. Currently nothing is generating this, we* this event when a system sound (for menus, etc) is played. Apps* generate this, if accessible, when a private sound is played. For* example, if Mail plays a "New Mail" sound.** System Sounds:* (Generated by PlaySoundEvent in USER itself)* hwnd is NULL* idObject is OBJID_SOUND* idChild is sound child ID if one* App Sounds:* (PlaySoundEvent won't generate notification; up to app)* hwnd + idObject gets interface pointer to Sound object* idChild identifies the sound in question* are going to be cleaning up the SOUNDSENTRY feature in the control panel* and will use this at that time. Applications implementing WinEvents* are perfectly welcome to use it. Clients of IAccessible* will simply* turn around and get back a non-visual object that describes the sound.*/#define EVENT_SYSTEM_SOUND 0x0001/** EVENT_SYSTEM_ALERT* System Alerts:* (Generated by MessageBox() calls for example)* hwnd is hwndMessageBox* idObject is OBJID_ALERT* App Alerts:* (Generated whenever)* hwnd+idObject gets interface pointer to Alert*/#define EVENT_SYSTEM_ALERT 0x0002/** EVENT_SYSTEM_FOREGROUND* Sent when the foreground (active) window changes, even if it is changing* to another window in the same thread as the previous one.* hwnd is hwndNewForeground* idObject is OBJID_WINDOW* idChild is INDEXID_OBJECT*/#define EVENT_SYSTEM_FOREGROUND 0x0003/** Menu* hwnd is window (top level window or popup menu window)* idObject is ID of control (OBJID_MENU, OBJID_SYSMENU, OBJID_SELF for popup)* idChild is CHILDID_SELF** EVENT_SYSTEM_MENUSTART* EVENT_SYSTEM_MENUEND* For MENUSTART, hwnd+idObject+idChild refers to the control with the menu bar,* or the control bringing up the context menu.** Sent when entering into and leaving from menu mode (system, app bar, and* track popups).*/#define EVENT_SYSTEM_MENUSTART 0x0004#define EVENT_SYSTEM_MENUEND 0x0005/** EVENT_SYSTEM_MENUPOPUPSTART* EVENT_SYSTEM_MENUPOPUPEND* Sent when a menu popup comes up and just before it is taken down. Note* that for a call to TrackPopupMenu(), a client will see EVENT_SYSTEM_MENUSTART* followed almost immediately by EVENT_SYSTEM_MENUPOPUPSTART for the popup* being shown.** For MENUPOPUP, hwnd+idObject+idChild refers to the NEW popup coming up, not the* parent item which is hierarchical. You can get the parent menu/popup by* asking for the accParent object.*/#define EVENT_SYSTEM_MENUPOPUPSTART 0x0006#define EVENT_SYSTEM_MENUPOPUPEND 0x0007/** EVENT_SYSTEM_CAPTURESTART* EVENT_SYSTEM_CAPTUREEND* Sent when a window takes the capture and releases the capture.*/#define EVENT_SYSTEM_CAPTURESTART 0x0008#define EVENT_SYSTEM_CAPTUREEND 0x0009/** Move Size* EVENT_SYSTEM_MOVESIZESTART* EVENT_SYSTEM_MOVESIZEEND* Sent when a window enters and leaves move-size dragging mode.*/#define EVENT_SYSTEM_MOVESIZESTART 0x000A#define EVENT_SYSTEM_MOVESIZEEND 0x000B/** Context Help* EVENT_SYSTEM_CONTEXTHELPSTART* EVENT_SYSTEM_CONTEXTHELPEND* Sent when a window enters and leaves context sensitive help mode.*/#define EVENT_SYSTEM_CONTEXTHELPSTART 0x000C#define EVENT_SYSTEM_CONTEXTHELPEND 0x000D/** Drag & Drop* EVENT_SYSTEM_DRAGDROPSTART* EVENT_SYSTEM_DRAGDROPEND* Send the START notification just before going into drag&drop loop. Send* the END notification just after canceling out.* Note that it is up to apps and OLE to generate this, since the system* doesn't know. Like EVENT_SYSTEM_SOUND, it will be a while before this* is prevalent.*/#define EVENT_SYSTEM_DRAGDROPSTART 0x000E#define EVENT_SYSTEM_DRAGDROPEND 0x000F/** Dialog* Send the START notification right after the dialog is completely* initialized and visible. Send the END right before the dialog* is hidden and goes away.* EVENT_SYSTEM_DIALOGSTART* EVENT_SYSTEM_DIALOGEND*/#define EVENT_SYSTEM_DIALOGSTART 0x0010#define EVENT_SYSTEM_DIALOGEND 0x0011/** EVENT_SYSTEM_SCROLLING* EVENT_SYSTEM_SCROLLINGSTART* EVENT_SYSTEM_SCROLLINGEND* Sent when beginning and ending the tracking of a scrollbar in a window,* and also for scrollbar controls.*/#define EVENT_SYSTEM_SCROLLINGSTART 0x0012#define EVENT_SYSTEM_SCROLLINGEND 0x0013/** Alt-Tab Window* Send the START notification right after the switch window is initialized* and visible. Send the END right before it is hidden and goes away.* EVENT_SYSTEM_SWITCHSTART* EVENT_SYSTEM_SWITCHEND*/#define EVENT_SYSTEM_SWITCHSTART 0x0014#define EVENT_SYSTEM_SWITCHEND 0x0015/** EVENT_SYSTEM_MINIMIZESTART* EVENT_SYSTEM_MINIMIZEEND* Sent when a window minimizes and just before it restores.*/#define EVENT_SYSTEM_MINIMIZESTART 0x0016#define EVENT_SYSTEM_MINIMIZEEND 0x0017/** Object events** The system AND apps generate these. The system generates these for* real windows. Apps generate these for objects within their window which* act like a separate control, e.g. an item in a list view.** When the system generate them, dwParam2 is always WMOBJID_SELF. When* apps generate them, apps put the has-meaning-to-the-app-only ID value* in dwParam2.* For all events, if you want detailed accessibility information, callers* should* * Call AccessibleObjectFromWindow() with the hwnd, idObject parameters* of the event, and IID_IAccessible as the REFIID, to get back an* IAccessible* to talk to* * Initialize and fill in a VARIANT as VT_I4 with lVal the idChild* parameter of the event.* * If idChild isn't zero, call get_accChild() in the container to see* if the child is an object in its own right. If so, you will get* back an IDispatch* object for the child. You should release the* parent, and call QueryInterface() on the child object to get its* IAccessible*. Then you talk directly to the child. Otherwise,* if get_accChild() returns you nothing, you should continue to* use the child VARIANT. You will ask the container for the properties* of the child identified by the VARIANT. In other words, the* child in this case is accessible but not a full-blown object.* Like a button on a titlebar which is 'small' and has no children.*//** For all EVENT_OBJECT events,* hwnd is the dude to Send the WM_GETOBJECT message to (unless NULL,* see above for system things)* idObject is the ID of the object that can resolve any queries a* client might have. It's a way to deal with windowless controls,* controls that are just drawn on the screen in some larger parent* window (like SDM), or standard frame elements of a window.* idChild is the piece inside of the object that is affected. This* allows clients to access things that are too small to have full* blown objects in their own right. Like the thumb of a scrollbar.* The hwnd/idObject pair gets you to the container, the dude you* probably want to talk to most of the time anyway. The idChild* can then be passed into the acc properties to get the name/value* of it as needed.** Example #1:* System propagating a listbox selection change* EVENT_OBJECT_SELECTION* hwnd == listbox hwnd* idObject == OBJID_WINDOW* idChild == new selected item, or CHILDID_SELF if* nothing now selected within container.* Word '97 propagating a listbox selection change* hwnd == SDM window* idObject == SDM ID to get at listbox 'control'* idChild == new selected item, or CHILDID_SELF if* nothing** Example #2:* System propagating a menu item selection on the menu bar* EVENT_OBJECT_SELECTION* hwnd == top level window* idObject == OBJID_MENU* idChild == ID of child menu bar item selected** Example #3:* System propagating a dropdown coming off of said menu bar item* EVENT_OBJECT_CREATE* hwnd == popup item* idObject == OBJID_WINDOW* idChild == CHILDID_SELF** Example #4:** For EVENT_OBJECT_REORDER, the object referred to by hwnd/idObject is the* PARENT container in which the zorder is occurring. This is because if* one child is zordering, all of them are changing their relative zorder.*/#define EVENT_OBJECT_CREATE 0x8000 // hwnd + ID + idChild is created item#define EVENT_OBJECT_DESTROY 0x8001 // hwnd + ID + idChild is destroyed item#define EVENT_OBJECT_SHOW 0x8002 // hwnd + ID + idChild is shown item#define EVENT_OBJECT_HIDE 0x8003 // hwnd + ID + idChild is hidden item#define EVENT_OBJECT_REORDER 0x8004 // hwnd + ID + idChild is parent of zordering children/** NOTE:* Minimize the number of notifications!** When you are hiding a parent object, obviously all child objects are no* longer visible on screen. They still have the same "visible" status,* but are not truly visible. Hence do not send HIDE notifications for the* children also. One implies all. The same goes for SHOW.*/#define EVENT_OBJECT_FOCUS 0x8005 // hwnd + ID + idChild is focused item#define EVENT_OBJECT_SELECTION 0x8006 // hwnd + ID + idChild is selected item (if only one), or idChild is OBJID_WINDOW if complex#define EVENT_OBJECT_SELECTIONADD 0x8007 // hwnd + ID + idChild is item added#define EVENT_OBJECT_SELECTIONREMOVE 0x8008 // hwnd + ID + idChild is item removed#define EVENT_OBJECT_SELECTIONWITHIN 0x8009 // hwnd + ID + idChild is parent of changed selected items/** NOTES:* There is only one "focused" child item in a parent. This is the place* keystrokes are going at a given moment. Hence only send a notification* about where the NEW focus is going. A NEW item getting the focus already* implies that the OLD item is losing it.** SELECTION however can be multiple. Hence the different SELECTION* notifications. Here's when to use each:** (1) Send a SELECTION notification in the simple single selection* case (like the focus) when the item with the selection is* merely moving to a different item within a container. hwnd + ID* is the container control, idChildItem is the new child with the* selection.** (2) Send a SELECTIONADD notification when a new item has simply been added* to the selection within a container. This is appropriate when the* number of newly selected items is very small. hwnd + ID is the* container control, idChildItem is the new child added to the selection.** (3) Send a SELECTIONREMOVE notification when a new item has simply been* removed from the selection within a container. This is appropriate* when the number of newly selected items is very small, just like* SELECTIONADD. hwnd + ID is the container control, idChildItem is the* new child removed from the selection.** (4) Send a SELECTIONWITHIN notification when the selected items within a* control have changed substantially. Rather than propagate a large* number of changes to reflect removal for some items, addition of* others, just tell somebody who cares that a lot happened. It will* be faster an easier for somebody watching to just turn around and* query the container control what the new bunch of selected items* are.*/#define EVENT_OBJECT_STATECHANGE 0x800A // hwnd + ID + idChild is item w/ state change/** Examples of when to send an EVENT_OBJECT_STATECHANGE include* * It is being enabled/disabled (USER does for windows)* * It is being pressed/released (USER does for buttons)* * It is being checked/unchecked (USER does for radio/check buttons)*/#define EVENT_OBJECT_LOCATIONCHANGE 0x800B // hwnd + ID + idChild is moved/sized item/** Note:* A LOCATIONCHANGE is not sent for every child object when the parent* changes shape/moves. Send one notification for the topmost object* that is changing. For example, if the user resizes a top level window,* USER will generate a LOCATIONCHANGE for it, but not for the menu bar,* title bar, scrollbars, etc. that are also changing shape/moving.** In other words, it only generates LOCATIONCHANGE notifications for* real windows that are moving/sizing. It will not generate a LOCATIONCHANGE* for every non-floating child window when the parent moves (the children are* logically moving also on screen, but not relative to the parent).** Now, if the app itself resizes child windows as a result of being* sized, USER will generate LOCATIONCHANGEs for those dudes also because* it doesn't know better.** Note also that USER will generate LOCATIONCHANGE notifications for two* non-window sys objects:* (1) System caret* (2) Cursor*/#define EVENT_OBJECT_NAMECHANGE 0x800C // hwnd + ID + idChild is item w/ name change#define EVENT_OBJECT_DESCRIPTIONCHANGE 0x800D // hwnd + ID + idChild is item w/ desc change#define EVENT_OBJECT_VALUECHANGE 0x800E // hwnd + ID + idChild is item w/ value change#define EVENT_OBJECT_PARENTCHANGE 0x800F // hwnd + ID + idChild is item w/ new parent#define EVENT_OBJECT_HELPCHANGE 0x8010 // hwnd + ID + idChild is item w/ help change#define EVENT_OBJECT_DEFACTIONCHANGE 0x8011 // hwnd + ID + idChild is item w/ def action change#define EVENT_OBJECT_ACCELERATORCHANGE 0x8012 // hwnd + ID + idChild is item w/ keybd accel change/** Child IDs*//** System Sounds (idChild of system SOUND notification)*/#define SOUND_SYSTEM_STARTUP 1#define SOUND_SYSTEM_SHUTDOWN 2#define SOUND_SYSTEM_BEEP 3#define SOUND_SYSTEM_ERROR 4#define SOUND_SYSTEM_QUESTION 5#define SOUND_SYSTEM_WARNING 6#define SOUND_SYSTEM_INFORMATION 7#define SOUND_SYSTEM_MAXIMIZE 8#define SOUND_SYSTEM_MINIMIZE 9#define SOUND_SYSTEM_RESTOREUP 10#define SOUND_SYSTEM_RESTOREDOWN 11#define SOUND_SYSTEM_APPSTART 12#define SOUND_SYSTEM_FAULT 13#define SOUND_SYSTEM_APPEND 14#define SOUND_SYSTEM_MENUCOMMAND 15#define SOUND_SYSTEM_MENUPOPUP 16#define CSOUND_SYSTEM 16/** System Alerts (indexChild of system ALERT notification)*/#define ALERT_SYSTEM_INFORMATIONAL 1 // MB_INFORMATION#define ALERT_SYSTEM_WARNING 2 // MB_WARNING#define ALERT_SYSTEM_ERROR 3 // MB_ERROR#define ALERT_SYSTEM_QUERY 4 // MB_QUESTION#define ALERT_SYSTEM_CRITICAL 5 // HardSysErrBox#define CALERT_SYSTEM 6WINUSERAPI HWINEVENTHOOK WINAPISetWinEventHook(DWORD eventMin,DWORD eventMax,HMODULE hmodWinEventProc,WINEVENTPROC pfnWinEventProc,DWORD idProcess,DWORD idThread,DWORD dwFlags);WINUSERAPI BOOL WINAPIUnhookWinEvent(HWINEVENTHOOK hWinEventHook);/** dwFlags for SetWinEventHook*/#define WINEVENT_OUTOFCONTEXT 0x0000 // Events are ASYNC#define WINEVENT_SKIPOWNTHREAD 0x0001 // Don't call back for events on installer's thread#define WINEVENT_SKIPOWNPROCESS 0x0002 // Don't call back for events on installer's process#define WINEVENT_INCONTEXT 0x0004 // Events are SYNC, this causes your dll to be injected into every processtypedef struct tagGUITHREADINFO{DWORD cbSize;DWORD flags;HWND hwndActive;HWND hwndFocus;HWND hwndCapture;HWND hwndMenuOwner;HWND hwndMoveSize;HWND hwndCaret;RECT rcCaret;} GUITHREADINFO, *PGUITHREADINFO;#define GUI_CARETBLINKING 0x00000001#define GUI_INMOVESIZE 0x00000002#define GUI_INMENUMODE 0x00000004#define GUI_SYSTEMMENUMODE 0x00000008#define GUI_POPUPMENUMODE 0x00000010WINUSERAPI BOOL WINAPIGetGUIThreadInfo(DWORD idThread,PGUITHREADINFO pgui);WINUSERAPI UINT WINAPIGetWindowModuleFileNameA(HWND hwnd,LPSTR pszFileName,UINT cchFileNameMax);WINUSERAPI UINT WINAPIGetWindowModuleFileNameW(HWND hwnd,LPWSTR pszFileName,UINT cchFileNameMax);#ifdef UNICODE#define GetWindowModuleFileName GetWindowModuleFileNameW#else#define GetWindowModuleFileName GetWindowModuleFileNameA#endif // !UNICODE#define STATE_SYSTEM_UNAVAILABLE 0x00000001 // Disabled#define STATE_SYSTEM_SELECTED 0x00000002#define STATE_SYSTEM_FOCUSED 0x00000004#define STATE_SYSTEM_PRESSED 0x00000008#define STATE_SYSTEM_CHECKED 0x00000010#define STATE_SYSTEM_MIXED 0x00000020 // 3-state checkbox or toolbar button#define STATE_SYSTEM_READONLY 0x00000040#define STATE_SYSTEM_HOTTRACKED 0x00000080#define STATE_SYSTEM_DEFAULT 0x00000100#define STATE_SYSTEM_EXPANDED 0x00000200#define STATE_SYSTEM_COLLAPSED 0x00000400#define STATE_SYSTEM_BUSY 0x00000800#define STATE_SYSTEM_FLOATING 0x00001000 // Children "owned" not "contained" by parent#define STATE_SYSTEM_MARQUEED 0x00002000#define STATE_SYSTEM_ANIMATED 0x00004000#define STATE_SYSTEM_INVISIBLE 0x00008000#define STATE_SYSTEM_OFFSCREEN 0x00010000#define STATE_SYSTEM_SIZEABLE 0x00020000#define STATE_SYSTEM_MOVEABLE 0x00040000#define STATE_SYSTEM_SELFVOICING 0x00080000#define STATE_SYSTEM_FOCUSABLE 0x00100000#define STATE_SYSTEM_SELECTABLE 0x00200000#define STATE_SYSTEM_LINKED 0x00400000#define STATE_SYSTEM_TRAVERSED 0x00800000#define STATE_SYSTEM_MULTISELECTABLE 0x01000000 // Supports multiple selection#define STATE_SYSTEM_EXTSELECTABLE 0x02000000 // Supports extended selection#define STATE_SYSTEM_ALERT_LOW 0x04000000 // This information is of low priority#define STATE_SYSTEM_ALERT_MEDIUM 0x08000000 // This information is of medium priority#define STATE_SYSTEM_ALERT_HIGH 0x10000000 // This information is of high priority#define STATE_SYSTEM_VALID 0x1FFFFFFF#define CCHILDREN_TITLEBAR 5#define CCHILDREN_SCROLLBAR 5/** Information about the global cursor.*/typedef struct tagCURSORINFO{DWORD cbSize;DWORD flags;HCURSOR hCursor;POINT ptScreenPos;} CURSORINFO, *PCURSORINFO, *LPCURSORINFO;#define CURSOR_SHOWING 0x00000001BOOL WINAPIGetCursorInfo(PCURSORINFO pci);/** Window information snapshot*/typedef struct tagWINDOWINFO{DWORD cbSize;RECT rcWindow;RECT rcClient;DWORD dwStyle;DWORD dwExStyle;DWORD dwOtherStuff;UINT cxWindowBorders;UINT cyWindowBorders;ATOM atomWindowType;WORD wCreatorVersion;} WINDOWINFO, *PWINDOWINFO, *LPWINDOWINFO;#define WS_ACTIVECAPTION 0x0001BOOL WINAPIGetWindowInfo(HWND hwnd,PWINDOWINFO pwi);/** Titlebar information.*/typedef struct tagTITLEBARINFO{DWORD cbSize;RECT rcTitleBar;DWORD rgstate[CCHILDREN_TITLEBAR+1];} TITLEBARINFO, *PTITLEBARINFO, *LPTITLEBARINFO;BOOL WINAPIGetTitleBarInfo(HWND hwnd,PTITLEBARINFO pti);/** Menubar information*/typedef struct tagMENUBARINFO{DWORD cbSize;RECT rcBar; // rect of bar, popup, itemHMENU hMenu; // real menu handle of bar, popupHWND hwndMenu; // hwnd of item submenu if oneBOOL fBarFocused:1; // bar, popup has the focusBOOL fFocused:1; // item has the focus} MENUBARINFO, *PMENUBARINFO, *LPMENUBARINFO;BOOL WINAPIGetMenuBarInfo(HWND hwnd,LONG idObject,LONG idItem,PMENUBARINFO pmbi);/** Scrollbar information*/typedef struct tagSCROLLBARINFO{DWORD cbSize;RECT rcScrollBar;int dxyLineButton;int xyThumbTop;int xyThumbBottom;int bogus;DWORD rgstate[CCHILDREN_SCROLLBAR+1];} SCROLLBARINFO, *PSCROLLBARINFO, *LPSCROLLBARINFO;BOOLWINAPIGetScrollBarInfo(HWND hwnd,LONG idObject,PSCROLLBARINFO psbi);/** Combobox information*/typedef struct tagCOMBOBOXINFO{DWORD cbSize;RECT rcItem;RECT rcButton;DWORD stateButton;HWND hwndCombo;HWND hwndItem;HWND hwndList;} COMBOBOXINFO, *PCOMBOBOXINFO, *LPCOMBOBOXINFO;BOOLWINAPIGetComboBoxInfo(HWND hwndCombo,PCOMBOBOXINFO pcbi);/** The "real" ancestor window*/#define GA_MIC 1#define GA_PARENT 1#define GA_ROOT 2#define GA_ROOTOWNER 3#define GA_MAC 4HWNDWINAPIGetAncestor(HWND hwnd,UINT gaFlags);/** This gets the REAL child window at the point. If it is in the dead* space of a group box, it will try a sibling behind it. But static* fields will get returned. In other words, it is kind of a cross between* ChildWindowFromPointEx and WindowFromPoint.*/HWNDWINAPIRealChildWindowFromPoint(HWND hwndParent,POINT ptParentClientCoords);/** This gets the name of the window TYPE, not class. This allows us to* recognize ThunderButton32 et al.*/UINTWINAPIRealGetWindowClassA(HWND hwnd,LPTSTR pszType,UINT cchType);/** This gets the name of the window TYPE, not class. This allows us to* recognize ThunderButton32 et al.*/UINTWINAPIRealGetWindowClassW(HWND hwnd,LPTSTR pszType,UINT cchType);#ifdef UNICODE#define RealGetWindowClass RealGetWindowClassW#else#define RealGetWindowClass RealGetWindowClassA#endif // !UNICODE/** Alt-Tab Switch window information.*/typedef struct tagALTTABINFO{DWORD cbSize;int cItems;int cColumns;int cRows;int iColFocus;int iRowFocus;int cxItem;int cyItem;POINT ptStart;} ALTTABINFO, *PALTTABINFO, *LPALTTABINFO;BOOLWINAPIGetAltTabInfoA(HWND hwnd,int iItem,PALTTABINFO pati,LPTSTR pszItemText,UINT cchItemText);BOOLWINAPIGetAltTabInfoW(HWND hwnd,int iItem,PALTTABINFO pati,LPTSTR pszItemText,UINT cchItemText);#ifdef UNICODE#define GetAltTabInfo GetAltTabInfoW#else#define GetAltTabInfo GetAltTabInfoA#endif // !UNICODE/** Listbox information.* Returns the number of items per row.*/DWORDWINAPIGetListBoxInfo(HWND hwnd);#endif /* NOWINABLE */#endif /* WINVER >= 0x0500 */#if(_WIN32_WINNT >= 0x0500)WINUSERAPIBOOLWINAPILockWorkStation(VOID);#endif /* _WIN32_WINNT >= 0x0500 */#if(_WIN32_WINNT >= 0x0500)BOOL UserHandleGrantAccess(HANDLE hUserHandle,HANDLE hJob);#endif /* _WIN32_WINNT >= 0x0500 */#ifdef __cplusplus}#endif /* __cplusplus */#endif /* !_WINUSER_ */