winuser.h --#define WM_PAINT 0x000F

来源:互联网 发布:java登录系统权限 编辑:程序博客网 时间:2024/04/29 18:09
/*****************************************************************************                                                                           ** 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 _MAC    DWORD       lPrivate;#endif} MSG, *PMSG, NEAR *NPMSG, FAR *LPMSG;#define POINTSTOPOINT(pt, pts)                          \        { (pt).x = (LONG)(SHORT)LOWORD(*(LONG*)&pts);   \          (pt).y = (LONG)(SHORT)HIWORD(*(LONG*)&pts); }#define POINTTOPOINTS(pt)      (MAKELONG((short)((pt).x), (short)((pt).y)))#define MAKEWPARAM(l, h)      (WPARAM)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 _MAC    BYTE   fVirt;               /* Also called the flags field */    WORD   key;    WORD   cmd;#else    WORD   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 _MAC    RECT  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);#else    BOOL 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);WINUSERAPIHANDLEWINAPI    GetClipboardData(    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 array    LPINPUT pInputs,     // array of inputs    int     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_STATE    UINT    wID;            // used if MIIM_ID    HMENU   hSubMenu;       // used if MIIM_SUBMENU    HBITMAP hbmpChecked;    // used if MIIM_CHECKMARKS    HBITMAP hbmpUnchecked;  // used if MIIM_CHECKMARKS    DWORD   dwItemData;     // used if MIIM_DATA    LPSTR   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_STATE    UINT    wID;            // used if MIIM_ID    HMENU   hSubMenu;       // used if MIIM_SUBMENU    HBITMAP hbmpChecked;    // used if MIIM_CHECKMARKS    HBITMAP hbmpUnchecked;  // used if MIIM_CHECKMARKS    DWORD   dwItemData;     // used if MIIM_DATA    LPWSTR  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);WINUSERAPIBOOLWINAPI    SetRectEmpty(    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 0    WORD 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 _MAC    DWORD  mkSize;#else    WORD   mkSize;#endif    CHAR   mkKeylist;    CHAR   szKeyphrase[1];} MULTIKEYHELPA, *PMULTIKEYHELPA, *LPMULTIKEYHELPA;typedef struct tagMULTIKEYHELPW {#ifndef _MAC    DWORD  mkSize;#else    WORD   mkSize;#endif    WCHAR  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 Delay    DWORD iDelayMSec;           // Delay Until Repeat    DWORD iRepeatMSec;          // Repeat Rate    DWORD 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, item    HMENU hMenu;          // real menu handle of bar, popup    HWND  hwndMenu;       // hwnd of item submenu if one    BOOL  fBarFocused:1;  // bar, popup has the focus    BOOL  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_ */

原创粉丝点击