winuser.h
上传用户:gzccxsp
上传日期:2015-07-14
资源大小:182k
文件大小:238k
源码类别:

MacOS编程

开发平台:

Visual C++

  1.     UINT  uPos;
  2.     HMENU hmenu;
  3.     PVOID riid;
  4.     PVOID pvObj;
  5. } MENUGETOBJECTINFO, * PMENUGETOBJECTINFO;
  6. /*
  7.  * MENUGETOBJECTINFO dwFlags values
  8.  */
  9. #define MNGOF_GAP            0x00000003
  10. /*
  11.  * WM_MENUGETOBJECT return values
  12.  */
  13. #define MNGO_NOINTERFACE     0x00000000
  14. #define MNGO_NOERROR         0x00000001
  15. #endif /* _WIN32_WINDOWS >= 0x040a */
  16. #if(WINVER >= 0x0400)
  17. #define MIIM_STATE       0x00000001
  18. #define MIIM_ID          0x00000002
  19. #define MIIM_SUBMENU     0x00000004
  20. #define MIIM_CHECKMARKS  0x00000008
  21. #define MIIM_TYPE        0x00000010
  22. #define MIIM_DATA        0x00000020
  23. #endif /* WINVER >= 0x0400 */
  24. #if(_WIN32_WINDOWS >= 0x040a)
  25. #define MIIM_STRING      0x00000040
  26. #define MIIM_BITMAP      0x00000080
  27. #define MIIM_FTYPE       0x00000100
  28. #define HBM_BITMAPCALLBACK  (HBITMAP)(-1)
  29. #define HBMMENU_MBAR_RESTORE     ((HBITMAP)  2)
  30. #define HBMMENU_MBAR_MINIMIZE    ((HBITMAP)  3)
  31. #define HBMMENU_BULLET           ((HBITMAP)  4)
  32. #define HBMMENU_MBAR_CLOSE       ((HBITMAP)  5)
  33. #define HBMMENU_MBAR_CLOSE_D     ((HBITMAP)  6)
  34. #define HBMMENU_MBAR_MINIMIZE_D  ((HBITMAP)  7)
  35. #define HBMMENU_POPUP_CLOSE      ((HBITMAP)  8)
  36. #define HBMMENU_POPUP_RESTORE    ((HBITMAP)  9)
  37. #define HBMMENU_POPUP_MAXIMIZE   ((HBITMAP) 10)
  38. #define HBMMENU_POPUP_MINIMIZE   ((HBITMAP) 11)
  39. #endif /* _WIN32_WINDOWS >= 0x040a */
  40. #if(WINVER >= 0x0400)
  41. typedef struct tagMENUITEMINFOA
  42. {
  43.     UINT    cbSize;
  44.     UINT    fMask;
  45.     UINT    fType;          // used if MIIM_TYPE
  46.     UINT    fState;         // used if MIIM_STATE
  47.     UINT    wID;            // used if MIIM_ID
  48.     HMENU   hSubMenu;       // used if MIIM_SUBMENU
  49.     HBITMAP hbmpChecked;    // used if MIIM_CHECKMARKS
  50.     HBITMAP hbmpUnchecked;  // used if MIIM_CHECKMARKS
  51.     DWORD   dwItemData;     // used if MIIM_DATA
  52.     LPSTR   dwTypeData;     // used if MIIM_STRING
  53.     UINT    cch;            // used if MIIM_STRING
  54. #if(_WIN32_WINDOWS >= 0x040a)
  55.     HBITMAP hbmpItem;       // used if MIIM_BITMAP
  56. #endif /* _WIN32_WINDOWS >= 0x040a */
  57. }   MENUITEMINFOA, FAR *LPMENUITEMINFOA;
  58. typedef struct tagMENUITEMINFOW
  59. {
  60.     UINT    cbSize;
  61.     UINT    fMask;
  62.     UINT    fType;          // used if MIIM_TYPE
  63.     UINT    fState;         // used if MIIM_STATE
  64.     UINT    wID;            // used if MIIM_ID
  65.     HMENU   hSubMenu;       // used if MIIM_SUBMENU
  66.     HBITMAP hbmpChecked;    // used if MIIM_CHECKMARKS
  67.     HBITMAP hbmpUnchecked;  // used if MIIM_CHECKMARKS
  68.     DWORD   dwItemData;     // used if MIIM_DATA
  69.     LPWSTR  dwTypeData;     // used if MIIM_STRING
  70.     UINT    cch;            // used if MIIM_STRING
  71. #if(_WIN32_WINDOWS >= 0x040a)
  72.     HBITMAP hbmpItem;       // used if MIIM_BITMAP
  73. #endif /* _WIN32_WINDOWS >= 0x040a */
  74. }   MENUITEMINFOW, FAR *LPMENUITEMINFOW;
  75. #ifdef UNICODE
  76. typedef MENUITEMINFOW MENUITEMINFO;
  77. typedef LPMENUITEMINFOW LPMENUITEMINFO;
  78. #else
  79. typedef MENUITEMINFOA MENUITEMINFO;
  80. typedef LPMENUITEMINFOA LPMENUITEMINFO;
  81. #endif // UNICODE
  82. typedef MENUITEMINFOA CONST FAR *LPCMENUITEMINFOA;
  83. typedef MENUITEMINFOW CONST FAR *LPCMENUITEMINFOW;
  84. #ifdef UNICODE
  85. typedef LPCMENUITEMINFOW LPCMENUITEMINFO;
  86. #else
  87. typedef LPCMENUITEMINFOA LPCMENUITEMINFO;
  88. #endif // UNICODE
  89. WINUSERAPI
  90. BOOL
  91. WINAPI
  92. InsertMenuItemA(
  93.     HMENU,
  94.     UINT,
  95.     BOOL,
  96.     LPCMENUITEMINFOA
  97.     );
  98. WINUSERAPI
  99. BOOL
  100. WINAPI
  101. InsertMenuItemW(
  102.     HMENU,
  103.     UINT,
  104.     BOOL,
  105.     LPCMENUITEMINFOW
  106.     );
  107. #ifdef UNICODE
  108. #define InsertMenuItem  InsertMenuItemW
  109. #else
  110. #define InsertMenuItem  InsertMenuItemA
  111. #endif // !UNICODE
  112. WINUSERAPI
  113. BOOL
  114. WINAPI
  115. GetMenuItemInfoA(
  116.     HMENU,
  117.     UINT,
  118.     BOOL,
  119.     LPMENUITEMINFOA
  120.     );
  121. WINUSERAPI
  122. BOOL
  123. WINAPI
  124. GetMenuItemInfoW(
  125.     HMENU,
  126.     UINT,
  127.     BOOL,
  128.     LPMENUITEMINFOW
  129.     );
  130. #ifdef UNICODE
  131. #define GetMenuItemInfo  GetMenuItemInfoW
  132. #else
  133. #define GetMenuItemInfo  GetMenuItemInfoA
  134. #endif // !UNICODE
  135. WINUSERAPI
  136. BOOL
  137. WINAPI
  138. SetMenuItemInfoA(
  139.     HMENU,
  140.     UINT,
  141.     BOOL,
  142.     LPCMENUITEMINFOA
  143.     );
  144. WINUSERAPI
  145. BOOL
  146. WINAPI
  147. SetMenuItemInfoW(
  148.     HMENU,
  149.     UINT,
  150.     BOOL,
  151.     LPCMENUITEMINFOW
  152.     );
  153. #ifdef UNICODE
  154. #define SetMenuItemInfo  SetMenuItemInfoW
  155. #else
  156. #define SetMenuItemInfo  SetMenuItemInfoA
  157. #endif // !UNICODE
  158. #define GMDI_USEDISABLED    0x0001L
  159. #define GMDI_GOINTOPOPUPS   0x0002L
  160. WINUSERAPI UINT    WINAPI GetMenuDefaultItem(HMENU hMenu, UINT fByPos, UINT gmdiFlags);
  161. WINUSERAPI BOOL    WINAPI SetMenuDefaultItem(HMENU hMenu, UINT uItem, UINT fByPos);
  162. WINUSERAPI BOOL    WINAPI GetMenuItemRect(HWND hWnd, HMENU hMenu, UINT uItem, LPRECT lprcItem);
  163. WINUSERAPI int     WINAPI MenuItemFromPoint(HWND hWnd, HMENU hMenu, POINT ptScreen);
  164. #endif /* WINVER >= 0x0400 */
  165. /*
  166.  * Flags for TrackPopupMenu
  167.  */
  168. #define TPM_LEFTBUTTON  0x0000L
  169. #define TPM_RIGHTBUTTON 0x0002L
  170. #define TPM_LEFTALIGN   0x0000L
  171. #define TPM_CENTERALIGN 0x0004L
  172. #define TPM_RIGHTALIGN  0x0008L
  173. #if(WINVER >= 0x0400)
  174. #define TPM_TOPALIGN        0x0000L
  175. #define TPM_VCENTERALIGN    0x0010L
  176. #define TPM_BOTTOMALIGN     0x0020L
  177. #define TPM_HORIZONTAL      0x0000L     /* Horz alignment matters more */
  178. #define TPM_VERTICAL        0x0040L     /* Vert alignment matters more */
  179. #define TPM_NONOTIFY        0x0080L     /* Don't send any notification msgs */
  180. #define TPM_RETURNCMD       0x0100L
  181. #endif /* WINVER >= 0x0400 */
  182. #if (_WIN32_WINDOWS >= 0x040A)
  183. #define TPM_RECURSE         0x0001L
  184. #define TPM_HORPOSANIMATION 0x0400L
  185. #define TPM_HORNEGANIMATION 0x0800L
  186. #define TPM_VERPOSANIMATION 0x1000L
  187. #define TPM_VERNEGANIMATION 0x2000L
  188. #endif
  189. #if(_WIN32_WINDOWS >= 0x040a)
  190. #define TPM_VALID      (TPM_LEFTBUTTON   | 
  191. TPM_RIGHTBUTTON  | 
  192. TPM_LEFTALIGN    | 
  193. TPM_CENTERALIGN  | 
  194. TPM_RIGHTALIGN   | 
  195. TPM_TOPALIGN     | 
  196. TPM_VCENTERALIGN | 
  197. TPM_BOTTOMALIGN  | 
  198. TPM_HORIZONTAL   | 
  199. TPM_VERTICAL     | 
  200. TPM_NONOTIFY     | 
  201. TPM_RECURSE      | 
  202. TPM_RETURNCMD)
  203. #endif /* _WIN32_WINDOWS >= 0x040a */
  204. #endif /* !NOMENUS */
  205. #if(WINVER >= 0x0400)
  206. //
  207. // Drag-and-drop support
  208. //
  209. typedef struct tagDROPSTRUCT
  210. {
  211.     HWND    hwndSource;
  212.     HWND    hwndSink;
  213.     DWORD   wFmt;
  214.     DWORD   dwData;
  215.     POINT   ptDrop;
  216.     DWORD   dwControlData;
  217. } DROPSTRUCT, *PDROPSTRUCT, *LPDROPSTRUCT;
  218. #define DOF_EXECUTABLE      0x8001      // wFmt flags
  219. #define DOF_DOCUMENT        0x8002
  220. #define DOF_DIRECTORY       0x8003
  221. #define DOF_MULTIPLE        0x8004
  222. #define DOF_PROGMAN         0x0001
  223. #define DOF_SHELLDATA       0x0002
  224. #define DO_DROPFILE         0x454C4946L
  225. #define DO_PRINTFILE        0x544E5250L
  226. WINUSERAPI
  227. DWORD
  228. WINAPI
  229. DragObject(HWND, HWND, UINT, DWORD, HCURSOR);
  230. WINUSERAPI
  231. BOOL
  232. WINAPI
  233. DragDetect(HWND, POINT);
  234. #endif /* WINVER >= 0x0400 */
  235. WINUSERAPI
  236. BOOL
  237. WINAPI
  238. DrawIcon(
  239.     HDC hDC,
  240.     int X,
  241.     int Y,
  242.     HICON hIcon);
  243. #ifndef NODRAWTEXT
  244. /*
  245.  * DrawText() Format Flags
  246.  */
  247. #define DT_TOP                     0x00000000
  248. #define DT_LEFT                    0x00000000
  249. #define DT_CENTER                  0x00000001
  250. #define DT_RIGHT                   0x00000002
  251. #define DT_VCENTER                 0x00000004
  252. #define DT_BOTTOM                  0x00000008
  253. #define DT_WORDBREAK               0x00000010
  254. #define DT_SINGLELINE              0x00000020
  255. #define DT_EXPANDTABS              0x00000040
  256. #define DT_TABSTOP                 0x00000080
  257. #define DT_NOCLIP                  0x00000100
  258. #define DT_EXTERNALLEADING         0x00000200
  259. #define DT_CALCRECT                0x00000400
  260. #define DT_NOPREFIX                0x00000800
  261. #define DT_INTERNAL                0x00001000
  262. #if(WINVER >= 0x0400)
  263. #define DT_EDITCONTROL             0x00002000
  264. #define DT_PATH_ELLIPSIS           0x00004000
  265. #define DT_END_ELLIPSIS            0x00008000
  266. #define DT_MODIFYSTRING            0x00010000
  267. #define DT_RTLREADING              0x00020000
  268. #define DT_WORD_ELLIPSIS           0x00040000
  269. #if (_WIN32_WINDOWS >= 0x040A)
  270. #define DT_NOFULLWIDTHCHARBREAK    0x00080000
  271. #endif
  272. typedef struct tagDRAWTEXTPARAMS
  273. {
  274.     UINT    cbSize;
  275.     int     iTabLength;
  276.     int     iLeftMargin;
  277.     int     iRightMargin;
  278.     UINT    uiLengthDrawn;
  279. } DRAWTEXTPARAMS, FAR *LPDRAWTEXTPARAMS;
  280. #endif /* WINVER >= 0x0400 */
  281. WINUSERAPI
  282. int
  283. WINAPI
  284. DrawTextA(
  285.     HDC hDC,
  286.     LPCSTR lpString,
  287.     int nCount,
  288.     LPRECT lpRect,
  289.     UINT uFormat);
  290. WINUSERAPI
  291. int
  292. WINAPI
  293. DrawTextW(
  294.     HDC hDC,
  295.     LPCWSTR lpString,
  296.     int nCount,
  297.     LPRECT lpRect,
  298.     UINT uFormat);
  299. #ifdef UNICODE
  300. #define DrawText  DrawTextW
  301. #else
  302. #define DrawText  DrawTextA
  303. #endif // !UNICODE
  304. #if(WINVER >= 0x0400)
  305. WINUSERAPI
  306. int
  307. WINAPI
  308. DrawTextExA(HDC, LPSTR, int, LPRECT, UINT, LPDRAWTEXTPARAMS);
  309. WINUSERAPI
  310. int
  311. WINAPI
  312. DrawTextExW(HDC, LPWSTR, int, LPRECT, UINT, LPDRAWTEXTPARAMS);
  313. #ifdef UNICODE
  314. #define DrawTextEx  DrawTextExW
  315. #else
  316. #define DrawTextEx  DrawTextExA
  317. #endif // !UNICODE
  318. #endif /* WINVER >= 0x0400 */
  319. #endif /* !NODRAWTEXT */
  320. WINUSERAPI
  321. BOOL
  322. WINAPI
  323. GrayStringA(
  324.     HDC hDC,
  325.     HBRUSH hBrush,
  326.     GRAYSTRINGPROC lpOutputFunc,
  327.     LPARAM lpData,
  328.     int nCount,
  329.     int X,
  330.     int Y,
  331.     int nWidth,
  332.     int nHeight);
  333. WINUSERAPI
  334. BOOL
  335. WINAPI
  336. GrayStringW(
  337.     HDC hDC,
  338.     HBRUSH hBrush,
  339.     GRAYSTRINGPROC lpOutputFunc,
  340.     LPARAM lpData,
  341.     int nCount,
  342.     int X,
  343.     int Y,
  344.     int nWidth,
  345.     int nHeight);
  346. #ifdef UNICODE
  347. #define GrayString  GrayStringW
  348. #else
  349. #define GrayString  GrayStringA
  350. #endif // !UNICODE
  351. #if(WINVER >= 0x0400)
  352. /* Monolithic state-drawing routine */
  353. /* Image type */
  354. #define DST_COMPLEX     0x0000
  355. #define DST_TEXT        0x0001
  356. #define DST_PREFIXTEXT  0x0002
  357. #define DST_ICON        0x0003
  358. #define DST_BITMAP      0x0004
  359. /* State type */
  360. #define DSS_NORMAL      0x0000
  361. #define DSS_UNION       0x0010  /* Gray string appearance */
  362. #define DSS_DISABLED    0x0020
  363. #define DSS_MONO        0x0080
  364. #define DSS_RIGHT       0x8000
  365. WINUSERAPI BOOL WINAPI DrawStateA(HDC, HBRUSH, DRAWSTATEPROC, LPARAM, WPARAM, int, int, int, int, UINT);
  366. WINUSERAPI BOOL WINAPI DrawStateW(HDC, HBRUSH, DRAWSTATEPROC, LPARAM, WPARAM, int, int, int, int, UINT);
  367. #ifdef UNICODE
  368. #define DrawState  DrawStateW
  369. #else
  370. #define DrawState  DrawStateA
  371. #endif // !UNICODE
  372. #endif /* WINVER >= 0x0400 */
  373. WINUSERAPI
  374. LONG
  375. WINAPI
  376. TabbedTextOutA(
  377.     HDC hDC,
  378.     int X,
  379.     int Y,
  380.     LPCSTR lpString,
  381.     int nCount,
  382.     int nTabPositions,
  383.     LPINT lpnTabStopPositions,
  384.     int nTabOrigin);
  385. WINUSERAPI
  386. LONG
  387. WINAPI
  388. TabbedTextOutW(
  389.     HDC hDC,
  390.     int X,
  391.     int Y,
  392.     LPCWSTR lpString,
  393.     int nCount,
  394.     int nTabPositions,
  395.     LPINT lpnTabStopPositions,
  396.     int nTabOrigin);
  397. #ifdef UNICODE
  398. #define TabbedTextOut  TabbedTextOutW
  399. #else
  400. #define TabbedTextOut  TabbedTextOutA
  401. #endif // !UNICODE
  402. WINUSERAPI
  403. DWORD
  404. WINAPI
  405. GetTabbedTextExtentA(
  406.     HDC hDC,
  407.     LPCSTR lpString,
  408.     int nCount,
  409.     int nTabPositions,
  410.     LPINT lpnTabStopPositions);
  411. WINUSERAPI
  412. DWORD
  413. WINAPI
  414. GetTabbedTextExtentW(
  415.     HDC hDC,
  416.     LPCWSTR lpString,
  417.     int nCount,
  418.     int nTabPositions,
  419.     LPINT lpnTabStopPositions);
  420. #ifdef UNICODE
  421. #define GetTabbedTextExtent  GetTabbedTextExtentW
  422. #else
  423. #define GetTabbedTextExtent  GetTabbedTextExtentA
  424. #endif // !UNICODE
  425. WINUSERAPI
  426. BOOL
  427. WINAPI
  428. UpdateWindow(
  429.     HWND hWnd);
  430. WINUSERAPI
  431. HWND
  432. WINAPI
  433. SetActiveWindow(
  434.     HWND hWnd);
  435. WINUSERAPI
  436. HWND
  437. WINAPI
  438. GetForegroundWindow(
  439.     VOID);
  440. #if(WINVER >= 0x0400)
  441. WINUSERAPI BOOL WINAPI PaintDesktop(HDC hdc);
  442. #endif /* WINVER >= 0x0400 */
  443. WINUSERAPI
  444. BOOL
  445. WINAPI
  446. SetForegroundWindow(
  447.     HWND hWnd);
  448. #if (_WIN32_WINDOWS >= 0x045A)
  449. WINUSERAPI
  450. BOOL
  451. WINAPI
  452. AllowSetForegroundWindow(
  453.     DWORD dwProcessId);
  454. #define ASFW_ANY    ((DWORD)-1)
  455. WINUSERAPI
  456. BOOL
  457. WINAPI
  458. LockSetForegroundWindow(
  459.     UINT uLockCode);
  460. #define LSFW_LOCK       1
  461. #define LSFW_UNLOCK     2
  462. #endif  // (_WIN32_WINDOWS >= 0x045A)
  463. WINUSERAPI
  464. HWND
  465. WINAPI
  466. WindowFromDC(
  467.     HDC hDC);
  468. WINUSERAPI
  469. HDC
  470. WINAPI
  471. GetDC(
  472.     HWND hWnd);
  473. WINUSERAPI
  474. HDC
  475. WINAPI
  476. GetDCEx(
  477.     HWND hWnd ,
  478.     HRGN hrgnClip,
  479.     DWORD flags);
  480. /*
  481.  * GetDCEx() flags
  482.  */
  483. #define DCX_WINDOW           0x00000001L
  484. #define DCX_CACHE            0x00000002L
  485. #define DCX_NORESETATTRS     0x00000004L
  486. #define DCX_CLIPCHILDREN     0x00000008L
  487. #define DCX_CLIPSIBLINGS     0x00000010L
  488. #define DCX_PARENTCLIP       0x00000020L
  489. #define DCX_EXCLUDERGN       0x00000040L
  490. #define DCX_INTERSECTRGN     0x00000080L
  491. #define DCX_EXCLUDEUPDATE    0x00000100L
  492. #define DCX_INTERSECTUPDATE  0x00000200L
  493. #define DCX_LOCKWINDOWUPDATE 0x00000400L
  494. #define DCX_VALIDATE         0x00200000L
  495. #if(_WIN32_WINDOWS >= 0x040a)
  496. #define DCX_MONITOR          0x00004000L
  497. #endif /* _WIN32_WINDOWS >= 0x040a */
  498. WINUSERAPI
  499. HDC
  500. WINAPI
  501. GetWindowDC(
  502.     HWND hWnd);
  503. WINUSERAPI
  504. int
  505. WINAPI
  506. ReleaseDC(
  507.     HWND hWnd,
  508.     HDC hDC);
  509. WINUSERAPI
  510. HDC
  511. WINAPI
  512. BeginPaint(
  513.     HWND hWnd,
  514.     LPPAINTSTRUCT lpPaint);
  515. WINUSERAPI
  516. BOOL
  517. WINAPI
  518. EndPaint(
  519.     HWND hWnd,
  520.     CONST PAINTSTRUCT *lpPaint);
  521. WINUSERAPI
  522. BOOL
  523. WINAPI
  524. GetUpdateRect(
  525.     HWND hWnd,
  526.     LPRECT lpRect,
  527.     BOOL bErase);
  528. WINUSERAPI
  529. int
  530. WINAPI
  531. GetUpdateRgn(
  532.     HWND hWnd,
  533.     HRGN hRgn,
  534.     BOOL bErase);
  535. WINUSERAPI
  536. int
  537. WINAPI
  538. SetWindowRgn(
  539.     HWND hWnd,
  540.     HRGN hRgn,
  541.     BOOL bRedraw);
  542. WINUSERAPI
  543. int
  544. WINAPI
  545. GetWindowRgn(
  546.     HWND hWnd,
  547.     HRGN hRgn);
  548. WINUSERAPI
  549. int
  550. WINAPI
  551. ExcludeUpdateRgn(
  552.     HDC hDC,
  553.     HWND hWnd);
  554. WINUSERAPI
  555. BOOL
  556. WINAPI
  557. InvalidateRect(
  558.     HWND hWnd ,
  559.     CONST RECT *lpRect,
  560.     BOOL bErase);
  561. WINUSERAPI
  562. BOOL
  563. WINAPI
  564. ValidateRect(
  565.     HWND hWnd ,
  566.     CONST RECT *lpRect);
  567. WINUSERAPI
  568. BOOL
  569. WINAPI
  570. InvalidateRgn(
  571.     HWND hWnd,
  572.     HRGN hRgn,
  573.     BOOL bErase);
  574. WINUSERAPI
  575. BOOL
  576. WINAPI
  577. ValidateRgn(
  578.     HWND hWnd,
  579.     HRGN hRgn);
  580. WINUSERAPI
  581. BOOL
  582. WINAPI
  583. RedrawWindow(
  584.     HWND hWnd,
  585.     CONST RECT *lprcUpdate,
  586.     HRGN hrgnUpdate,
  587.     UINT flags);
  588. /*
  589.  * RedrawWindow() flags
  590.  */
  591. #define RDW_INVALIDATE          0x0001
  592. #define RDW_INTERNALPAINT       0x0002
  593. #define RDW_ERASE               0x0004
  594. #define RDW_VALIDATE            0x0008
  595. #define RDW_NOINTERNALPAINT     0x0010
  596. #define RDW_NOERASE             0x0020
  597. #define RDW_NOCHILDREN          0x0040
  598. #define RDW_ALLCHILDREN         0x0080
  599. #define RDW_UPDATENOW           0x0100
  600. #define RDW_ERASENOW            0x0200
  601. #define RDW_FRAME               0x0400
  602. #define RDW_NOFRAME             0x0800
  603. /*
  604.  * LockWindowUpdate API
  605.  */
  606. WINUSERAPI
  607. BOOL
  608. WINAPI
  609. LockWindowUpdate(
  610.     HWND hWndLock);
  611. WINUSERAPI
  612. BOOL
  613. WINAPI
  614. ScrollWindow(
  615.     HWND hWnd,
  616.     int XAmount,
  617.     int YAmount,
  618.     CONST RECT *lpRect,
  619.     CONST RECT *lpClipRect);
  620. WINUSERAPI
  621. BOOL
  622. WINAPI
  623. ScrollDC(
  624.     HDC hDC,
  625.     int dx,
  626.     int dy,
  627.     CONST RECT *lprcScroll,
  628.     CONST RECT *lprcClip ,
  629.     HRGN hrgnUpdate,
  630.     LPRECT lprcUpdate);
  631. WINUSERAPI
  632. int
  633. WINAPI
  634. ScrollWindowEx(
  635.     HWND hWnd,
  636.     int dx,
  637.     int dy,
  638.     CONST RECT *prcScroll,
  639.     CONST RECT *prcClip ,
  640.     HRGN hrgnUpdate,
  641.     LPRECT prcUpdate,
  642.     UINT flags);
  643. #define SW_SCROLLCHILDREN   0x0001  /* Scroll children within *lprcScroll. */
  644. #define SW_INVALIDATE       0x0002  /* Invalidate after scrolling */
  645. #define SW_ERASE            0x0004  /* If SW_INVALIDATE, don't send WM_ERASEBACKGROUND */
  646. #if (_WIN32_WINDOWS >= 0x040A)
  647. #define SW_SMOOTHSCROLL     0x0010  /* Use smooth scrolling */
  648. #endif // (_WIN32_WINDOWS >= 0x040A)
  649. #ifndef NOSCROLL
  650. WINUSERAPI
  651. int
  652. WINAPI
  653. SetScrollPos(
  654.     HWND hWnd,
  655.     int nBar,
  656.     int nPos,
  657.     BOOL bRedraw);
  658. WINUSERAPI
  659. int
  660. WINAPI
  661. GetScrollPos(
  662.     HWND hWnd,
  663.     int nBar);
  664. WINUSERAPI
  665. BOOL
  666. WINAPI
  667. SetScrollRange(
  668.     HWND hWnd,
  669.     int nBar,
  670.     int nMinPos,
  671.     int nMaxPos,
  672.     BOOL bRedraw);
  673. WINUSERAPI
  674. BOOL
  675. WINAPI
  676. GetScrollRange(
  677.     HWND hWnd,
  678.     int nBar,
  679.     LPINT lpMinPos,
  680.     LPINT lpMaxPos);
  681. WINUSERAPI
  682. BOOL
  683. WINAPI
  684. ShowScrollBar(
  685.     HWND hWnd,
  686.     int wBar,
  687.     BOOL bShow);
  688. WINUSERAPI
  689. BOOL
  690. WINAPI
  691. EnableScrollBar(
  692.     HWND hWnd,
  693.     UINT wSBflags,
  694.     UINT wArrows);
  695. /*
  696.  * EnableScrollBar() flags
  697.  */
  698. #define ESB_ENABLE_BOTH     0x0000
  699. #define ESB_DISABLE_BOTH    0x0003
  700. #define ESB_DISABLE_LEFT    0x0001
  701. #define ESB_DISABLE_RIGHT   0x0002
  702. #define ESB_DISABLE_UP      0x0001
  703. #define ESB_DISABLE_DOWN    0x0002
  704. #define ESB_DISABLE_LTUP    ESB_DISABLE_LEFT
  705. #define ESB_DISABLE_RTDN    ESB_DISABLE_RIGHT
  706. #endif  /* !NOSCROLL */
  707. WINUSERAPI
  708. BOOL
  709. WINAPI
  710. SetPropA(
  711.     HWND hWnd,
  712.     LPCSTR lpString,
  713.     HANDLE hData);
  714. WINUSERAPI
  715. BOOL
  716. WINAPI
  717. SetPropW(
  718.     HWND hWnd,
  719.     LPCWSTR lpString,
  720.     HANDLE hData);
  721. #ifdef UNICODE
  722. #define SetProp  SetPropW
  723. #else
  724. #define SetProp  SetPropA
  725. #endif // !UNICODE
  726. WINUSERAPI
  727. HANDLE
  728. WINAPI
  729. GetPropA(
  730.     HWND hWnd,
  731.     LPCSTR lpString);
  732. WINUSERAPI
  733. HANDLE
  734. WINAPI
  735. GetPropW(
  736.     HWND hWnd,
  737.     LPCWSTR lpString);
  738. #ifdef UNICODE
  739. #define GetProp  GetPropW
  740. #else
  741. #define GetProp  GetPropA
  742. #endif // !UNICODE
  743. WINUSERAPI
  744. HANDLE
  745. WINAPI
  746. RemovePropA(
  747.     HWND hWnd,
  748.     LPCSTR lpString);
  749. WINUSERAPI
  750. HANDLE
  751. WINAPI
  752. RemovePropW(
  753.     HWND hWnd,
  754.     LPCWSTR lpString);
  755. #ifdef UNICODE
  756. #define RemoveProp  RemovePropW
  757. #else
  758. #define RemoveProp  RemovePropA
  759. #endif // !UNICODE
  760. WINUSERAPI
  761. int
  762. WINAPI
  763. EnumPropsExA(
  764.     HWND hWnd,
  765.     PROPENUMPROCEXA lpEnumFunc,
  766.     LPARAM lParam);
  767. WINUSERAPI
  768. int
  769. WINAPI
  770. EnumPropsExW(
  771.     HWND hWnd,
  772.     PROPENUMPROCEXW lpEnumFunc,
  773.     LPARAM lParam);
  774. #ifdef UNICODE
  775. #define EnumPropsEx  EnumPropsExW
  776. #else
  777. #define EnumPropsEx  EnumPropsExA
  778. #endif // !UNICODE
  779. WINUSERAPI
  780. int
  781. WINAPI
  782. EnumPropsA(
  783.     HWND hWnd,
  784.     PROPENUMPROCA lpEnumFunc);
  785. WINUSERAPI
  786. int
  787. WINAPI
  788. EnumPropsW(
  789.     HWND hWnd,
  790.     PROPENUMPROCW lpEnumFunc);
  791. #ifdef UNICODE
  792. #define EnumProps  EnumPropsW
  793. #else
  794. #define EnumProps  EnumPropsA
  795. #endif // !UNICODE
  796. WINUSERAPI
  797. BOOL
  798. WINAPI
  799. SetWindowTextA(
  800.     HWND hWnd,
  801.     LPCSTR lpString);
  802. WINUSERAPI
  803. BOOL
  804. WINAPI
  805. SetWindowTextW(
  806.     HWND hWnd,
  807.     LPCWSTR lpString);
  808. #ifdef UNICODE
  809. #define SetWindowText  SetWindowTextW
  810. #else
  811. #define SetWindowText  SetWindowTextA
  812. #endif // !UNICODE
  813. WINUSERAPI
  814. int
  815. WINAPI
  816. GetWindowTextA(
  817.     HWND hWnd,
  818.     LPSTR lpString,
  819.     int nMaxCount);
  820. WINUSERAPI
  821. int
  822. WINAPI
  823. GetWindowTextW(
  824.     HWND hWnd,
  825.     LPWSTR lpString,
  826.     int nMaxCount);
  827. #ifdef UNICODE
  828. #define GetWindowText  GetWindowTextW
  829. #else
  830. #define GetWindowText  GetWindowTextA
  831. #endif // !UNICODE
  832. WINUSERAPI
  833. int
  834. WINAPI
  835. GetWindowTextLengthA(
  836.     HWND hWnd);
  837. WINUSERAPI
  838. int
  839. WINAPI
  840. GetWindowTextLengthW(
  841.     HWND hWnd);
  842. #ifdef UNICODE
  843. #define GetWindowTextLength  GetWindowTextLengthW
  844. #else
  845. #define GetWindowTextLength  GetWindowTextLengthA
  846. #endif // !UNICODE
  847. WINUSERAPI
  848. BOOL
  849. WINAPI
  850. GetClientRect(
  851.     HWND hWnd,
  852.     LPRECT lpRect);
  853. WINUSERAPI
  854. BOOL
  855. WINAPI
  856. GetWindowRect(
  857.     HWND hWnd,
  858.     LPRECT lpRect);
  859. WINUSERAPI
  860. BOOL
  861. WINAPI
  862. AdjustWindowRect(
  863.     LPRECT lpRect,
  864.     DWORD dwStyle,
  865.     BOOL bMenu);
  866. WINUSERAPI
  867. BOOL
  868. WINAPI
  869. AdjustWindowRectEx(
  870.     LPRECT lpRect,
  871.     DWORD dwStyle,
  872.     BOOL bMenu,
  873.     DWORD dwExStyle);
  874. #if(WINVER >= 0x0400)
  875. #define HELPINFO_WINDOW    0x0001
  876. #define HELPINFO_MENUITEM  0x0002
  877. typedef struct tagHELPINFO      /* Structure pointed to by lParam of WM_HELP */
  878. {
  879.     UINT    cbSize;             /* Size in bytes of this struct  */
  880.     int     iContextType;       /* Either HELPINFO_WINDOW or HELPINFO_MENUITEM */
  881.     int     iCtrlId;            /* Control Id or a Menu item Id. */
  882.     HANDLE  hItemHandle;        /* hWnd of control or hMenu.     */
  883.     DWORD   dwContextId;        /* Context Id associated with this item */
  884.     POINT   MousePos;           /* Mouse Position in screen co-ordinates */
  885. }  HELPINFO, FAR *LPHELPINFO;
  886. WINUSERAPI BOOL  WINAPI  SetWindowContextHelpId(HWND, DWORD);
  887. WINUSERAPI DWORD WINAPI  GetWindowContextHelpId(HWND);
  888. WINUSERAPI BOOL  WINAPI  SetMenuContextHelpId(HMENU, DWORD);
  889. WINUSERAPI DWORD WINAPI  GetMenuContextHelpId(HMENU);
  890. #endif /* WINVER >= 0x0400 */
  891. #ifndef NOMB
  892. /*
  893.  * MessageBox() Flags
  894.  */
  895. #define MB_OK                       0x00000000L
  896. #define MB_OKCANCEL                 0x00000001L
  897. #define MB_ABORTRETRYIGNORE         0x00000002L
  898. #define MB_YESNOCANCEL              0x00000003L
  899. #define MB_YESNO                    0x00000004L
  900. #define MB_RETRYCANCEL              0x00000005L
  901. #define MB_ICONHAND                 0x00000010L
  902. #define MB_ICONQUESTION             0x00000020L
  903. #define MB_ICONEXCLAMATION          0x00000030L
  904. #define MB_ICONASTERISK             0x00000040L
  905. #if(WINVER >= 0x0400)
  906. #define MB_USERICON                 0x00000080L
  907. #define MB_ICONWARNING              MB_ICONEXCLAMATION
  908. #define MB_ICONERROR                MB_ICONHAND
  909. #endif /* WINVER >= 0x0400 */
  910. #define MB_ICONINFORMATION          MB_ICONASTERISK
  911. #define MB_ICONSTOP                 MB_ICONHAND
  912. #define MB_DEFBUTTON1               0x00000000L
  913. #define MB_DEFBUTTON2               0x00000100L
  914. #define MB_DEFBUTTON3               0x00000200L
  915. #if(WINVER >= 0x0400)
  916. #define MB_DEFBUTTON4               0x00000300L
  917. #endif /* WINVER >= 0x0400 */
  918. #define MB_APPLMODAL                0x00000000L
  919. #define MB_SYSTEMMODAL              0x00001000L
  920. #define MB_TASKMODAL                0x00002000L
  921. #if(WINVER >= 0x0400)
  922. #define MB_HELP                     0x00004000L // Help Button
  923. #endif /* WINVER >= 0x0400 */
  924. #define MB_NOFOCUS                  0x00008000L
  925. #define MB_SETFOREGROUND            0x00010000L
  926. #define MB_DEFAULT_DESKTOP_ONLY     0x00020000L
  927. #if(WINVER >= 0x0400)
  928. #define MB_TOPMOST                  0x00040000L
  929. #define MB_RIGHT                    0x00080000L
  930. #define MB_RTLREADING               0x00100000L
  931. #endif /* WINVER >= 0x0400 */
  932. #ifdef _WIN32_WINNT
  933. #if (_WIN32_WINNT >= 0x0400)
  934. #define MB_SERVICE_NOTIFICATION          0x00200000L
  935. #else
  936. #define MB_SERVICE_NOTIFICATION          0x00040000L
  937. #endif
  938. #define MB_SERVICE_NOTIFICATION_NT3X     0x00040000L
  939. #endif
  940. #define MB_TYPEMASK                 0x0000000FL
  941. #define MB_ICONMASK                 0x000000F0L
  942. #define MB_DEFMASK                  0x00000F00L
  943. #define MB_MODEMASK                 0x00003000L
  944. #define MB_MISCMASK                 0x0000C000L
  945. WINUSERAPI
  946. int
  947. WINAPI
  948. MessageBoxA(
  949.     HWND hWnd ,
  950.     LPCSTR lpText,
  951.     LPCSTR lpCaption,
  952.     UINT uType);
  953. WINUSERAPI
  954. int
  955. WINAPI
  956. MessageBoxW(
  957.     HWND hWnd ,
  958.     LPCWSTR lpText,
  959.     LPCWSTR lpCaption,
  960.     UINT uType);
  961. #ifdef UNICODE
  962. #define MessageBox  MessageBoxW
  963. #else
  964. #define MessageBox  MessageBoxA
  965. #endif // !UNICODE
  966. WINUSERAPI
  967. int
  968. WINAPI
  969. MessageBoxExA(
  970.     HWND hWnd ,
  971.     LPCSTR lpText,
  972.     LPCSTR lpCaption,
  973.     UINT uType,
  974.     WORD wLanguageId);
  975. WINUSERAPI
  976. int
  977. WINAPI
  978. MessageBoxExW(
  979.     HWND hWnd ,
  980.     LPCWSTR lpText,
  981.     LPCWSTR lpCaption,
  982.     UINT uType,
  983.     WORD wLanguageId);
  984. #ifdef UNICODE
  985. #define MessageBoxEx  MessageBoxExW
  986. #else
  987. #define MessageBoxEx  MessageBoxExA
  988. #endif // !UNICODE
  989. #if(WINVER >= 0x0400)
  990. typedef void (CALLBACK *MSGBOXCALLBACK)(LPHELPINFO lpHelpInfo);
  991. typedef struct tagMSGBOXPARAMSA
  992. {
  993.     UINT        cbSize;
  994.     HWND        hwndOwner;
  995.     HINSTANCE   hInstance;
  996.     LPCSTR      lpszText;
  997.     LPCSTR      lpszCaption;
  998.     DWORD       dwStyle;
  999.     LPCSTR      lpszIcon;
  1000.     DWORD       dwContextHelpId;
  1001.     MSGBOXCALLBACK      lpfnMsgBoxCallback;
  1002.     DWORD   dwLanguageId;
  1003. } MSGBOXPARAMSA, *PMSGBOXPARAMSA, *LPMSGBOXPARAMSA;
  1004. typedef struct tagMSGBOXPARAMSW
  1005. {
  1006.     UINT        cbSize;
  1007.     HWND        hwndOwner;
  1008.     HINSTANCE   hInstance;
  1009.     LPCWSTR     lpszText;
  1010.     LPCWSTR     lpszCaption;
  1011.     DWORD       dwStyle;
  1012.     LPCWSTR     lpszIcon;
  1013.     DWORD       dwContextHelpId;
  1014.     MSGBOXCALLBACK      lpfnMsgBoxCallback;
  1015.     DWORD   dwLanguageId;
  1016. } MSGBOXPARAMSW, *PMSGBOXPARAMSW, *LPMSGBOXPARAMSW;
  1017. #ifdef UNICODE
  1018. typedef MSGBOXPARAMSW MSGBOXPARAMS;
  1019. typedef PMSGBOXPARAMSW PMSGBOXPARAMS;
  1020. typedef LPMSGBOXPARAMSW LPMSGBOXPARAMS;
  1021. #else
  1022. typedef MSGBOXPARAMSA MSGBOXPARAMS;
  1023. typedef PMSGBOXPARAMSA PMSGBOXPARAMS;
  1024. typedef LPMSGBOXPARAMSA LPMSGBOXPARAMS;
  1025. #endif // UNICODE
  1026. WINUSERAPI int     WINAPI MessageBoxIndirectA(LPMSGBOXPARAMSA);
  1027. WINUSERAPI int     WINAPI MessageBoxIndirectW(LPMSGBOXPARAMSW);
  1028. #ifdef UNICODE
  1029. #define MessageBoxIndirect  MessageBoxIndirectW
  1030. #else
  1031. #define MessageBoxIndirect  MessageBoxIndirectA
  1032. #endif // !UNICODE
  1033. #endif /* WINVER >= 0x0400 */
  1034. WINUSERAPI
  1035. BOOL
  1036. WINAPI
  1037. MessageBeep(
  1038.     UINT uType);
  1039. #endif /* !NOMB */
  1040. WINUSERAPI
  1041. int
  1042. WINAPI
  1043. ShowCursor(
  1044.     BOOL bShow);
  1045. WINUSERAPI
  1046. BOOL
  1047. WINAPI
  1048. SetCursorPos(
  1049.     int X,
  1050.     int Y);
  1051. WINUSERAPI
  1052. HCURSOR
  1053. WINAPI
  1054. SetCursor(
  1055.     HCURSOR hCursor);
  1056. WINUSERAPI
  1057. BOOL
  1058. WINAPI
  1059. GetCursorPos(
  1060.     LPPOINT lpPoint);
  1061. WINUSERAPI
  1062. BOOL
  1063. WINAPI
  1064. ClipCursor(
  1065.     CONST RECT *lpRect);
  1066. WINUSERAPI
  1067. BOOL
  1068. WINAPI
  1069. GetClipCursor(
  1070.     LPRECT lpRect);
  1071. WINUSERAPI
  1072. HCURSOR
  1073. WINAPI
  1074. GetCursor(
  1075.     VOID);
  1076. WINUSERAPI
  1077. BOOL
  1078. WINAPI
  1079. CreateCaret(
  1080.     HWND hWnd,
  1081.     HBITMAP hBitmap ,
  1082.     int nWidth,
  1083.     int nHeight);
  1084. WINUSERAPI
  1085. UINT
  1086. WINAPI
  1087. GetCaretBlinkTime(
  1088.     VOID);
  1089. WINUSERAPI
  1090. BOOL
  1091. WINAPI
  1092. SetCaretBlinkTime(
  1093.     UINT uMSeconds);
  1094. WINUSERAPI
  1095. BOOL
  1096. WINAPI
  1097. DestroyCaret(
  1098.     VOID);
  1099. WINUSERAPI
  1100. BOOL
  1101. WINAPI
  1102. HideCaret(
  1103.     HWND hWnd);
  1104. WINUSERAPI
  1105. BOOL
  1106. WINAPI
  1107. ShowCaret(
  1108.     HWND hWnd);
  1109. WINUSERAPI
  1110. BOOL
  1111. WINAPI
  1112. SetCaretPos(
  1113.     int X,
  1114.     int Y);
  1115. WINUSERAPI
  1116. BOOL
  1117. WINAPI
  1118. GetCaretPos(
  1119.     LPPOINT lpPoint);
  1120. WINUSERAPI
  1121. BOOL
  1122. WINAPI
  1123. ClientToScreen(
  1124.     HWND hWnd,
  1125.     LPPOINT lpPoint);
  1126. WINUSERAPI
  1127. BOOL
  1128. WINAPI
  1129. ScreenToClient(
  1130.     HWND hWnd,
  1131.     LPPOINT lpPoint);
  1132. WINUSERAPI
  1133. int
  1134. WINAPI
  1135. MapWindowPoints(
  1136.     HWND hWndFrom,
  1137.     HWND hWndTo,
  1138.     LPPOINT lpPoints,
  1139.     UINT cPoints);
  1140. WINUSERAPI
  1141. HWND
  1142. WINAPI
  1143. WindowFromPoint(
  1144.     POINT Point);
  1145. WINUSERAPI
  1146. HWND
  1147. WINAPI
  1148. ChildWindowFromPoint(
  1149.     HWND hWndParent,
  1150.     POINT Point);
  1151. #if(WINVER >= 0x0400)
  1152. #define CWP_ALL             0x0000
  1153. #define CWP_SKIPINVISIBLE   0x0001
  1154. #define CWP_SKIPDISABLED    0x0002
  1155. #define CWP_SKIPTRANSPARENT 0x0004
  1156. WINUSERAPI HWND    WINAPI ChildWindowFromPointEx(HWND, POINT, UINT);
  1157. #endif /* WINVER >= 0x0400 */
  1158. #ifndef NOCOLOR
  1159. /*
  1160.  * Color Types
  1161.  */
  1162. #define CTLCOLOR_MSGBOX         0
  1163. #define CTLCOLOR_EDIT           1
  1164. #define CTLCOLOR_LISTBOX        2
  1165. #define CTLCOLOR_BTN            3
  1166. #define CTLCOLOR_DLG            4
  1167. #define CTLCOLOR_SCROLLBAR      5
  1168. #define CTLCOLOR_STATIC         6
  1169. #define CTLCOLOR_MAX            7
  1170. #define COLOR_SCROLLBAR         0
  1171. #define COLOR_BACKGROUND        1
  1172. #define COLOR_ACTIVECAPTION     2
  1173. #define COLOR_INACTIVECAPTION   3
  1174. #define COLOR_MENU              4
  1175. #define COLOR_WINDOW            5
  1176. #define COLOR_WINDOWFRAME       6
  1177. #define COLOR_MENUTEXT          7
  1178. #define COLOR_WINDOWTEXT        8
  1179. #define COLOR_CAPTIONTEXT       9
  1180. #define COLOR_ACTIVEBORDER      10
  1181. #define COLOR_INACTIVEBORDER    11
  1182. #define COLOR_APPWORKSPACE      12
  1183. #define COLOR_HIGHLIGHT         13
  1184. #define COLOR_HIGHLIGHTTEXT     14
  1185. #define COLOR_BTNFACE           15
  1186. #define COLOR_BTNSHADOW         16
  1187. #define COLOR_GRAYTEXT          17
  1188. #define COLOR_BTNTEXT           18
  1189. #define COLOR_INACTIVECAPTIONTEXT 19
  1190. #define COLOR_BTNHIGHLIGHT      20
  1191. #if(WINVER >= 0x0400)
  1192. #define COLOR_3DDKSHADOW        21
  1193. #define COLOR_3DLIGHT           22
  1194. #define COLOR_INFOTEXT          23
  1195. #define COLOR_INFOBK            24
  1196. #endif /* WINVER >= 0x0400 */
  1197. #if (_WIN32_WINDOWS >= 0x040A)
  1198. #define COLOR_HOTLIGHT                26
  1199. #define COLOR_GRADIENTACTIVECAPTION   27
  1200. #define COLOR_GRADIENTINACTIVECAPTION 28
  1201. #endif
  1202. #if(WINVER >= 0x0400)
  1203. #define COLOR_DESKTOP           COLOR_BACKGROUND
  1204. #define COLOR_3DFACE            COLOR_BTNFACE
  1205. #define COLOR_3DSHADOW          COLOR_BTNSHADOW
  1206. #define COLOR_3DHIGHLIGHT       COLOR_BTNHIGHLIGHT
  1207. #define COLOR_3DHILIGHT         COLOR_BTNHIGHLIGHT
  1208. #define COLOR_BTNHILIGHT        COLOR_BTNHIGHLIGHT
  1209. #endif /* WINVER >= 0x0400 */
  1210. WINUSERAPI
  1211. DWORD
  1212. WINAPI
  1213. GetSysColor(
  1214.     int nIndex);
  1215. #if(WINVER >= 0x0400)
  1216. WINUSERAPI
  1217. HBRUSH
  1218. WINAPI
  1219. GetSysColorBrush(
  1220.     int nIndex);
  1221. #endif /* WINVER >= 0x0400 */
  1222. WINUSERAPI
  1223. BOOL
  1224. WINAPI
  1225. SetSysColors(
  1226.     int cElements,
  1227.     CONST INT * lpaElements,
  1228.     CONST COLORREF * lpaRgbValues);
  1229. #endif /* !NOCOLOR */
  1230. WINUSERAPI
  1231. BOOL
  1232. WINAPI
  1233. DrawFocusRect(
  1234.     HDC hDC,
  1235.     CONST RECT * lprc);
  1236. WINUSERAPI
  1237. int
  1238. WINAPI
  1239. FillRect(
  1240.     HDC hDC,
  1241.     CONST RECT *lprc,
  1242.     HBRUSH hbr);
  1243. WINUSERAPI
  1244. int
  1245. WINAPI
  1246. FrameRect(
  1247.     HDC hDC,
  1248.     CONST RECT *lprc,
  1249.     HBRUSH hbr);
  1250. WINUSERAPI
  1251. BOOL
  1252. WINAPI
  1253. InvertRect(
  1254.     HDC hDC,
  1255.     CONST RECT *lprc);
  1256. WINUSERAPI
  1257. BOOL
  1258. WINAPI
  1259. SetRect(
  1260.     LPRECT lprc,
  1261.     int xLeft,
  1262.     int yTop,
  1263.     int xRight,
  1264.     int yBottom);
  1265. WINUSERAPI
  1266. BOOL
  1267. WINAPI
  1268.     SetRectEmpty(
  1269.     LPRECT lprc);
  1270. WINUSERAPI
  1271. BOOL
  1272. WINAPI
  1273. CopyRect(
  1274.     LPRECT lprcDst,
  1275.     CONST RECT *lprcSrc);
  1276. WINUSERAPI
  1277. BOOL
  1278. WINAPI
  1279. InflateRect(
  1280.     LPRECT lprc,
  1281.     int dx,
  1282.     int dy);
  1283. WINUSERAPI
  1284. BOOL
  1285. WINAPI
  1286. IntersectRect(
  1287.     LPRECT lprcDst,
  1288.     CONST RECT *lprcSrc1,
  1289.     CONST RECT *lprcSrc2);
  1290. WINUSERAPI
  1291. BOOL
  1292. WINAPI
  1293. UnionRect(
  1294.     LPRECT lprcDst,
  1295.     CONST RECT *lprcSrc1,
  1296.     CONST RECT *lprcSrc2);
  1297. WINUSERAPI
  1298. BOOL
  1299. WINAPI
  1300. SubtractRect(
  1301.     LPRECT lprcDst,
  1302.     CONST RECT *lprcSrc1,
  1303.     CONST RECT *lprcSrc2);
  1304. WINUSERAPI
  1305. BOOL
  1306. WINAPI
  1307. OffsetRect(
  1308.     LPRECT lprc,
  1309.     int dx,
  1310.     int dy);
  1311. WINUSERAPI
  1312. BOOL
  1313. WINAPI
  1314. IsRectEmpty(
  1315.     CONST RECT *lprc);
  1316. WINUSERAPI
  1317. BOOL
  1318. WINAPI
  1319. EqualRect(
  1320.     CONST RECT *lprc1,
  1321.     CONST RECT *lprc2);
  1322. WINUSERAPI
  1323. BOOL
  1324. WINAPI
  1325. PtInRect(
  1326.     CONST RECT *lprc,
  1327.     POINT pt);
  1328. #ifndef NOWINOFFSETS
  1329. WINUSERAPI
  1330. WORD
  1331. WINAPI
  1332. GetWindowWord(
  1333.     HWND hWnd,
  1334.     int nIndex);
  1335. WINUSERAPI
  1336. WORD
  1337. WINAPI
  1338. SetWindowWord(
  1339.     HWND hWnd,
  1340.     int nIndex,
  1341.     WORD wNewWord);
  1342. WINUSERAPI
  1343. LONG
  1344. WINAPI
  1345. GetWindowLongA(
  1346.     HWND hWnd,
  1347.     int nIndex);
  1348. WINUSERAPI
  1349. LONG
  1350. WINAPI
  1351. GetWindowLongW(
  1352.     HWND hWnd,
  1353.     int nIndex);
  1354. #ifdef UNICODE
  1355. #define GetWindowLong  GetWindowLongW
  1356. #else
  1357. #define GetWindowLong  GetWindowLongA
  1358. #endif // !UNICODE
  1359. WINUSERAPI
  1360. LONG
  1361. WINAPI
  1362. SetWindowLongA(
  1363.     HWND hWnd,
  1364.     int nIndex,
  1365.     LONG dwNewLong);
  1366. WINUSERAPI
  1367. LONG
  1368. WINAPI
  1369. SetWindowLongW(
  1370.     HWND hWnd,
  1371.     int nIndex,
  1372.     LONG dwNewLong);
  1373. #ifdef UNICODE
  1374. #define SetWindowLong  SetWindowLongW
  1375. #else
  1376. #define SetWindowLong  SetWindowLongA
  1377. #endif // !UNICODE
  1378. #define GetWindowLongPtrA  GetWindowLongA
  1379. #define GetWindowLongPtrW  GetWindowLongW
  1380. #ifdef UNICODE
  1381. #define GetWindowLongPtr  GetWindowLongPtrW
  1382. #else
  1383. #define GetWindowLongPtr  GetWindowLongPtrA
  1384. #endif // !UNICODE
  1385. #define SetWindowLongPtrA  SetWindowLongA
  1386. #define SetWindowLongPtrW  SetWindowLongW
  1387. #ifdef UNICODE
  1388. #define SetWindowLongPtr  SetWindowLongPtrW
  1389. #else
  1390. #define SetWindowLongPtr  SetWindowLongPtrA
  1391. #endif // !UNICODE
  1392. WINUSERAPI
  1393. WORD
  1394. WINAPI
  1395. GetClassWord(
  1396.     HWND hWnd,
  1397.     int nIndex);
  1398. WINUSERAPI
  1399. WORD
  1400. WINAPI
  1401. SetClassWord(
  1402.     HWND hWnd,
  1403.     int nIndex,
  1404.     WORD wNewWord);
  1405. WINUSERAPI
  1406. DWORD
  1407. WINAPI
  1408. GetClassLongA(
  1409.     HWND hWnd,
  1410.     int nIndex);
  1411. WINUSERAPI
  1412. DWORD
  1413. WINAPI
  1414. GetClassLongW(
  1415.     HWND hWnd,
  1416.     int nIndex);
  1417. #ifdef UNICODE
  1418. #define GetClassLong  GetClassLongW
  1419. #else
  1420. #define GetClassLong  GetClassLongA
  1421. #endif // !UNICODE
  1422. WINUSERAPI
  1423. DWORD
  1424. WINAPI
  1425. SetClassLongA(
  1426.     HWND hWnd,
  1427.     int nIndex,
  1428.     LONG dwNewLong);
  1429. WINUSERAPI
  1430. DWORD
  1431. WINAPI
  1432. SetClassLongW(
  1433.     HWND hWnd,
  1434.     int nIndex,
  1435.     LONG dwNewLong);
  1436. #ifdef UNICODE
  1437. #define SetClassLong  SetClassLongW
  1438. #else
  1439. #define SetClassLong  SetClassLongA
  1440. #endif // !UNICODE
  1441. #endif /* !NOWINOFFSETS */
  1442. #if(WINVER >= 0x040a)
  1443. #ifdef USE_MIRRORING
  1444. WINUSERAPI
  1445. BOOL
  1446. WINAPI
  1447. GetProcessDefaultLayout(OUT DWORD *pdwDefaultLayout);
  1448. WINUSERAPI
  1449. BOOL
  1450. WINAPI
  1451. SetProcessDefaultLayout(IN DWORD dwDefaultlayout);
  1452. #endif  //USE_MIRRORING 
  1453. #endif /* WINVER >= 0x040a */
  1454. WINUSERAPI
  1455. HWND
  1456. WINAPI
  1457. GetDesktopWindow(
  1458.     VOID);
  1459. WINUSERAPI
  1460. HWND
  1461. WINAPI
  1462. GetParent(
  1463.     HWND hWnd);
  1464. WINUSERAPI
  1465. HWND
  1466. WINAPI
  1467. SetParent(
  1468.     HWND hWndChild,
  1469.     HWND hWndNewParent);
  1470. WINUSERAPI
  1471. BOOL
  1472. WINAPI
  1473. EnumChildWindows(
  1474.     HWND hWndParent,
  1475.     WNDENUMPROC lpEnumFunc,
  1476.     LPARAM lParam);
  1477. WINUSERAPI
  1478. HWND
  1479. WINAPI
  1480. FindWindowA(
  1481.     LPCSTR lpClassName ,
  1482.     LPCSTR lpWindowName);
  1483. WINUSERAPI
  1484. HWND
  1485. WINAPI
  1486. FindWindowW(
  1487.     LPCWSTR lpClassName ,
  1488.     LPCWSTR lpWindowName);
  1489. #ifdef UNICODE
  1490. #define FindWindow  FindWindowW
  1491. #else
  1492. #define FindWindow  FindWindowA
  1493. #endif // !UNICODE
  1494. #if(WINVER >= 0x0400)
  1495. WINUSERAPI HWND    WINAPI FindWindowExA(HWND, HWND, LPCSTR, LPCSTR);
  1496. WINUSERAPI HWND    WINAPI FindWindowExW(HWND, HWND, LPCWSTR, LPCWSTR);
  1497. #ifdef UNICODE
  1498. #define FindWindowEx  FindWindowExW
  1499. #else
  1500. #define FindWindowEx  FindWindowExA
  1501. #endif // !UNICODE
  1502. #endif /* WINVER >= 0x0400 */
  1503. WINUSERAPI
  1504. BOOL
  1505. WINAPI
  1506. EnumWindows(
  1507.     WNDENUMPROC lpEnumFunc,
  1508.     LPARAM lParam);
  1509. WINUSERAPI
  1510. BOOL
  1511. WINAPI
  1512. EnumThreadWindows(
  1513.     DWORD dwThreadId,
  1514.     WNDENUMPROC lpfn,
  1515.     LPARAM lParam);
  1516. #define EnumTaskWindows(hTask, lpfn, lParam) EnumThreadWindows((DWORD)hTask, lpfn, lParam)
  1517. WINUSERAPI
  1518. int
  1519. WINAPI
  1520. GetClassNameA(
  1521.     HWND hWnd,
  1522.     LPSTR lpClassName,
  1523.     int nMaxCount);
  1524. WINUSERAPI
  1525. int
  1526. WINAPI
  1527. GetClassNameW(
  1528.     HWND hWnd,
  1529.     LPWSTR lpClassName,
  1530.     int nMaxCount);
  1531. #ifdef UNICODE
  1532. #define GetClassName  GetClassNameW
  1533. #else
  1534. #define GetClassName  GetClassNameA
  1535. #endif // !UNICODE
  1536. WINUSERAPI
  1537. HWND
  1538. WINAPI
  1539. GetTopWindow(
  1540.     HWND hWnd);
  1541. #define GetNextWindow(hWnd, wCmd) GetWindow(hWnd, wCmd)
  1542. #define GetSysModalWindow() (NULL)
  1543. #define SetSysModalWindow(hWnd) (NULL)
  1544. WINUSERAPI
  1545. DWORD
  1546. WINAPI
  1547. GetWindowThreadProcessId(
  1548.     HWND hWnd,
  1549.     LPDWORD lpdwProcessId);
  1550. #define GetWindowTask(hWnd) 
  1551. ((HANDLE)GetWindowThreadProcessId(hWnd, NULL))
  1552. WINUSERAPI
  1553. HWND
  1554. WINAPI
  1555. GetLastActivePopup(
  1556.     HWND hWnd);
  1557. /*
  1558.  * GetWindow() Constants
  1559.  */
  1560. #define GW_HWNDFIRST        0
  1561. #define GW_HWNDLAST         1
  1562. #define GW_HWNDNEXT         2
  1563. #define GW_HWNDPREV         3
  1564. #define GW_OWNER            4
  1565. #define GW_CHILD            5
  1566. #define GW_ENABLEDPOPUP     6
  1567. #define GW_MAX              6
  1568. WINUSERAPI
  1569. HWND
  1570. WINAPI
  1571. GetWindow(
  1572.     HWND hWnd,
  1573.     UINT uCmd);
  1574. #ifndef NOWH
  1575. #ifdef STRICT
  1576. WINUSERAPI
  1577. HHOOK
  1578. WINAPI
  1579. SetWindowsHookA(
  1580.     int nFilterType,
  1581.     HOOKPROC pfnFilterProc);
  1582. WINUSERAPI
  1583. HHOOK
  1584. WINAPI
  1585. SetWindowsHookW(
  1586.     int nFilterType,
  1587.     HOOKPROC pfnFilterProc);
  1588. #ifdef UNICODE
  1589. #define SetWindowsHook  SetWindowsHookW
  1590. #else
  1591. #define SetWindowsHook  SetWindowsHookA
  1592. #endif // !UNICODE
  1593. #else /* !STRICT */
  1594. WINUSERAPI
  1595. HOOKPROC
  1596. WINAPI
  1597. SetWindowsHookA(
  1598.     int nFilterType,
  1599.     HOOKPROC pfnFilterProc);
  1600. WINUSERAPI
  1601. HOOKPROC
  1602. WINAPI
  1603. SetWindowsHookW(
  1604.     int nFilterType,
  1605.     HOOKPROC pfnFilterProc);
  1606. #ifdef UNICODE
  1607. #define SetWindowsHook  SetWindowsHookW
  1608. #else
  1609. #define SetWindowsHook  SetWindowsHookA
  1610. #endif // !UNICODE
  1611. #endif /* !STRICT */
  1612. WINUSERAPI
  1613. BOOL
  1614. WINAPI
  1615. UnhookWindowsHook(
  1616.     int nCode,
  1617.     HOOKPROC pfnFilterProc);
  1618. WINUSERAPI
  1619. HHOOK
  1620. WINAPI
  1621. SetWindowsHookExA(
  1622.     int idHook,
  1623.     HOOKPROC lpfn,
  1624.     HINSTANCE hmod,
  1625.     DWORD dwThreadId);
  1626. WINUSERAPI
  1627. HHOOK
  1628. WINAPI
  1629. SetWindowsHookExW(
  1630.     int idHook,
  1631.     HOOKPROC lpfn,
  1632.     HINSTANCE hmod,
  1633.     DWORD dwThreadId);
  1634. #ifdef UNICODE
  1635. #define SetWindowsHookEx  SetWindowsHookExW
  1636. #else
  1637. #define SetWindowsHookEx  SetWindowsHookExA
  1638. #endif // !UNICODE
  1639. WINUSERAPI
  1640. BOOL
  1641. WINAPI
  1642. UnhookWindowsHookEx(
  1643.     HHOOK hhk);
  1644. WINUSERAPI
  1645. LRESULT
  1646. WINAPI
  1647. CallNextHookEx(
  1648.     HHOOK hhk,
  1649.     int nCode,
  1650.     WPARAM wParam,
  1651.     LPARAM lParam);
  1652. /*
  1653.  * Macros for source-level compatibility with old functions.
  1654.  */
  1655. #ifdef STRICT
  1656. #define DefHookProc(nCode, wParam, lParam, phhk)
  1657. CallNextHookEx(*phhk, nCode, wParam, lParam)
  1658. #else
  1659. #define DefHookProc(nCode, wParam, lParam, phhk)
  1660. CallNextHookEx((HHOOK)*phhk, nCode, wParam, lParam)
  1661. #endif /* STRICT */
  1662. #endif /* !NOWH */
  1663. #ifndef NOMENUS
  1664. // begin_r_winuser
  1665. /* ;win40  -- A lot of MF_* flags have been renamed as MFT_* and MFS_* flags */
  1666. /*
  1667.  * Menu flags for Add/Check/EnableMenuItem()
  1668.  */
  1669. #define MF_INSERT           0x00000000L
  1670. #define MF_CHANGE           0x00000080L
  1671. #define MF_APPEND           0x00000100L
  1672. #define MF_DELETE           0x00000200L
  1673. #define MF_REMOVE           0x00001000L
  1674. #define MF_BYCOMMAND        0x00000000L
  1675. #define MF_BYPOSITION       0x00000400L
  1676. #define MF_SEPARATOR        0x00000800L
  1677. #define MF_ENABLED          0x00000000L
  1678. #define MF_GRAYED           0x00000001L
  1679. #define MF_DISABLED         0x00000002L
  1680. #define MF_UNCHECKED        0x00000000L
  1681. #define MF_CHECKED          0x00000008L
  1682. #define MF_USECHECKBITMAPS  0x00000200L
  1683. #define MF_STRING           0x00000000L /* Obsolete -- use MIIM_STRING instead */
  1684. #define MF_BITMAP           0x00000004L /* Obsolete -- use MIIM_BITMAP instead */
  1685. #define MF_OWNERDRAW        0x00000100L
  1686. #define MF_POPUP            0x00000010L
  1687. #define MF_MENUBARBREAK     0x00000020L
  1688. #define MF_MENUBREAK        0x00000040L
  1689. #define MF_UNHILITE         0x00000000L
  1690. #define MF_HILITE           0x00000080L
  1691. #if(WINVER >= 0x0400)
  1692. #define MF_DEFAULT          0x00001000L
  1693. #endif /* WINVER >= 0x0400 */
  1694. #define MF_SYSMENU          0x00002000L
  1695. #define MF_HELP             0x00004000L
  1696. #if(WINVER >= 0x0400)
  1697. #define MF_RIGHTJUSTIFY     0x00004000L
  1698. #endif /* WINVER >= 0x0400 */
  1699. #define MF_MOUSESELECT      0x00008000L
  1700. #if(WINVER >= 0x0400)
  1701. #define MF_END              0x00000080L  /* Obsolete -- only used by old RES files */
  1702. #endif /* WINVER >= 0x0400 */
  1703. #if(WINVER >= 0x0400)
  1704. #define MFT_STRING          MF_STRING
  1705. #define MFT_BITMAP          MF_BITMAP   /* Obsolete -- use MIIM_BITMAP instead */
  1706. #define MFT_MENUBARBREAK    MF_MENUBARBREAK
  1707. #define MFT_MENUBREAK       MF_MENUBREAK
  1708. #define MFT_OWNERDRAW       MF_OWNERDRAW
  1709. #define MFT_RADIOCHECK      0x00000200L
  1710. #define MFT_SEPARATOR       MF_SEPARATOR
  1711. #define MFT_RIGHTORDER      0x00002000L
  1712. #define MFT_RIGHTJUSTIFY    MF_RIGHTJUSTIFY
  1713. /* Menu flags for Add/Check/EnableMenuItem() */
  1714. #define MFS_GRAYED          0x00000003L
  1715. #define MFS_DISABLED        MFS_GRAYED
  1716. #define MFS_CHECKED         MF_CHECKED
  1717. #define MFS_HILITE          MF_HILITE
  1718. #define MFS_ENABLED         MF_ENABLED
  1719. #define MFS_UNCHECKED       MF_UNCHECKED
  1720. #define MFS_UNHILITE        MF_UNHILITE
  1721. #define MFS_DEFAULT         MF_DEFAULT
  1722. #endif /* WINVER >= 0x0400 */
  1723. #if(_WIN32_WINDOWS >= 0x040a)
  1724. #endif /* _WIN32_WINDOWS >= 0x040a */
  1725. #if(WINVER >= 0x0400)
  1726. #endif /* WINVER >= 0x0400 */
  1727. // end_r_winuser
  1728. #if(WINVER >= 0x0400)
  1729. WINUSERAPI
  1730. BOOL
  1731. WINAPI
  1732. CheckMenuRadioItem(HMENU, UINT, UINT, UINT, UINT);
  1733. #endif /* WINVER >= 0x0400 */
  1734. /*
  1735.  * Menu item resource format
  1736.  */
  1737. typedef struct {
  1738.     WORD versionNumber;
  1739.     WORD offset;
  1740. } MENUITEMTEMPLATEHEADER, *PMENUITEMTEMPLATEHEADER;
  1741. typedef struct {        // version 0
  1742.     WORD mtOption;
  1743.     WORD mtID;
  1744.     WCHAR mtString[1];
  1745. } MENUITEMTEMPLATE, *PMENUITEMTEMPLATE;
  1746. #define MF_END             0x00000080L          // r_winuser
  1747. #endif /* !NOMENUS */
  1748. #ifndef NOSYSCOMMANDS
  1749. // begin_r_winuser
  1750. /*
  1751.  * System Menu Command Values
  1752.  */
  1753. #define SC_SIZE         0xF000
  1754. #define SC_MOVE         0xF010
  1755. #define SC_MINIMIZE     0xF020
  1756. #define SC_MAXIMIZE     0xF030
  1757. #define SC_NEXTWINDOW   0xF040
  1758. #define SC_PREVWINDOW   0xF050
  1759. #define SC_CLOSE        0xF060
  1760. #define SC_VSCROLL      0xF070
  1761. #define SC_HSCROLL      0xF080
  1762. #define SC_MOUSEMENU    0xF090
  1763. #define SC_KEYMENU      0xF100
  1764. #define SC_ARRANGE      0xF110
  1765. #define SC_RESTORE      0xF120
  1766. #define SC_TASKLIST     0xF130
  1767. #define SC_SCREENSAVE   0xF140
  1768. #define SC_HOTKEY       0xF150
  1769. #if(WINVER >= 0x0400)
  1770. #define SC_DEFAULT      0xF160
  1771. #define SC_MONITORPOWER 0xF170
  1772. #define SC_CONTEXTHELP  0xF180
  1773. #define SC_SYSTEMSLEEP  0xF190
  1774. #define SC_SEPARATOR    0xF00F
  1775. #endif /* WINVER >= 0x0400 */
  1776. /*
  1777.  * Obsolete names
  1778.  */
  1779. #define SC_ICON         SC_MINIMIZE
  1780. #define SC_ZOOM         SC_MAXIMIZE
  1781. // end_r_winuser
  1782. #endif /* !NOSYSCOMMANDS */
  1783. /*
  1784.  * Resource Loading Routines
  1785.  */
  1786. WINUSERAPI
  1787. HBITMAP
  1788. WINAPI
  1789. LoadBitmapA(
  1790.     HINSTANCE hInstance,
  1791.     LPCSTR lpBitmapName);
  1792. WINUSERAPI
  1793. HBITMAP
  1794. WINAPI
  1795. LoadBitmapW(
  1796.     HINSTANCE hInstance,
  1797.     LPCWSTR lpBitmapName);
  1798. #ifdef UNICODE
  1799. #define LoadBitmap  LoadBitmapW
  1800. #else
  1801. #define LoadBitmap  LoadBitmapA
  1802. #endif // !UNICODE
  1803. WINUSERAPI
  1804. HCURSOR
  1805. WINAPI
  1806. LoadCursorA(
  1807.     HINSTANCE hInstance,
  1808.     LPCSTR lpCursorName);
  1809. WINUSERAPI
  1810. HCURSOR
  1811. WINAPI
  1812. LoadCursorW(
  1813.     HINSTANCE hInstance,
  1814.     LPCWSTR lpCursorName);
  1815. #ifdef UNICODE
  1816. #define LoadCursor  LoadCursorW
  1817. #else
  1818. #define LoadCursor  LoadCursorA
  1819. #endif // !UNICODE
  1820. WINUSERAPI
  1821. HCURSOR
  1822. WINAPI
  1823. LoadCursorFromFileA(
  1824.     LPCSTR    lpFileName);
  1825. WINUSERAPI
  1826. HCURSOR
  1827. WINAPI
  1828. LoadCursorFromFileW(
  1829.     LPCWSTR    lpFileName);
  1830. #ifdef UNICODE
  1831. #define LoadCursorFromFile  LoadCursorFromFileW
  1832. #else
  1833. #define LoadCursorFromFile  LoadCursorFromFileA
  1834. #endif // !UNICODE
  1835. WINUSERAPI
  1836. HCURSOR
  1837. WINAPI
  1838. CreateCursor(
  1839.     HINSTANCE hInst,
  1840.     int xHotSpot,
  1841.     int yHotSpot,
  1842.     int nWidth,
  1843.     int nHeight,
  1844.     CONST VOID *pvANDPlane,
  1845.     CONST VOID *pvXORPlane);
  1846. WINUSERAPI
  1847. BOOL
  1848. WINAPI
  1849. DestroyCursor(
  1850.     HCURSOR hCursor);
  1851. #define CopyCursor(pcur) ((HCURSOR)CopyIcon((HICON)(pcur)))
  1852. /*
  1853.  * Standard Cursor IDs
  1854.  */
  1855. #define IDC_ARROW           MAKEINTRESOURCE(32512)
  1856. #define IDC_IBEAM           MAKEINTRESOURCE(32513)
  1857. #define IDC_WAIT            MAKEINTRESOURCE(32514)
  1858. #define IDC_CROSS           MAKEINTRESOURCE(32515)
  1859. #define IDC_UPARROW         MAKEINTRESOURCE(32516)
  1860. #define IDC_SIZE            MAKEINTRESOURCE(32640)  /* OBSOLETE: use IDC_SIZEALL */
  1861. #define IDC_ICON            MAKEINTRESOURCE(32641)  /* OBSOLETE: use IDC_ARROW */
  1862. #define IDC_SIZENWSE        MAKEINTRESOURCE(32642)
  1863. #define IDC_SIZENESW        MAKEINTRESOURCE(32643)
  1864. #define IDC_SIZEWE          MAKEINTRESOURCE(32644)
  1865. #define IDC_SIZENS          MAKEINTRESOURCE(32645)
  1866. #define IDC_SIZEALL         MAKEINTRESOURCE(32646)
  1867. #define IDC_NO              MAKEINTRESOURCE(32648) /*not in win3.1 */
  1868. #if (_WIN32_WINDOWS >= 0x040A)
  1869. #define IDC_HAND            MAKEINTRESOURCE(32649)
  1870. #endif // (_WIN32_WINDOWS >= 0x040A)
  1871. #define IDC_APPSTARTING     MAKEINTRESOURCE(32650) /*not in win3.1 */
  1872. #if(WINVER >= 0x0400)
  1873. #define IDC_HELP            MAKEINTRESOURCE(32651)
  1874. #endif /* WINVER >= 0x0400 */
  1875. WINUSERAPI
  1876. BOOL
  1877. WINAPI
  1878. SetSystemCursor(
  1879.     HCURSOR hcur,
  1880.     DWORD   id);
  1881. typedef struct _ICONINFO {
  1882.     BOOL    fIcon;
  1883.     DWORD   xHotspot;
  1884.     DWORD   yHotspot;
  1885.     HBITMAP hbmMask;
  1886.     HBITMAP hbmColor;
  1887. } ICONINFO;
  1888. typedef ICONINFO *PICONINFO;
  1889. WINUSERAPI
  1890. HICON
  1891. WINAPI
  1892. LoadIconA(
  1893.     HINSTANCE hInstance,
  1894.     LPCSTR lpIconName);
  1895. WINUSERAPI
  1896. HICON
  1897. WINAPI
  1898. LoadIconW(
  1899.     HINSTANCE hInstance,
  1900.     LPCWSTR lpIconName);
  1901. #ifdef UNICODE
  1902. #define LoadIcon  LoadIconW
  1903. #else
  1904. #define LoadIcon  LoadIconA
  1905. #endif // !UNICODE
  1906. WINUSERAPI
  1907. HICON
  1908. WINAPI
  1909. CreateIcon(
  1910.     HINSTANCE hInstance,
  1911.     int nWidth,
  1912.     int nHeight,
  1913.     BYTE cPlanes,
  1914.     BYTE cBitsPixel,
  1915.     CONST BYTE *lpbANDbits,
  1916.     CONST BYTE *lpbXORbits);
  1917. WINUSERAPI
  1918. BOOL
  1919. WINAPI
  1920. DestroyIcon(
  1921.     HICON hIcon);
  1922. WINUSERAPI
  1923. int
  1924. WINAPI
  1925. LookupIconIdFromDirectory(
  1926.     PBYTE presbits,
  1927.     BOOL fIcon);
  1928. #if(WINVER >= 0x0400)
  1929. WINUSERAPI
  1930. int
  1931. WINAPI
  1932. LookupIconIdFromDirectoryEx(
  1933.     PBYTE presbits,
  1934.     BOOL  fIcon,
  1935.     int   cxDesired,
  1936.     int   cyDesired,
  1937.     UINT  Flags);
  1938. #endif /* WINVER >= 0x0400 */
  1939. WINUSERAPI
  1940. HICON
  1941. WINAPI
  1942. CreateIconFromResource(
  1943.     PBYTE presbits,
  1944.     DWORD dwResSize,
  1945.     BOOL fIcon,
  1946.     DWORD dwVer);
  1947. #if(WINVER >= 0x0400)
  1948. WINUSERAPI
  1949. HICON
  1950. WINAPI
  1951. CreateIconFromResourceEx(
  1952.     PBYTE presbits,
  1953.     DWORD dwResSize,
  1954.     BOOL  fIcon,
  1955.     DWORD dwVer,
  1956.     int   cxDesired,
  1957.     int   cyDesired,
  1958.     UINT  Flags);
  1959. /* Icon/Cursor header */
  1960. typedef struct tagCURSORSHAPE
  1961. {
  1962.     int     xHotSpot;
  1963.     int     yHotSpot;
  1964.     int     cx;
  1965.     int     cy;
  1966.     int     cbWidth;
  1967.     BYTE    Planes;
  1968.     BYTE    BitsPixel;
  1969. } CURSORSHAPE, FAR *LPCURSORSHAPE;
  1970. #endif /* WINVER >= 0x0400 */
  1971. #define IMAGE_BITMAP        0
  1972. #define IMAGE_ICON          1
  1973. #define IMAGE_CURSOR        2
  1974. #if(WINVER >= 0x0400)
  1975. #define IMAGE_ENHMETAFILE   3
  1976. #define LR_DEFAULTCOLOR     0x0000
  1977. #define LR_MONOCHROME       0x0001
  1978. #define LR_COLOR            0x0002
  1979. #define LR_COPYRETURNORG    0x0004
  1980. #define LR_COPYDELETEORG    0x0008
  1981. #define LR_LOADFROMFILE     0x0010
  1982. #define LR_LOADTRANSPARENT  0x0020
  1983. #define LR_DEFAULTSIZE      0x0040
  1984. #define LR_VGACOLOR         0x0080
  1985. #define LR_LOADMAP3DCOLORS  0x1000
  1986. #define LR_CREATEDIBSECTION 0x2000
  1987. #define LR_COPYFROMRESOURCE 0x4000      
  1988. #define LR_SHARED           0x8000
  1989. WINUSERAPI
  1990. HANDLE
  1991. WINAPI
  1992. LoadImageA(
  1993.     HINSTANCE,
  1994.     LPCSTR,
  1995.     UINT,
  1996.     int,
  1997.     int,
  1998.     UINT);
  1999. WINUSERAPI
  2000. HANDLE
  2001. WINAPI
  2002. LoadImageW(
  2003.     HINSTANCE,
  2004.     LPCWSTR,
  2005.     UINT,
  2006.     int,
  2007.     int,
  2008.     UINT);
  2009. #ifdef UNICODE
  2010. #define LoadImage  LoadImageW
  2011. #else
  2012. #define LoadImage  LoadImageA
  2013. #endif // !UNICODE
  2014. WINUSERAPI
  2015. HANDLE
  2016. WINAPI
  2017. CopyImage(
  2018.     HANDLE,
  2019.     UINT,
  2020.     int,
  2021.     int,
  2022.     UINT);
  2023. #define DI_MASK         0x0001
  2024. #define DI_IMAGE        0x0002
  2025. #define DI_NORMAL       0x0003
  2026. #define DI_COMPAT       0x0004
  2027. #define DI_DEFAULTSIZE  0x0008
  2028. WINUSERAPI BOOL WINAPI DrawIconEx(HDC hdc, int xLeft, int yTop,
  2029.       HICON hIcon, int cxWidth, int cyWidth,
  2030.       UINT istepIfAniCur, HBRUSH hbrFlickerFreeDraw, UINT diFlags);
  2031. #endif /* WINVER >= 0x0400 */
  2032. WINUSERAPI
  2033. HICON
  2034. WINAPI
  2035. CreateIconIndirect(
  2036.     PICONINFO piconinfo);
  2037. WINUSERAPI
  2038. HICON
  2039. WINAPI
  2040. CopyIcon(
  2041.     HICON hIcon);
  2042. WINUSERAPI
  2043. BOOL
  2044. WINAPI
  2045. GetIconInfo(
  2046.     HICON hIcon,
  2047.     PICONINFO piconinfo);
  2048. #if(WINVER >= 0x0400)
  2049. #define RES_ICON    1
  2050. #define RES_CURSOR  2
  2051. #endif /* WINVER >= 0x0400 */
  2052. #ifdef OEMRESOURCE
  2053. // begin_r_winuser
  2054. /*
  2055.  * OEM Resource Ordinal Numbers
  2056.  */
  2057. #define OBM_CLOSE           32754
  2058. #define OBM_UPARROW         32753
  2059. #define OBM_DNARROW         32752
  2060. #define OBM_RGARROW         32751
  2061. #define OBM_LFARROW         32750
  2062. #define OBM_REDUCE          32749
  2063. #define OBM_ZOOM            32748
  2064. #define OBM_RESTORE         32747
  2065. #define OBM_REDUCED         32746
  2066. #define OBM_ZOOMD           32745
  2067. #define OBM_RESTORED        32744
  2068. #define OBM_UPARROWD        32743
  2069. #define OBM_DNARROWD        32742
  2070. #define OBM_RGARROWD        32741
  2071. #define OBM_LFARROWD        32740
  2072. #define OBM_MNARROW         32739
  2073. #define OBM_COMBO           32738
  2074. #define OBM_UPARROWI        32737
  2075. #define OBM_DNARROWI        32736
  2076. #define OBM_RGARROWI        32735
  2077. #define OBM_LFARROWI        32734
  2078. #define OBM_OLD_CLOSE       32767
  2079. #define OBM_SIZE            32766
  2080. #define OBM_OLD_UPARROW     32765
  2081. #define OBM_OLD_DNARROW     32764
  2082. #define OBM_OLD_RGARROW     32763
  2083. #define OBM_OLD_LFARROW     32762
  2084. #define OBM_BTSIZE          32761
  2085. #define OBM_CHECK           32760
  2086. #define OBM_CHECKBOXES      32759
  2087. #define OBM_BTNCORNERS      32758
  2088. #define OBM_OLD_REDUCE      32757
  2089. #define OBM_OLD_ZOOM        32756
  2090. #define OBM_OLD_RESTORE     32755
  2091. #if (_WIN32_WINDOWS >= 0x040A)
  2092. #define OBM_RDRVERT         32559
  2093. #define OBM_RDRHORZ         32660
  2094. #define OBM_RDR2DIM         32661
  2095. #endif // (_WIN32_WINDOWS >= 0x040A)
  2096. #define OCR_NORMAL          32512
  2097. #define OCR_IBEAM           32513
  2098. #define OCR_WAIT            32514
  2099. #define OCR_CROSS           32515
  2100. #define OCR_UP              32516
  2101. #define OCR_SIZE            32640   /* OBSOLETE: use OCR_SIZEALL */
  2102. #define OCR_ICON            32641   /* OBSOLETE: use OCR_NORMAL */
  2103. #define OCR_SIZENWSE        32642
  2104. #define OCR_SIZENESW        32643
  2105. #define OCR_SIZEWE          32644
  2106. #define OCR_SIZENS          32645
  2107. #define OCR_SIZEALL         32646
  2108. #define OCR_ICOCUR          32647   /* OBSOLETE: use OIC_WINLOGO */
  2109. #define OCR_NO              32648
  2110. #if (_WIN32_WINDOWS >= 0x040A)
  2111. #define OCR_HAND            32649
  2112. #endif // (_WIN32_WINDOWS >= 0x040A)
  2113. #if(WINVER >= 0x0400)
  2114. #define OCR_APPSTARTING     32650
  2115. #endif /* WINVER >= 0x0400 */
  2116. #if (_WIN32_WINDOWS >= 0x040A)
  2117. #define OCR_RDRVERT         32652
  2118. #define OCR_RDRHORZ         32653
  2119. #define OCR_RDR2DIM         32654
  2120. #define OCR_RDRNORTH        32655
  2121. #define OCR_RDRSOUTH        32656
  2122. #define OCR_RDRWEST         32657
  2123. #define OCR_RDREAST         32658
  2124. #define OCR_RDRNORTHWEST    32659
  2125. #define OCR_RDRNORTHEAST    32660
  2126. #define OCR_RDRSOUTHWEST    32661
  2127. #define OCR_RDRSOUTHEAST    32662
  2128. #endif // (_WIN32_WINDOWS >= 0x040A)
  2129. #define OIC_SAMPLE          32512
  2130. #define OIC_HAND            32513
  2131. #define OIC_QUES            32514
  2132. #define OIC_BANG            32515
  2133. #define OIC_NOTE            32516
  2134. #if(WINVER >= 0x0400)
  2135. #define OIC_WINLOGO         32517
  2136. #define OIC_WARNING         OIC_BANG
  2137. #define OIC_ERROR           OIC_HAND
  2138. #define OIC_INFORMATION     OIC_NOTE
  2139. #endif /* WINVER >= 0x0400 */
  2140. // end_r_winuser
  2141. #endif /* OEMRESOURCE */
  2142. #define ORD_LANGDRIVER    1     /* The ordinal number for the entry point of
  2143. ** language drivers.
  2144. */
  2145. #ifndef NOICONS
  2146. // begin_r_winuser
  2147. /*
  2148.  * Standard Icon IDs
  2149.  */
  2150. #ifdef RC_INVOKED
  2151. #define IDI_APPLICATION     32512
  2152. #define IDI_HAND            32513
  2153. #define IDI_QUESTION        32514
  2154. #define IDI_EXCLAMATION     32515
  2155. #define IDI_ASTERISK        32516
  2156. #if(WINVER >= 0x0400)
  2157. #define IDI_WINLOGO         32517
  2158. #endif /* WINVER >= 0x0400 */
  2159. #else
  2160. #define IDI_APPLICATION     MAKEINTRESOURCE(32512)
  2161. #define IDI_HAND            MAKEINTRESOURCE(32513)
  2162. #define IDI_QUESTION        MAKEINTRESOURCE(32514)
  2163. #define IDI_EXCLAMATION     MAKEINTRESOURCE(32515)
  2164. #define IDI_ASTERISK        MAKEINTRESOURCE(32516)
  2165. #if(WINVER >= 0x0400)
  2166. #define IDI_WINLOGO         MAKEINTRESOURCE(32517)
  2167. #endif /* WINVER >= 0x0400 */
  2168. #endif /* RC_INVOKED */
  2169. #if(WINVER >= 0x0400)
  2170. #define IDI_WARNING     IDI_EXCLAMATION
  2171. #define IDI_ERROR       IDI_HAND
  2172. #define IDI_INFORMATION IDI_ASTERISK
  2173. #endif /* WINVER >= 0x0400 */
  2174. // end_r_winuser
  2175. #endif /* !NOICONS */
  2176. WINUSERAPI
  2177. int
  2178. WINAPI
  2179. LoadStringA(
  2180.     HINSTANCE hInstance,
  2181.     UINT uID,
  2182.     LPSTR lpBuffer,
  2183.     int nBufferMax);
  2184. WINUSERAPI
  2185. int
  2186. WINAPI
  2187. LoadStringW(
  2188.     HINSTANCE hInstance,
  2189.     UINT uID,
  2190.     LPWSTR lpBuffer,
  2191.     int nBufferMax);
  2192. #ifdef UNICODE
  2193. #define LoadString  LoadStringW
  2194. #else
  2195. #define LoadString  LoadStringA
  2196. #endif // !UNICODE
  2197. // begin_r_winuser
  2198. /*
  2199.  * Dialog Box Command IDs
  2200.  */
  2201. #define IDOK                1
  2202. #define IDCANCEL            2
  2203. #define IDABORT             3
  2204. #define IDRETRY             4
  2205. #define IDIGNORE            5
  2206. #define IDYES               6
  2207. #define IDNO                7
  2208. #if(WINVER >= 0x0400)
  2209. #define IDCLOSE         8
  2210. #define IDHELP          9
  2211. #endif /* WINVER >= 0x0400 */
  2212. #define IDTRYAGAIN      10
  2213. #define IDCONTINUE      11
  2214. // end_r_winuser
  2215. #ifndef NOCTLMGR
  2216. /*
  2217.  * Control Manager Structures and Definitions
  2218.  */
  2219. #ifndef NOWINSTYLES
  2220. // begin_r_winuser
  2221. /*
  2222.  * Edit Control Styles
  2223.  */
  2224. #define ES_LEFT             0x0000L
  2225. #define ES_CENTER           0x0001L
  2226. #define ES_RIGHT            0x0002L
  2227. #define ES_MULTILINE        0x0004L
  2228. #define ES_UPPERCASE        0x0008L
  2229. #define ES_LOWERCASE        0x0010L
  2230. #define ES_PASSWORD         0x0020L
  2231. #define ES_AUTOVSCROLL      0x0040L
  2232. #define ES_AUTOHSCROLL      0x0080L
  2233. #define ES_NOHIDESEL        0x0100L
  2234. #define ES_OEMCONVERT       0x0400L
  2235. #define ES_READONLY         0x0800L
  2236. #define ES_WANTRETURN       0x1000L
  2237. #if(WINVER >= 0x0400)
  2238. #define ES_NUMBER           0x2000L
  2239. #endif /* WINVER >= 0x0400 */
  2240. // end_r_winuser
  2241. #endif /* !NOWINSTYLES */
  2242. /*
  2243.  * Edit Control Notification Codes
  2244.  */
  2245. #define EN_SETFOCUS         0x0100
  2246. #define EN_KILLFOCUS        0x0200
  2247. #define EN_CHANGE           0x0300
  2248. #define EN_UPDATE           0x0400
  2249. #define EN_ERRSPACE         0x0500
  2250. #define EN_MAXTEXT          0x0501
  2251. #define EN_HSCROLL          0x0601
  2252. #define EN_VSCROLL          0x0602
  2253. #if(WINVER >= 0x0400)
  2254. /* Edit control EM_SETMARGIN parameters */
  2255. #define EC_LEFTMARGIN       0x0001
  2256. #define EC_RIGHTMARGIN      0x0002
  2257. #define EC_USEFONTINFO      0xffff
  2258. #endif /* WINVER >= 0x0400 */
  2259. #if (_WIN32_WINDOWS >= 0x040A)
  2260. /* wParam of EM_GET/SETIMESTATUS  */
  2261. #define EMSIS_COMPOSITIONSTRING        0x0001
  2262. /* lParam for EMSIS_COMPOSITIONSTRING  */
  2263. #define EIMES_GETCOMPSTRATONCE         0x0001
  2264. #define EIMES_CANCELCOMPSTRINFOCUS     0x0002
  2265. #define EIMES_COMPLETECOMPSTRKILLFOCUS 0x0004
  2266. #endif /* _WIN32_WINDOWS >= 0x040A */
  2267. #ifndef NOWINMESSAGES
  2268. // begin_r_winuser
  2269. /*
  2270.  * Edit Control Messages
  2271.  */
  2272. #define EM_GETSEL               0x00B0
  2273. #define EM_SETSEL               0x00B1
  2274. #define EM_GETRECT              0x00B2
  2275. #define EM_SETRECT              0x00B3
  2276. #define EM_SETRECTNP            0x00B4
  2277. #define EM_SCROLL               0x00B5
  2278. #define EM_LINESCROLL           0x00B6
  2279. #define EM_SCROLLCARET          0x00B7
  2280. #define EM_GETMODIFY            0x00B8
  2281. #define EM_SETMODIFY            0x00B9
  2282. #define EM_GETLINECOUNT         0x00BA
  2283. #define EM_LINEINDEX            0x00BB
  2284. #define EM_SETHANDLE            0x00BC
  2285. #define EM_GETHANDLE            0x00BD
  2286. #define EM_GETTHUMB             0x00BE
  2287. #define EM_LINELENGTH           0x00C1
  2288. #define EM_REPLACESEL           0x00C2
  2289. #define EM_GETLINE              0x00C4
  2290. #define EM_LIMITTEXT            0x00C5
  2291. #define EM_CANUNDO              0x00C6
  2292. #define EM_UNDO                 0x00C7
  2293. #define EM_FMTLINES             0x00C8
  2294. #define EM_LINEFROMCHAR         0x00C9
  2295. #define EM_SETTABSTOPS          0x00CB
  2296. #define EM_SETPASSWORDCHAR      0x00CC
  2297. #define EM_EMPTYUNDOBUFFER      0x00CD
  2298. #define EM_GETFIRSTVISIBLELINE  0x00CE
  2299. #define EM_SETREADONLY          0x00CF
  2300. #define EM_SETWORDBREAKPROC     0x00D0
  2301. #define EM_GETWORDBREAKPROC     0x00D1
  2302. #define EM_GETPASSWORDCHAR      0x00D2
  2303. #if(WINVER >= 0x0400)
  2304. #define EM_SETMARGINS           0x00D3
  2305. #define EM_GETMARGINS           0x00D4
  2306. #define EM_SETLIMITTEXT         EM_LIMITTEXT   /* ;win40 Name change */
  2307. #define EM_GETLIMITTEXT         0x00D5
  2308. #define EM_POSFROMCHAR          0x00D6
  2309. #define EM_CHARFROMPOS          0x00D7
  2310. #endif /* WINVER >= 0x0400 */
  2311. #if (_WIN32_WINDOWS >= 0x040A)
  2312. #define EM_SETIMESTATUS         0x00D8
  2313. #define EM_GETIMESTATUS         0x00D9
  2314. #endif
  2315. // end_r_winuser
  2316. #endif /* !NOWINMESSAGES */
  2317. /*
  2318.  * EDITWORDBREAKPROC code values
  2319.  */
  2320. #define WB_LEFT            0
  2321. #define WB_RIGHT           1
  2322. #define WB_ISDELIMITER     2
  2323. // begin_r_winuser
  2324. /*
  2325.  * Button Control Styles
  2326.  */
  2327. #define BS_PUSHBUTTON       0x00000000L
  2328. #define BS_DEFPUSHBUTTON    0x00000001L
  2329. #define BS_CHECKBOX         0x00000002L
  2330. #define BS_AUTOCHECKBOX     0x00000003L
  2331. #define BS_RADIOBUTTON      0x00000004L
  2332. #define BS_3STATE           0x00000005L
  2333. #define BS_AUTO3STATE       0x00000006L
  2334. #define BS_GROUPBOX         0x00000007L
  2335. #define BS_USERBUTTON       0x00000008L
  2336. #define BS_AUTORADIOBUTTON  0x00000009L
  2337. #define BS_OWNERDRAW        0x0000000BL
  2338. #define BS_LEFTTEXT         0x00000020L
  2339. #if(WINVER >= 0x0400)
  2340. #define BS_TEXT             0x00000000L
  2341. #define BS_ICON             0x00000040L
  2342. #define BS_BITMAP           0x00000080L
  2343. #define BS_LEFT             0x00000100L
  2344. #define BS_RIGHT            0x00000200L
  2345. #define BS_CENTER           0x00000300L
  2346. #define BS_TOP              0x00000400L
  2347. #define BS_BOTTOM           0x00000800L
  2348. #define BS_VCENTER          0x00000C00L
  2349. #define BS_PUSHLIKE         0x00001000L
  2350. #define BS_MULTILINE        0x00002000L
  2351. #define BS_NOTIFY           0x00004000L
  2352. #define BS_FLAT             0x00008000L
  2353. #define BS_RIGHTBUTTON      BS_LEFTTEXT
  2354. #endif /* WINVER >= 0x0400 */
  2355. /*
  2356.  * User Button Notification Codes
  2357.  */
  2358. #define BN_CLICKED          0
  2359. #define BN_PAINT            1
  2360. #define BN_HILITE           2
  2361. #define BN_UNHILITE         3
  2362. #define BN_DISABLE          4
  2363. #define BN_DOUBLECLICKED    5
  2364. #if(WINVER >= 0x0400)
  2365. #define BN_PUSHED           BN_HILITE
  2366. #define BN_UNPUSHED         BN_UNHILITE
  2367. #define BN_DBLCLK           BN_DOUBLECLICKED
  2368. #define BN_SETFOCUS         6
  2369. #define BN_KILLFOCUS        7
  2370. #endif /* WINVER >= 0x0400 */
  2371. /*
  2372.  * Button Control Messages
  2373.  */
  2374. #define BM_GETCHECK        0x00F0
  2375. #define BM_SETCHECK        0x00F1
  2376. #define BM_GETSTATE        0x00F2
  2377. #define BM_SETSTATE        0x00F3
  2378. #define BM_SETSTYLE        0x00F4
  2379. #if(WINVER >= 0x0400)
  2380. #define BM_CLICK           0x00F5
  2381. #define BM_GETIMAGE        0x00F6
  2382. #define BM_SETIMAGE        0x00F7
  2383. #define BST_UNCHECKED      0x0000
  2384. #define BST_CHECKED        0x0001
  2385. #define BST_INDETERMINATE  0x0002
  2386. #define BST_PUSHED         0x0004
  2387. #define BST_FOCUS          0x0008
  2388. #endif /* WINVER >= 0x0400 */
  2389. /*
  2390.  * Static Control Constants
  2391.  */
  2392. #define SS_LEFT             0x00000000L
  2393. #define SS_CENTER           0x00000001L
  2394. #define SS_RIGHT            0x00000002L
  2395. #define SS_ICON             0x00000003L
  2396. #define SS_BLACKRECT        0x00000004L
  2397. #define SS_GRAYRECT         0x00000005L
  2398. #define SS_WHITERECT        0x00000006L
  2399. #define SS_BLACKFRAME       0x00000007L
  2400. #define SS_GRAYFRAME        0x00000008L
  2401. #define SS_WHITEFRAME       0x00000009L
  2402. #define SS_USERITEM         0x0000000AL
  2403. #define SS_SIMPLE           0x0000000BL
  2404. #define SS_LEFTNOWORDWRAP   0x0000000CL
  2405. #if(WINVER >= 0x0400)
  2406. #define SS_OWNERDRAW        0x0000000DL
  2407. #define SS_BITMAP           0x0000000EL
  2408. #define SS_ENHMETAFILE      0x0000000FL
  2409. #define SS_ETCHEDHORZ       0x00000010L
  2410. #define SS_ETCHEDVERT       0x00000011L
  2411. #define SS_ETCHEDFRAME      0x00000012L
  2412. #define SS_TYPEMASK         0x0000001FL
  2413. #endif /* WINVER >= 0x0400 */
  2414. #define SS_NOPREFIX         0x00000080L /* Don't do "&" character translation */
  2415. #if(WINVER >= 0x0400)
  2416. #define SS_NOTIFY           0x00000100L
  2417. #define SS_CENTERIMAGE      0x00000200L
  2418. #define SS_RIGHTJUST        0x00000400L
  2419. #define SS_REALSIZEIMAGE    0x00000800L
  2420. #define SS_SUNKEN           0x00001000L
  2421. #define SS_ENDELLIPSIS      0x00004000L
  2422. #define SS_PATHELLIPSIS     0x00008000L
  2423. #define SS_WORDELLIPSIS     0x0000C000L
  2424. #define SS_ELLIPSISMASK     0x0000C000L
  2425. #endif /* WINVER >= 0x0400 */
  2426. // end_r_winuser
  2427. #ifndef NOWINMESSAGES
  2428. /*
  2429.  * Static Control Mesages
  2430.  */
  2431. #define STM_SETICON         0x0170
  2432. #define STM_GETICON         0x0171
  2433. #if(WINVER >= 0x0400)
  2434. #define STM_SETIMAGE        0x0172
  2435. #define STM_GETIMAGE        0x0173
  2436. #define STN_CLICKED         0
  2437. #define STN_DBLCLK          1
  2438. #define STN_ENABLE          2
  2439. #define STN_DISABLE         3
  2440. #endif /* WINVER >= 0x0400 */
  2441. #define STM_MSGMAX          0x0174
  2442. #endif /* !NOWINMESSAGES */
  2443. /*
  2444.  * Dialog window class
  2445.  */
  2446. #define WC_DIALOG       (MAKEINTATOM(0x8002))
  2447. /*
  2448.  * Get/SetWindowWord/Long offsets for use with WC_DIALOG windows
  2449.  */
  2450. #define DWL_MSGRESULT   0
  2451. #define DWL_DLGPROC     4
  2452. #define DWL_USER        8
  2453. /*
  2454.  * Dialog Manager Routines
  2455.  */
  2456. #ifndef NOMSG
  2457. WINUSERAPI
  2458. BOOL
  2459. WINAPI
  2460. IsDialogMessageA(
  2461.     HWND hDlg,
  2462.     LPMSG lpMsg);
  2463. WINUSERAPI
  2464. BOOL
  2465. WINAPI
  2466. IsDialogMessageW(
  2467.     HWND hDlg,
  2468.     LPMSG lpMsg);
  2469. #ifdef UNICODE
  2470. #define IsDialogMessage  IsDialogMessageW
  2471. #else
  2472. #define IsDialogMessage  IsDialogMessageA
  2473. #endif // !UNICODE
  2474. #endif /* !NOMSG */
  2475. WINUSERAPI
  2476. BOOL
  2477. WINAPI
  2478. MapDialogRect(
  2479.     HWND hDlg,
  2480.     LPRECT lpRect);
  2481. WINUSERAPI
  2482. int
  2483. WINAPI
  2484. DlgDirListA(
  2485.     HWND hDlg,
  2486.     LPSTR lpPathSpec,
  2487.     int nIDListBox,
  2488.     int nIDStaticPath,
  2489.     UINT uFileType);
  2490. WINUSERAPI
  2491. int
  2492. WINAPI
  2493. DlgDirListW(
  2494.     HWND hDlg,
  2495.     LPWSTR lpPathSpec,
  2496.     int nIDListBox,
  2497.     int nIDStaticPath,
  2498.     UINT uFileType);
  2499. #ifdef UNICODE
  2500. #define DlgDirList  DlgDirListW
  2501. #else
  2502. #define DlgDirList  DlgDirListA
  2503. #endif // !UNICODE
  2504. /*
  2505.  * DlgDirList, DlgDirListComboBox flags values
  2506.  */
  2507. #define DDL_READWRITE       0x0000
  2508. #define DDL_READONLY        0x0001
  2509. #define DDL_HIDDEN          0x0002
  2510. #define DDL_SYSTEM          0x0004
  2511. #define DDL_DIRECTORY       0x0010
  2512. #define DDL_ARCHIVE         0x0020
  2513. #define DDL_POSTMSGS        0x2000
  2514. #define DDL_DRIVES          0x4000
  2515. #define DDL_EXCLUSIVE       0x8000
  2516. WINUSERAPI
  2517. BOOL
  2518. WINAPI
  2519. DlgDirSelectExA(
  2520.     HWND hDlg,
  2521.     LPSTR lpString,
  2522.     int nCount,
  2523.     int nIDListBox);
  2524. WINUSERAPI
  2525. BOOL
  2526. WINAPI
  2527. DlgDirSelectExW(
  2528.     HWND hDlg,
  2529.     LPWSTR lpString,
  2530.     int nCount,
  2531.     int nIDListBox);
  2532. #ifdef UNICODE
  2533. #define DlgDirSelectEx  DlgDirSelectExW
  2534. #else
  2535. #define DlgDirSelectEx  DlgDirSelectExA
  2536. #endif // !UNICODE
  2537. WINUSERAPI
  2538. int
  2539. WINAPI
  2540. DlgDirListComboBoxA(
  2541.     HWND hDlg,
  2542.     LPSTR lpPathSpec,
  2543.     int nIDComboBox,
  2544.     int nIDStaticPath,
  2545.     UINT uFiletype);
  2546. WINUSERAPI
  2547. int
  2548. WINAPI
  2549. DlgDirListComboBoxW(
  2550.     HWND hDlg,
  2551.     LPWSTR lpPathSpec,
  2552.     int nIDComboBox,
  2553.     int nIDStaticPath,
  2554.     UINT uFiletype);
  2555. #ifdef UNICODE
  2556. #define DlgDirListComboBox  DlgDirListComboBoxW
  2557. #else
  2558. #define DlgDirListComboBox  DlgDirListComboBoxA
  2559. #endif // !UNICODE
  2560. WINUSERAPI
  2561. BOOL
  2562. WINAPI
  2563. DlgDirSelectComboBoxExA(
  2564.     HWND hDlg,
  2565.     LPSTR lpString,
  2566.     int nCount,
  2567.     int nIDComboBox);
  2568. WINUSERAPI
  2569. BOOL
  2570. WINAPI
  2571. DlgDirSelectComboBoxExW(
  2572.     HWND hDlg,
  2573.     LPWSTR lpString,
  2574.     int nCount,
  2575.     int nIDComboBox);
  2576. #ifdef UNICODE
  2577. #define DlgDirSelectComboBoxEx  DlgDirSelectComboBoxExW
  2578. #else
  2579. #define DlgDirSelectComboBoxEx  DlgDirSelectComboBoxExA
  2580. #endif // !UNICODE
  2581. // begin_r_winuser
  2582. /*
  2583.  * Dialog Styles
  2584.  */
  2585. #define DS_ABSALIGN         0x01L
  2586. #define DS_SYSMODAL         0x02L
  2587. #define DS_LOCALEDIT        0x20L   /* Edit items get Local storage. */
  2588. #define DS_SETFONT          0x40L   /* User specified font for Dlg controls */
  2589. #define DS_MODALFRAME       0x80L   /* Can be combined with WS_CAPTION  */
  2590. #define DS_NOIDLEMSG        0x100L  /* WM_ENTERIDLE message will not be sent */
  2591. #define DS_SETFOREGROUND    0x200L  /* not in win3.1 */
  2592. #if(WINVER >= 0x0400)
  2593. #define DS_3DLOOK           0x0004L
  2594. #define DS_FIXEDSYS         0x0008L
  2595. #define DS_NOFAILCREATE     0x0010L
  2596. #define DS_CONTROL          0x0400L
  2597. #define DS_CENTER           0x0800L
  2598. #define DS_CENTERMOUSE      0x1000L
  2599. #define DS_CONTEXTHELP      0x2000L
  2600. #endif /* WINVER >= 0x0400 */
  2601. // end_r_winuser
  2602. #define DM_GETDEFID         (WM_USER+0)
  2603. #define DM_SETDEFID         (WM_USER+1)
  2604. #if(WINVER >= 0x0400)
  2605. #define DM_REPOSITION       (WM_USER+2)
  2606. #define PSM_PAGEINFO        (WM_USER+100)
  2607. #define PSM_SHEETINFO       (WM_USER+101)
  2608. #define PSI_SETACTIVE       0x0001L
  2609. #define PSI_KILLACTIVE      0x0002L
  2610. #define PSI_APPLY           0x0003L
  2611. #define PSI_RESET           0x0004L
  2612. #define PSI_HASHELP         0x0005L
  2613. #define PSI_HELP            0x0006L
  2614. #define PSI_CHANGED         0x0001L
  2615. #define PSI_GUISTART        0x0002L
  2616. #define PSI_REBOOT          0x0003L
  2617. #define PSI_GETSIBLINGS     0x0004L
  2618. #endif /* WINVER >= 0x0400 */
  2619. /*
  2620.  * Returned in HIWORD() of DM_GETDEFID result if msg is supported
  2621.  */
  2622. #define DC_HASDEFID         0x534B
  2623. /*
  2624.  * Dialog Codes
  2625.  */
  2626. #define DLGC_WANTARROWS     0x0001      /* Control wants arrow keys         */
  2627. #define DLGC_WANTTAB        0x0002      /* Control wants tab keys           */
  2628. #define DLGC_WANTALLKEYS    0x0004      /* Control wants all keys           */
  2629. #define DLGC_WANTMESSAGE    0x0004      /* Pass message to control          */
  2630. #define DLGC_HASSETSEL      0x0008      /* Understands EM_SETSEL message    */
  2631. #define DLGC_DEFPUSHBUTTON  0x0010      /* Default pushbutton               */
  2632. #define DLGC_UNDEFPUSHBUTTON 0x0020     /* Non-default pushbutton           */
  2633. #define DLGC_RADIOBUTTON    0x0040      /* Radio button                     */
  2634. #define DLGC_WANTCHARS      0x0080      /* Want WM_CHAR messages            */
  2635. #define DLGC_STATIC         0x0100      /* Static item: don't include       */
  2636. #define DLGC_BUTTON         0x2000      /* Button item: can be checked      */
  2637. #define LB_CTLCODE          0L
  2638. /*
  2639.  * Listbox Return Values
  2640.  */
  2641. #define LB_OKAY             0
  2642. #define LB_ERR              (-1)
  2643. #define LB_ERRSPACE         (-2)
  2644. /*
  2645. **  The idStaticPath parameter to DlgDirList can have the following values
  2646. **  ORed if the list box should show other details of the files along with
  2647. **  the name of the files;
  2648. */
  2649.   /* all other details also will be returned */
  2650. /*
  2651.  * Listbox Notification Codes
  2652.  */
  2653. #define LBN_ERRSPACE        (-2)
  2654. #define LBN_SELCHANGE       1
  2655. #define LBN_DBLCLK          2
  2656. #define LBN_SELCANCEL       3
  2657. #define LBN_SETFOCUS        4
  2658. #define LBN_KILLFOCUS       5
  2659. #ifndef NOWINMESSAGES
  2660. /*
  2661.  * Listbox messages
  2662.  */
  2663. #define LB_ADDSTRING            0x0180
  2664. #define LB_INSERTSTRING         0x0181
  2665. #define LB_DELETESTRING         0x0182
  2666. #define LB_SELITEMRANGEEX       0x0183
  2667. #define LB_RESETCONTENT         0x0184
  2668. #define LB_SETSEL               0x0185
  2669. #define LB_SETCURSEL            0x0186
  2670. #define LB_GETSEL               0x0187
  2671. #define LB_GETCURSEL            0x0188
  2672. #define LB_GETTEXT              0x0189
  2673. #define LB_GETTEXTLEN           0x018A
  2674. #define LB_GETCOUNT             0x018B
  2675. #define LB_SELECTSTRING         0x018C
  2676. #define LB_DIR                  0x018D
  2677. #define LB_GETTOPINDEX          0x018E
  2678. #define LB_FINDSTRING           0x018F
  2679. #define LB_GETSELCOUNT          0x0190
  2680. #define LB_GETSELITEMS          0x0191
  2681. #define LB_SETTABSTOPS          0x0192
  2682. #define LB_GETHORIZONTALEXTENT  0x0193
  2683. #define LB_SETHORIZONTALEXTENT  0x0194
  2684. #define LB_SETCOLUMNWIDTH       0x0195
  2685. #define LB_ADDFILE              0x0196
  2686. #define LB_SETTOPINDEX          0x0197
  2687. #define LB_GETITEMRECT          0x0198
  2688. #define LB_GETITEMDATA          0x0199
  2689. #define LB_SETITEMDATA          0x019A
  2690. #define LB_SELITEMRANGE         0x019B
  2691. #define LB_SETANCHORINDEX       0x019C
  2692. #define LB_GETANCHORINDEX       0x019D
  2693. #define LB_SETCARETINDEX        0x019E
  2694. #define LB_GETCARETINDEX        0x019F
  2695. #define LB_SETITEMHEIGHT        0x01A0
  2696. #define LB_GETITEMHEIGHT        0x01A1
  2697. #define LB_FINDSTRINGEXACT      0x01A2
  2698. #define LB_SETLOCALE            0x01A5
  2699. #define LB_GETLOCALE            0x01A6
  2700. #define LB_SETCOUNT             0x01A7
  2701. #if(WINVER >= 0x0400)
  2702. #define LB_INITSTORAGE          0x01A8
  2703. #define LB_ITEMFROMPOINT        0x01A9
  2704. #endif /* WINVER >= 0x0400 */
  2705. #if(WINVER >= 0x0400)
  2706. #define LB_MSGMAX               0x01B0
  2707. #else
  2708. #define LB_MSGMAX               0x01A8
  2709. #endif
  2710. #endif /* !NOWINMESSAGES */
  2711. #ifndef NOWINSTYLES
  2712. // begin_r_winuser
  2713. /*
  2714.  * Listbox Styles
  2715.  */
  2716. #define LBS_NOTIFY            0x0001L
  2717. #define LBS_SORT              0x0002L
  2718. #define LBS_NOREDRAW          0x0004L
  2719. #define LBS_MULTIPLESEL       0x0008L
  2720. #define LBS_OWNERDRAWFIXED    0x0010L
  2721. #define LBS_OWNERDRAWVARIABLE 0x0020L
  2722. #define LBS_HASSTRINGS        0x0040L
  2723. #define LBS_USETABSTOPS       0x0080L
  2724. #define LBS_NOINTEGRALHEIGHT  0x0100L
  2725. #define LBS_MULTICOLUMN       0x0200L
  2726. #define LBS_WANTKEYBOARDINPUT 0x0400L
  2727. #define LBS_EXTENDEDSEL       0x0800L
  2728. #define LBS_DISABLENOSCROLL   0x1000L
  2729. #define LBS_NODATA            0x2000L
  2730. #if(WINVER >= 0x0400)
  2731. #define LBS_NOSEL             0x4000L
  2732. #endif /* WINVER >= 0x0400 */
  2733. #define LBS_STANDARD          (LBS_NOTIFY | LBS_SORT | WS_VSCROLL | WS_BORDER)
  2734. // end_r_winuser
  2735. #endif /* !NOWINSTYLES */
  2736. /*
  2737.  * Combo Box return Values
  2738.  */
  2739. #define CB_OKAY             0
  2740. #define CB_ERR              (-1)
  2741. #define CB_ERRSPACE         (-2)
  2742. /*
  2743.  * Combo Box Notification Codes
  2744.  */
  2745. #define CBN_ERRSPACE        (-1)
  2746. #define CBN_SELCHANGE       1
  2747. #define CBN_DBLCLK          2
  2748. #define CBN_SETFOCUS        3
  2749. #define CBN_KILLFOCUS       4
  2750. #define CBN_EDITCHANGE      5
  2751. #define CBN_EDITUPDATE      6
  2752. #define CBN_DROPDOWN        7
  2753. #define CBN_CLOSEUP         8
  2754. #define CBN_SELENDOK        9
  2755. #define CBN_SELENDCANCEL    10
  2756. #ifndef NOWINSTYLES
  2757. // begin_r_winuser
  2758. /*
  2759.  * Combo Box styles
  2760.  */
  2761. #define CBS_SIMPLE            0x0001L
  2762. #define CBS_DROPDOWN          0x0002L
  2763. #define CBS_DROPDOWNLIST      0x0003L
  2764. #define CBS_OWNERDRAWFIXED    0x0010L
  2765. #define CBS_OWNERDRAWVARIABLE 0x0020L
  2766. #define CBS_AUTOHSCROLL       0x0040L
  2767. #define CBS_OEMCONVERT        0x0080L
  2768. #define CBS_SORT              0x0100L
  2769. #define CBS_HASSTRINGS        0x0200L
  2770. #define CBS_NOINTEGRALHEIGHT  0x0400L
  2771. #define CBS_DISABLENOSCROLL   0x0800L
  2772. #if(WINVER >= 0x0400)
  2773. #define CBS_UPPERCASE           0x2000L
  2774. #define CBS_LOWERCASE           0x4000L
  2775. #endif /* WINVER >= 0x0400 */
  2776. // end_r_winuser
  2777. #endif  /* !NOWINSTYLES */
  2778. /*
  2779.  * Combo Box messages
  2780.  */
  2781. #ifndef NOWINMESSAGES
  2782. #define CB_GETEDITSEL               0x0140
  2783. #define CB_LIMITTEXT                0x0141
  2784. #define CB_SETEDITSEL               0x0142
  2785. #define CB_ADDSTRING                0x0143
  2786. #define CB_DELETESTRING             0x0144
  2787. #define CB_DIR                      0x0145
  2788. #define CB_GETCOUNT                 0x0146
  2789. #define CB_GETCURSEL                0x0147
  2790. #define CB_GETLBTEXT                0x0148
  2791. #define CB_GETLBTEXTLEN             0x0149
  2792. #define CB_INSERTSTRING             0x014A
  2793. #define CB_RESETCONTENT             0x014B
  2794. #define CB_FINDSTRING               0x014C
  2795. #define CB_SELECTSTRING             0x014D
  2796. #define CB_SETCURSEL                0x014E
  2797. #define CB_SHOWDROPDOWN             0x014F
  2798. #define CB_GETITEMDATA              0x0150
  2799. #define CB_SETITEMDATA              0x0151
  2800. #define CB_GETDROPPEDCONTROLRECT    0x0152
  2801. #define CB_SETITEMHEIGHT            0x0153
  2802. #define CB_GETITEMHEIGHT            0x0154
  2803. #define CB_SETEXTENDEDUI            0x0155
  2804. #define CB_GETEXTENDEDUI            0x0156
  2805. #define CB_GETDROPPEDSTATE          0x0157
  2806. #define CB_FINDSTRINGEXACT          0x0158
  2807. #define CB_SETLOCALE                0x0159
  2808. #define CB_GETLOCALE                0x015A
  2809. #if(WINVER >= 0x0400)
  2810. #define CB_GETTOPINDEX              0x015b
  2811. #define CB_SETTOPINDEX              0x015c
  2812. #define CB_GETHORIZONTALEXTENT      0x015d
  2813. #define CB_SETHORIZONTALEXTENT      0x015e
  2814. #define CB_GETDROPPEDWIDTH          0x015f
  2815. #define CB_SETDROPPEDWIDTH          0x0160
  2816. #define CB_INITSTORAGE              0x0161
  2817. #endif /* WINVER >= 0x0400 */
  2818. #if(WINVER >= 0x0400)
  2819. #define CB_MSGMAX                   0x0162
  2820. #else
  2821. #define CB_MSGMAX                   0x015B
  2822. #endif
  2823. #endif  /* !NOWINMESSAGES */
  2824. #ifndef NOWINSTYLES
  2825. // begin_r_winuser
  2826. /*
  2827.  * Scroll Bar Styles
  2828.  */
  2829. #define SBS_HORZ                    0x0000L
  2830. #define SBS_VERT                    0x0001L
  2831. #define SBS_TOPALIGN                0x0002L
  2832. #define SBS_LEFTALIGN               0x0002L
  2833. #define SBS_BOTTOMALIGN             0x0004L
  2834. #define SBS_RIGHTALIGN              0x0004L
  2835. #define SBS_SIZEBOXTOPLEFTALIGN     0x0002L
  2836. #define SBS_SIZEBOXBOTTOMRIGHTALIGN 0x0004L
  2837. #define SBS_SIZEBOX                 0x0008L
  2838. #if(WINVER >= 0x0400)
  2839. #define SBS_SIZEGRIP                0x0010L
  2840. #endif /* WINVER >= 0x0400 */
  2841. // end_r_winuser
  2842. #endif /* !NOWINSTYLES */
  2843. /*
  2844.  * Scroll bar messages
  2845.  */
  2846. #ifndef NOWINMESSAGES
  2847. #define SBM_SETPOS                  0x00E0 /*not in win3.1 */
  2848. #define SBM_GETPOS                  0x00E1 /*not in win3.1 */
  2849. #define SBM_SETRANGE                0x00E2 /*not in win3.1 */
  2850. #define SBM_SETRANGEREDRAW          0x00E6 /*not in win3.1 */
  2851. #define SBM_GETRANGE                0x00E3 /*not in win3.1 */
  2852. #define SBM_ENABLE_ARROWS           0x00E4 /*not in win3.1 */
  2853. #if(WINVER >= 0x0400)
  2854. #define SBM_SETSCROLLINFO           0x00E9
  2855. #define SBM_GETSCROLLINFO           0x00EA
  2856. #define SIF_RANGE           0x0001
  2857. #define SIF_PAGE            0x0002
  2858. #define SIF_POS             0x0004
  2859. #define SIF_DISABLENOSCROLL 0x0008
  2860. #define SIF_TRACKPOS        0x0010
  2861. #define SIF_ALL             (SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS)
  2862. typedef struct tagSCROLLINFO
  2863. {
  2864.     UINT    cbSize;
  2865.     UINT    fMask;
  2866.     int     nMin;
  2867.     int     nMax;
  2868.     UINT    nPage;
  2869.     int     nPos;
  2870.     int     nTrackPos;
  2871. }   SCROLLINFO, FAR *LPSCROLLINFO;
  2872. typedef SCROLLINFO CONST FAR *LPCSCROLLINFO;
  2873. WINUSERAPI int     WINAPI SetScrollInfo(HWND, int, LPCSCROLLINFO, BOOL);
  2874. WINUSERAPI BOOL    WINAPI GetScrollInfo(HWND, int, LPSCROLLINFO);
  2875. #endif /* WINVER >= 0x0400 */
  2876. #endif /* !NOWINMESSAGES */
  2877. #endif /* !NOCTLMGR */
  2878. #ifndef NOMDI
  2879. /*
  2880.  * MDI client style bits
  2881.  */
  2882. #define MDIS_ALLCHILDSTYLES    0x0001
  2883. /*
  2884.  * wParam Flags for WM_MDITILE and WM_MDICASCADE messages.
  2885.  */
  2886. #define MDITILE_VERTICAL       0x0000 /*not in win3.1 */
  2887. #define MDITILE_HORIZONTAL     0x0001 /*not in win3.1 */
  2888. #define MDITILE_SKIPDISABLED   0x0002 /*not in win3.1 */
  2889. typedef struct tagMDICREATESTRUCTA {
  2890.     LPCSTR   szClass;
  2891.     LPCSTR   szTitle;
  2892.     HANDLE hOwner;
  2893.     int x;
  2894.     int y;
  2895.     int cx;
  2896.     int cy;
  2897.     DWORD style;
  2898.     LPARAM lParam;        /* app-defined stuff */
  2899. } MDICREATESTRUCTA, *LPMDICREATESTRUCTA;
  2900. typedef struct tagMDICREATESTRUCTW {
  2901.     LPCWSTR  szClass;
  2902.     LPCWSTR  szTitle;
  2903.     HANDLE hOwner;
  2904.     int x;
  2905.     int y;
  2906.     int cx;
  2907.     int cy;
  2908.     DWORD style;
  2909.     LPARAM lParam;        /* app-defined stuff */
  2910. } MDICREATESTRUCTW, *LPMDICREATESTRUCTW;
  2911. #ifdef UNICODE
  2912. typedef MDICREATESTRUCTW MDICREATESTRUCT;
  2913. typedef LPMDICREATESTRUCTW LPMDICREATESTRUCT;
  2914. #else
  2915. typedef MDICREATESTRUCTA MDICREATESTRUCT;
  2916. typedef LPMDICREATESTRUCTA LPMDICREATESTRUCT;
  2917. #endif // UNICODE
  2918. typedef struct tagCLIENTCREATESTRUCT {
  2919.     HANDLE hWindowMenu;
  2920.     UINT idFirstChild;
  2921. } CLIENTCREATESTRUCT, *LPCLIENTCREATESTRUCT;
  2922. WINUSERAPI
  2923. LRESULT
  2924. WINAPI
  2925. DefFrameProcA(
  2926.     HWND hWnd,
  2927.     HWND hWndMDIClient ,
  2928.     UINT uMsg,
  2929.     WPARAM wParam,
  2930.     LPARAM lParam);
  2931. WINUSERAPI
  2932. LRESULT
  2933. WINAPI
  2934. DefFrameProcW(
  2935.     HWND hWnd,
  2936.     HWND hWndMDIClient ,
  2937.     UINT uMsg,
  2938.     WPARAM wParam,
  2939.     LPARAM lParam);
  2940. #ifdef UNICODE
  2941. #define DefFrameProc  DefFrameProcW
  2942. #else
  2943. #define DefFrameProc  DefFrameProcA
  2944. #endif // !UNICODE
  2945. WINUSERAPI
  2946. LRESULT
  2947. WINAPI
  2948. DefMDIChildProcA(
  2949.     HWND hWnd,
  2950.     UINT uMsg,
  2951.     WPARAM wParam,
  2952.     LPARAM lParam);
  2953. WINUSERAPI
  2954. LRESULT
  2955. WINAPI
  2956. DefMDIChildProcW(
  2957.     HWND hWnd,
  2958.     UINT uMsg,
  2959.     WPARAM wParam,
  2960.     LPARAM lParam);
  2961. #ifdef UNICODE
  2962. #define DefMDIChildProc  DefMDIChildProcW
  2963. #else
  2964. #define DefMDIChildProc  DefMDIChildProcA
  2965. #endif // !UNICODE
  2966. #ifndef NOMSG
  2967. WINUSERAPI
  2968. BOOL
  2969. WINAPI
  2970. TranslateMDISysAccel(
  2971.     HWND hWndClient,
  2972.     LPMSG lpMsg);
  2973. #endif /* !NOMSG */
  2974. WINUSERAPI
  2975. UINT
  2976. WINAPI
  2977. ArrangeIconicWindows(
  2978.     HWND hWnd);
  2979. WINUSERAPI
  2980. HWND
  2981. WINAPI
  2982. CreateMDIWindowA(
  2983.     LPSTR lpClassName,
  2984.     LPSTR lpWindowName,
  2985.     DWORD dwStyle,
  2986.     int X,
  2987.     int Y,
  2988.     int nWidth,
  2989.     int nHeight,
  2990.     HWND hWndParent,
  2991.     HINSTANCE hInstance,
  2992.     LPARAM lParam
  2993.     );
  2994. WINUSERAPI
  2995. HWND
  2996. WINAPI
  2997. CreateMDIWindowW(
  2998.     LPWSTR lpClassName,
  2999.     LPWSTR lpWindowName,
  3000.     DWORD dwStyle,
  3001.     int X,
  3002.     int Y,
  3003.     int nWidth,
  3004.     int nHeight,
  3005.     HWND hWndParent,
  3006.     HINSTANCE hInstance,
  3007.     LPARAM lParam
  3008.     );
  3009. #ifdef UNICODE
  3010. #define CreateMDIWindow  CreateMDIWindowW
  3011. #else
  3012. #define CreateMDIWindow  CreateMDIWindowA
  3013. #endif // !UNICODE
  3014. #if(WINVER >= 0x0400)
  3015. WINUSERAPI WORD    WINAPI TileWindows(HWND hwndParent, UINT wHow, CONST RECT * lpRect, UINT cKids, const HWND FAR * lpKids);
  3016. WINUSERAPI WORD    WINAPI CascadeWindows(HWND hwndParent, UINT wHow, CONST RECT * lpRect, UINT cKids,  const HWND FAR * lpKids);
  3017. #endif /* WINVER >= 0x0400 */
  3018. #endif /* !NOMDI */
  3019. #endif /* !NOUSER */
  3020. /****** Help support ********************************************************/
  3021. #ifndef NOHELP
  3022. typedef DWORD HELPPOLY;
  3023. typedef struct tagMULTIKEYHELPA {
  3024.     DWORD  mkSize;
  3025.     CHAR   mkKeylist;
  3026.     CHAR   szKeyphrase[1];
  3027. } MULTIKEYHELPA, *PMULTIKEYHELPA, *LPMULTIKEYHELPA;
  3028. typedef struct tagMULTIKEYHELPW {
  3029.     DWORD  mkSize;
  3030.     WCHAR  mkKeylist;
  3031.     WCHAR  szKeyphrase[1];
  3032. } MULTIKEYHELPW, *PMULTIKEYHELPW, *LPMULTIKEYHELPW;
  3033. #ifdef UNICODE
  3034. typedef MULTIKEYHELPW MULTIKEYHELP;
  3035. typedef PMULTIKEYHELPW PMULTIKEYHELP;
  3036. typedef LPMULTIKEYHELPW LPMULTIKEYHELP;
  3037. #else
  3038. typedef MULTIKEYHELPA MULTIKEYHELP;
  3039. typedef PMULTIKEYHELPA PMULTIKEYHELP;
  3040. typedef LPMULTIKEYHELPA LPMULTIKEYHELP;
  3041. #endif // UNICODE
  3042. typedef struct tagHELPWININFOA {
  3043.     int  wStructSize;
  3044.     int  x;
  3045.     int  y;
  3046.     int  dx;
  3047.     int  dy;
  3048.     int  wMax;
  3049.     CHAR   rgchMember[2];
  3050. } HELPWININFOA, *PHELPWININFOA, *LPHELPWININFOA;
  3051. typedef struct tagHELPWININFOW {
  3052.     int  wStructSize;
  3053.     int  x;
  3054.     int  y;
  3055.     int  dx;
  3056.     int  dy;
  3057.     int  wMax;
  3058.     WCHAR  rgchMember[2];
  3059. } HELPWININFOW, *PHELPWININFOW, *LPHELPWININFOW;
  3060. #ifdef UNICODE
  3061. typedef HELPWININFOW HELPWININFO;
  3062. typedef PHELPWININFOW PHELPWININFO;
  3063. typedef LPHELPWININFOW LPHELPWININFO;
  3064. #else
  3065. typedef HELPWININFOA HELPWININFO;
  3066. typedef PHELPWININFOA PHELPWININFO;
  3067. typedef LPHELPWININFOA LPHELPWININFO;
  3068. #endif // UNICODE
  3069. // begin_r_winuser
  3070. /*
  3071.  * Commands to pass to WinHelp()
  3072.  */
  3073. #define HELP_CONTEXT      0x0001L  /* Display topic in ulTopic */
  3074. #define HELP_QUIT         0x0002L  /* Terminate help */
  3075. #define HELP_INDEX        0x0003L  /* Display index */
  3076. #define HELP_CONTENTS     0x0003L
  3077. #define HELP_HELPONHELP   0x0004L  /* Display help on using help */
  3078. #define HELP_SETINDEX     0x0005L  /* Set current Index for multi index help */
  3079. #define HELP_SETCONTENTS  0x0005L
  3080. #define HELP_CONTEXTPOPUP 0x0008L
  3081. #define HELP_FORCEFILE    0x0009L
  3082. #define HELP_KEY          0x0101L  /* Display topic for keyword in offabData */
  3083. #define HELP_COMMAND      0x0102L
  3084. #define HELP_PARTIALKEY   0x0105L
  3085. #define HELP_MULTIKEY     0x0201L
  3086. #define HELP_SETWINPOS    0x0203L
  3087. #if(WINVER >= 0x0400)
  3088. #define HELP_CONTEXTMENU  0x000a
  3089. #define HELP_FINDER       0x000b
  3090. #define HELP_WM_HELP      0x000c
  3091. #define HELP_SETPOPUP_POS 0x000d
  3092. #define HELP_TCARD              0x8000
  3093. #define HELP_TCARD_DATA         0x0010
  3094. #define HELP_TCARD_OTHER_CALLER 0x0011
  3095. // These are in winhelp.h in Win95.
  3096. #define IDH_NO_HELP                     28440
  3097. #define IDH_MISSING_CONTEXT             28441 // Control doesn't have matching help context
  3098. #define IDH_GENERIC_HELP_BUTTON         28442 // Property sheet help button
  3099. #define IDH_OK                          28443
  3100. #define IDH_CANCEL                      28444
  3101. #define IDH_HELP                        28445
  3102. #endif /* WINVER >= 0x0400 */
  3103. // end_r_winuser
  3104. WINUSERAPI
  3105. BOOL
  3106. WINAPI
  3107. WinHelpA(
  3108.     HWND hWndMain,
  3109.     LPCSTR lpszHelp,
  3110.     UINT uCommand,
  3111.     DWORD dwData
  3112.     );
  3113. WINUSERAPI
  3114. BOOL
  3115. WINAPI
  3116. WinHelpW(
  3117.     HWND hWndMain,
  3118.     LPCWSTR lpszHelp,
  3119.     UINT uCommand,
  3120.     DWORD dwData
  3121.     );
  3122. #ifdef UNICODE
  3123. #define WinHelp  WinHelpW
  3124. #else
  3125. #define WinHelp  WinHelpA
  3126. #endif // !UNICODE
  3127. #endif /* !NOHELP */
  3128. #if (_WIN32_WINDOWS >= 0x040A)
  3129. #define GR_GDIOBJECTS     0       /* Count of GDI objects */
  3130. #define GR_USEROBJECTS    1       /* Count of USER objects */
  3131. DWORD GetGuiResources(HANDLE hProcess, DWORD uiFlags);
  3132. #endif
  3133. #ifndef NOSYSPARAMSINFO
  3134. /*
  3135.  * Parameter for SystemParametersInfo()
  3136.  */
  3137. #define SPI_GETBEEP                 1
  3138. #define SPI_SETBEEP                 2
  3139. #define SPI_GETMOUSE                3
  3140. #define SPI_SETMOUSE                4
  3141. #define SPI_GETBORDER               5
  3142. #define SPI_SETBORDER               6
  3143. #define SPI_GETKEYBOARDSPEED       10
  3144. #define SPI_SETKEYBOARDSPEED       11
  3145. #define SPI_LANGDRIVER             12
  3146. #define SPI_ICONHORIZONTALSPACING  13
  3147. #define SPI_GETSCREENSAVETIMEOUT   14
  3148. #define SPI_SETSCREENSAVETIMEOUT   15
  3149. #define SPI_GETSCREENSAVEACTIVE    16
  3150. #define SPI_SETSCREENSAVEACTIVE    17
  3151. #define SPI_GETGRIDGRANULARITY     18
  3152. #define SPI_SETGRIDGRANULARITY     19
  3153. #define SPI_SETDESKWALLPAPER       20
  3154. #define SPI_SETDESKPATTERN         21
  3155. #define SPI_GETKEYBOARDDELAY       22
  3156. #define SPI_SETKEYBOARDDELAY       23
  3157. #define SPI_ICONVERTICALSPACING    24
  3158. #define SPI_GETICONTITLEWRAP       25
  3159. #define SPI_SETICONTITLEWRAP       26
  3160. #define SPI_GETMENUDROPALIGNMENT   27
  3161. #define SPI_SETMENUDROPALIGNMENT   28
  3162. #define SPI_SETDOUBLECLKWIDTH      29
  3163. #define SPI_SETDOUBLECLKHEIGHT     30
  3164. #define SPI_GETICONTITLELOGFONT    31
  3165. #define SPI_SETDOUBLECLICKTIME     32
  3166. #define SPI_SETMOUSEBUTTONSWAP     33
  3167. #define SPI_SETICONTITLELOGFONT    34
  3168. #define SPI_GETFASTTASKSWITCH      35
  3169. #define SPI_SETFASTTASKSWITCH      36
  3170. #if(WINVER >= 0x0400)
  3171. #define SPI_SETDRAGFULLWINDOWS     37
  3172. #define SPI_GETDRAGFULLWINDOWS     38
  3173. #define SPI_GETNONCLIENTMETRICS    41
  3174. #define SPI_SETNONCLIENTMETRICS    42
  3175. #define SPI_GETMINIMIZEDMETRICS    43
  3176. #define SPI_SETMINIMIZEDMETRICS    44
  3177. #define SPI_GETICONMETRICS         45
  3178. #define SPI_SETICONMETRICS         46
  3179. #define SPI_SETWORKAREA            47
  3180. #define SPI_GETWORKAREA            48
  3181. #define SPI_SETPENWINDOWS          49
  3182. #define SPI_GETHIGHCONTRAST        66
  3183. #define SPI_SETHIGHCONTRAST        67
  3184. #define SPI_GETKEYBOARDPREF        68
  3185. #define SPI_SETKEYBOARDPREF        69
  3186. #define SPI_GETSCREENREADER        70
  3187. #define SPI_SETSCREENREADER        71
  3188. #define SPI_GETANIMATION           72
  3189. #define SPI_SETANIMATION           73
  3190. #define SPI_GETFONTSMOOTHING       74
  3191. #define SPI_SETFONTSMOOTHING       75
  3192. #define SPI_SETDRAGWIDTH           76
  3193. #define SPI_SETDRAGHEIGHT          77
  3194. #define SPI_SETHANDHELD            78
  3195. #define SPI_GETLOWPOWERTIMEOUT     79
  3196. #define SPI_GETPOWEROFFTIMEOUT     80
  3197. #define SPI_SETLOWPOWERTIMEOUT     81
  3198. #define SPI_SETPOWEROFFTIMEOUT     82
  3199. #define SPI_GETLOWPOWERACTIVE      83
  3200. #define SPI_GETPOWEROFFACTIVE      84
  3201. #define SPI_SETLOWPOWERACTIVE      85
  3202. #define SPI_SETPOWEROFFACTIVE      86
  3203. #define SPI_SETCURSORS             87
  3204. #define SPI_SETICONS               88
  3205. #define SPI_GETDEFAULTINPUTLANG    89
  3206. #define SPI_SETDEFAULTINPUTLANG    90
  3207. #define SPI_SETLANGTOGGLE          91
  3208. #define SPI_GETWINDOWSEXTENSION    92
  3209. #define SPI_SETMOUSETRAILS         93
  3210. #define SPI_GETMOUSETRAILS         94
  3211. #define SPI_SETSCREENSAVERRUNNING  97
  3212. #define SPI_SCREENSAVERRUNNING     SPI_SETSCREENSAVERRUNNING
  3213. #endif /* WINVER >= 0x0400 */
  3214. #define SPI_GETFILTERKEYS          50
  3215. #define SPI_SETFILTERKEYS          51
  3216. #define SPI_GETTOGGLEKEYS          52
  3217. #define SPI_SETTOGGLEKEYS          53
  3218. #define SPI_GETMOUSEKEYS           54
  3219. #define SPI_SETMOUSEKEYS           55
  3220. #define SPI_GETSHOWSOUNDS          56
  3221. #define SPI_SETSHOWSOUNDS          57
  3222. #define SPI_GETSTICKYKEYS          58
  3223. #define SPI_SETSTICKYKEYS          59
  3224. #define SPI_GETACCESSTIMEOUT       60
  3225. #define SPI_SETACCESSTIMEOUT       61
  3226. #if(WINVER >= 0x0400)
  3227. #define SPI_GETSERIALKEYS          62
  3228. #define SPI_SETSERIALKEYS          63
  3229. #endif /* WINVER >= 0x0400 */
  3230. #define SPI_GETSOUNDSENTRY         64
  3231. #define SPI_SETSOUNDSENTRY         65
  3232. #define SPI_GETSNAPTODEFBUTTON     95
  3233. #define SPI_SETSNAPTODEFBUTTON     96
  3234. #if(_WIN32_WINDOWS >= 0x040a)
  3235. #define SPI_GETMOUSEHOVERWIDTH     98
  3236. #define SPI_SETMOUSEHOVERWIDTH     99
  3237. #define SPI_GETMOUSEHOVERHEIGHT   100
  3238. #define SPI_SETMOUSEHOVERHEIGHT   101
  3239. #define SPI_GETMOUSEHOVERTIME     102
  3240. #define SPI_SETMOUSEHOVERTIME     103
  3241. #define SPI_GETWHEELSCROLLLINES   104
  3242. #define SPI_SETWHEELSCROLLLINES   105
  3243. #define SPI_GETSHOWIMEUI          110
  3244. #define SPI_SETSHOWIMEUI          111
  3245. #endif /* _WIN32_WINDOWS >= 0x040a */
  3246. #if (_WIN32_WINDOWS >= 0x040A)
  3247. #define SPI_GETMOUSESPEED         112
  3248. #define SPI_SETMOUSESPEED         113
  3249. #define SPI_GETSCREENSAVERRUNNING 114
  3250. #endif // (_WIN32_WINDOWS >= 0x040A)
  3251. #if (_WIN32_WINDOWS >=0x0500)
  3252. #define SPI_GETDESKWALLPAPER      115
  3253. #endif // (_WIN32_WINDOWS >=0x0500)
  3254. #if (_WIN32_WINDOWS >= 0x045A)
  3255. #define SPI_GETCLEARTYPE         116
  3256. #define SPI_SETCLEARTYPE         117
  3257. #endif // (_WIN32_WINDOWS >= 0x045A)
  3258. #if (_WIN32_WINDOWS >= 0x040A)
  3259. #define SPI_GETACTIVEWINDOWTRACKING         0x1000
  3260. #define SPI_SETACTIVEWINDOWTRACKING         0x1001
  3261. #define SPI_GETMENUANIMATION                0x1002
  3262. #define SPI_SETMENUANIMATION                0x1003
  3263. #define SPI_GETCOMBOBOXANIMATION            0x1004
  3264. #define SPI_SETCOMBOBOXANIMATION            0x1005
  3265. #define SPI_GETLISTBOXSMOOTHSCROLLING       0x1006
  3266. #define SPI_SETLISTBOXSMOOTHSCROLLING       0x1007
  3267. #define SPI_GETGRADIENTCAPTIONS             0x1008
  3268. #define SPI_SETGRADIENTCAPTIONS             0x1009
  3269. #define SPI_GETMENUUNDERLINES               0x100A
  3270. #define SPI_SETMENUUNDERLINES               0x100B
  3271. #define SPI_GETACTIVEWNDTRKZORDER           0x100C
  3272. #define SPI_SETACTIVEWNDTRKZORDER           0x100D
  3273. #define SPI_GETHOTTRACKING                  0x100E
  3274. #define SPI_SETHOTTRACKING                  0x100F
  3275. // 0x1010-0x1B: used in Win2K
  3276. #define SPI_GETMOUSESONAR 0x101C
  3277. #define SPI_SETMOUSESONAR 0x101D
  3278. #define SPI_GETMOUSECLICKLOCK 0x101E
  3279. #define SPI_SETMOUSECLICKLOCK 0x101F
  3280. #define SPI_GETMOUSEVANISH 0x1020
  3281. #define SPI_SETMOUSEVANISH 0x1021
  3282. #define SPI_GETFOREGROUNDLOCKTIMEOUT        0x2000
  3283. #define SPI_SETFOREGROUNDLOCKTIMEOUT        0x2001
  3284. #define SPI_GETACTIVEWNDTRKTIMEOUT          0x2002
  3285. #define SPI_SETACTIVEWNDTRKTIMEOUT          0x2003
  3286. #define SPI_GETFOREGROUNDFLASHCOUNT         0x2004
  3287. #define SPI_SETFOREGROUNDFLASHCOUNT         0x2005
  3288. #endif // (_WIN32_WINDOWS >= 0x040A)
  3289. #if (_WIN32_WINDOWS >= 0x045A)
  3290. #define SPI_GETCARETWIDTH                   0x2006
  3291. #define SPI_SETCARETWIDTH                   0x2007
  3292. #define SPI_GETMOUSECLICKLOCKTIME 0x2008
  3293. #define SPI_SETMOUSECLICKLOCKTIME 0x2009
  3294. #endif // (_WIN32_WINDOWS >= 0x045A)
  3295. /*
  3296.  * SPI User Preferences.
  3297.  */
  3298. /*
  3299.  * Flags
  3300.  */
  3301. #define SPIF_UPDATEINIFILE    0x0001
  3302. #define SPIF_SENDWININICHANGE 0x0002
  3303. #define SPIF_SENDCHANGE       SPIF_SENDWININICHANGE
  3304. #define METRICS_USEDEFAULT -1
  3305. #ifdef _WINGDI_
  3306. #ifndef NOGDI
  3307. typedef struct tagNONCLIENTMETRICSA
  3308. {
  3309.     UINT    cbSize;
  3310.     int     iBorderWidth;
  3311.     int     iScrollWidth;
  3312.     int     iScrollHeight;
  3313.     int     iCaptionWidth;
  3314.     int     iCaptionHeight;
  3315.     LOGFONTA lfCaptionFont;
  3316.     int     iSmCaptionWidth;
  3317.     int     iSmCaptionHeight;
  3318.     LOGFONTA lfSmCaptionFont;
  3319.     int     iMenuWidth;
  3320.     int     iMenuHeight;
  3321.     LOGFONTA lfMenuFont;
  3322.     LOGFONTA lfStatusFont;
  3323.     LOGFONTA lfMessageFont;
  3324. }   NONCLIENTMETRICSA, *PNONCLIENTMETRICSA, FAR* LPNONCLIENTMETRICSA;
  3325. typedef struct tagNONCLIENTMETRICSW
  3326. {
  3327.     UINT    cbSize;
  3328.     int     iBorderWidth;
  3329.     int     iScrollWidth;
  3330.     int     iScrollHeight;
  3331.     int     iCaptionWidth;
  3332.     int     iCaptionHeight;
  3333.     LOGFONTW lfCaptionFont;
  3334.     int     iSmCaptionWidth;
  3335.     int     iSmCaptionHeight;
  3336.     LOGFONTW lfSmCaptionFont;
  3337.     int     iMenuWidth;
  3338.     int     iMenuHeight;
  3339.     LOGFONTW lfMenuFont;
  3340.     LOGFONTW lfStatusFont;
  3341.     LOGFONTW lfMessageFont;
  3342. }   NONCLIENTMETRICSW, *PNONCLIENTMETRICSW, FAR* LPNONCLIENTMETRICSW;
  3343. #ifdef UNICODE
  3344. typedef NONCLIENTMETRICSW NONCLIENTMETRICS;
  3345. typedef PNONCLIENTMETRICSW PNONCLIENTMETRICS;
  3346. typedef LPNONCLIENTMETRICSW LPNONCLIENTMETRICS;
  3347. #else
  3348. typedef NONCLIENTMETRICSA NONCLIENTMETRICS;
  3349. typedef PNONCLIENTMETRICSA PNONCLIENTMETRICS;
  3350. typedef LPNONCLIENTMETRICSA LPNONCLIENTMETRICS;
  3351. #endif // UNICODE
  3352. #endif /* NOGDI */
  3353. #endif /* _WINGDI_ */
  3354. #define ARW_BOTTOMLEFT              0x0000L
  3355. #define ARW_BOTTOMRIGHT             0x0001L
  3356. #define ARW_TOPLEFT                 0x0002L
  3357. #define ARW_TOPRIGHT                0x0003L
  3358. #define ARW_STARTMASK               0x0003L
  3359. #define ARW_STARTRIGHT              0x0001L
  3360. #define ARW_STARTTOP                0x0002L
  3361. #define ARW_LEFT                    0x0000L
  3362. #define ARW_RIGHT                   0x0000L
  3363. #define ARW_UP                      0x0004L
  3364. #define ARW_DOWN                    0x0004L
  3365. #define ARW_HIDE                    0x0008L
  3366. typedef struct tagMINIMIZEDMETRICS
  3367. {
  3368.     UINT    cbSize;
  3369.     int     iWidth;
  3370.     int     iHorzGap;
  3371.     int     iVertGap;
  3372.     int     iArrange;
  3373. }   MINIMIZEDMETRICS, *PMINIMIZEDMETRICS, *LPMINIMIZEDMETRICS;
  3374. #ifdef _WINGDI_
  3375. #ifndef NOGDI
  3376. typedef struct tagICONMETRICSA
  3377. {
  3378.     UINT    cbSize;
  3379.     int     iHorzSpacing;
  3380.     int     iVertSpacing;
  3381.     int     iTitleWrap;
  3382.     LOGFONTA lfFont;
  3383. }   ICONMETRICSA, *PICONMETRICSA, *LPICONMETRICSA;
  3384. typedef struct tagICONMETRICSW
  3385. {
  3386.     UINT    cbSize;
  3387.     int     iHorzSpacing;
  3388.     int     iVertSpacing;
  3389.     int     iTitleWrap;
  3390.     LOGFONTW lfFont;
  3391. }   ICONMETRICSW, *PICONMETRICSW, *LPICONMETRICSW;
  3392. #ifdef UNICODE
  3393. typedef ICONMETRICSW ICONMETRICS;
  3394. typedef PICONMETRICSW PICONMETRICS;
  3395. typedef LPICONMETRICSW LPICONMETRICS;
  3396. #else
  3397. typedef ICONMETRICSA ICONMETRICS;
  3398. typedef PICONMETRICSA PICONMETRICS;
  3399. typedef LPICONMETRICSA LPICONMETRICS;
  3400. #endif // UNICODE
  3401. #endif /* NOGDI */
  3402. #endif /* _WINGDI_ */
  3403. typedef struct tagANIMATIONINFO
  3404. {
  3405.     UINT    cbSize;
  3406.     int     iMinAnimate;
  3407. }   ANIMATIONINFO, *LPANIMATIONINFO;
  3408. typedef struct tagSERIALKEYSA
  3409. {
  3410.     UINT    cbSize;
  3411.     DWORD   dwFlags;
  3412.     LPSTR     lpszActivePort;
  3413.     LPSTR     lpszPort;
  3414.     UINT    iBaudRate;
  3415.     UINT    iPortState;
  3416.     UINT    iActive;
  3417. }   SERIALKEYSA, *LPSERIALKEYSA;
  3418. typedef struct tagSERIALKEYSW
  3419. {
  3420.     UINT    cbSize;
  3421.     DWORD   dwFlags;
  3422.     LPWSTR    lpszActivePort;
  3423.     LPWSTR    lpszPort;
  3424.     UINT    iBaudRate;
  3425.     UINT    iPortState;
  3426.     UINT    iActive;
  3427. }   SERIALKEYSW, *LPSERIALKEYSW;
  3428. #ifdef UNICODE
  3429. typedef SERIALKEYSW SERIALKEYS;
  3430. typedef LPSERIALKEYSW LPSERIALKEYS;
  3431. #else
  3432. typedef SERIALKEYSA SERIALKEYS;
  3433. typedef LPSERIALKEYSA LPSERIALKEYS;
  3434. #endif // UNICODE
  3435. /* flags for SERIALKEYS dwFlags field */
  3436. #define SERKF_SERIALKEYSON  0x00000001
  3437. #define SERKF_AVAILABLE     0x00000002
  3438. #define SERKF_INDICATOR     0x00000004
  3439. #if (_WIN32_WINNT >= 0x0500)
  3440. #define MAX_SCHEME_NAME_SIZE 128
  3441. #endif
  3442. typedef struct tagHIGHCONTRASTA
  3443. {
  3444.     UINT    cbSize;
  3445.     DWORD   dwFlags;
  3446.     LPSTR   lpszDefaultScheme;
  3447. }   HIGHCONTRASTA, *LPHIGHCONTRASTA;
  3448. typedef struct tagHIGHCONTRASTW
  3449. {
  3450.     UINT    cbSize;
  3451.     DWORD   dwFlags;
  3452.     LPWSTR  lpszDefaultScheme;
  3453. }   HIGHCONTRASTW, *LPHIGHCONTRASTW;
  3454. #ifdef UNICODE
  3455. typedef HIGHCONTRASTW HIGHCONTRAST;
  3456. typedef LPHIGHCONTRASTW LPHIGHCONTRAST;
  3457. #else
  3458. typedef HIGHCONTRASTA HIGHCONTRAST;
  3459. typedef LPHIGHCONTRASTA LPHIGHCONTRAST;
  3460. #endif // UNICODE
  3461. /* flags for HIGHCONTRAST dwFlags field */
  3462. #define HCF_HIGHCONTRASTON  0x00000001
  3463. #define HCF_AVAILABLE       0x00000002
  3464. #define HCF_HOTKEYACTIVE    0x00000004
  3465. #define HCF_CONFIRMHOTKEY   0x00000008
  3466. #define HCF_HOTKEYSOUND     0x00000010
  3467. #define HCF_INDICATOR       0x00000020
  3468. #define HCF_HOTKEYAVAILABLE 0x00000040
  3469. /* Flags for ChangeDisplaySettings */
  3470. #define CDS_UPDATEREGISTRY  0x00000001
  3471. #define CDS_TEST            0x00000002
  3472. #define CDS_FULLSCREEN      0x00000004
  3473. #define CDS_GLOBAL          0x00000008
  3474. #define CDS_SET_PRIMARY     0x00000010
  3475. #define CDS_VIDEOPARAMETERS 0x00000020
  3476. #define CDS_RESET           0x40000000
  3477. #define CDS_NORESET         0x10000000
  3478. /* Return values for ChangeDisplaySettings */
  3479. #define DISP_CHANGE_SUCCESSFUL       0
  3480. #define DISP_CHANGE_RESTART          1
  3481. #define DISP_CHANGE_FAILED          -1
  3482. #define DISP_CHANGE_BADMODE         -2
  3483. #define DISP_CHANGE_NOTUPDATED      -3
  3484. #define DISP_CHANGE_BADFLAGS        -4
  3485. #define DISP_CHANGE_BADPARAM        -5
  3486. #define DISP_CHANGE_BADESC          -6
  3487. #ifdef _WINGDI_
  3488. #ifndef NOGDI
  3489. WINUSERAPI
  3490. LONG
  3491. WINAPI
  3492. ChangeDisplaySettingsA(
  3493.     LPDEVMODEA  lpDevMode,
  3494.     DWORD       dwFlags);
  3495. WINUSERAPI
  3496. LONG
  3497. WINAPI
  3498. ChangeDisplaySettingsW(
  3499.     LPDEVMODEW  lpDevMode,
  3500.     DWORD       dwFlags);
  3501. #ifdef UNICODE
  3502. #define ChangeDisplaySettings  ChangeDisplaySettingsW
  3503. #else
  3504. #define ChangeDisplaySettings  ChangeDisplaySettingsA
  3505. #endif // !UNICODE
  3506. WINUSERAPI
  3507. LONG
  3508. WINAPI
  3509. ChangeDisplaySettingsExA(
  3510.     LPCSTR    lpszDeviceName,
  3511.     LPDEVMODEA  lpDevMode,
  3512.     HWND        hwnd,
  3513.     DWORD       dwflags,
  3514.     LPVOID      lParam);
  3515. WINUSERAPI
  3516. LONG
  3517. WINAPI
  3518. ChangeDisplaySettingsExW(
  3519.     LPCWSTR    lpszDeviceName,
  3520.     LPDEVMODEW  lpDevMode,
  3521.     HWND        hwnd,
  3522.     DWORD       dwflags,
  3523.     LPVOID      lParam);
  3524. #ifdef UNICODE
  3525. #define ChangeDisplaySettingsEx  ChangeDisplaySettingsExW
  3526. #else
  3527. #define ChangeDisplaySettingsEx  ChangeDisplaySettingsExA
  3528. #endif // !UNICODE
  3529. #define ENUM_CURRENT_SETTINGS       ((DWORD)-1)
  3530. #define ENUM_REGISTRY_SETTINGS      ((DWORD)-2)
  3531. WINUSERAPI
  3532. BOOL
  3533. WINAPI
  3534. EnumDisplaySettingsA(
  3535.     LPCSTR lpszDeviceName,
  3536.     DWORD iModeNum,
  3537.     LPDEVMODEA lpDevMode);
  3538. WINUSERAPI
  3539. BOOL
  3540. WINAPI
  3541. EnumDisplaySettingsW(
  3542.     LPCWSTR lpszDeviceName,
  3543.     DWORD iModeNum,
  3544.     LPDEVMODEW lpDevMode);
  3545. #ifdef UNICODE
  3546. #define EnumDisplaySettings  EnumDisplaySettingsW
  3547. #else
  3548. #define EnumDisplaySettings  EnumDisplaySettingsA
  3549. #endif // !UNICODE
  3550. #if (_WIN32_WINDOWS >= 0x040A)
  3551. WINUSERAPI
  3552. BOOL
  3553. WINAPI
  3554. EnumDisplaySettingsExA(
  3555.     LPCSTR lpszDeviceName,
  3556.     DWORD iModeNum,
  3557.     LPDEVMODEA lpDevMode,
  3558.     DWORD dwFlags);
  3559. WINUSERAPI
  3560. BOOL
  3561. WINAPI
  3562. EnumDisplaySettingsExW(
  3563.     LPCWSTR lpszDeviceName,
  3564.     DWORD iModeNum,
  3565.     LPDEVMODEW lpDevMode,
  3566.     DWORD dwFlags);
  3567. #ifdef UNICODE
  3568. #define EnumDisplaySettingsEx  EnumDisplaySettingsExW
  3569. #else
  3570. #define EnumDisplaySettingsEx  EnumDisplaySettingsExA
  3571. #endif // !UNICODE
  3572. /* Flags for EnumDisplaySettingsEx */
  3573. #define EDS_SHOW_DUPLICATES           0x00000001
  3574. #define EDS_SHOW_MONITOR_NOT_CAPABLE  0x00000002
  3575. // VIDEOPARAMETERS structure moved to tvout.h
  3576. typedef struct _DISPLAY_DEVICEA {
  3577.     DWORD  cb;
  3578.     BYTE   DeviceName[32];
  3579.     BYTE   DeviceString[128];
  3580.     DWORD  StateFlags;
  3581. } DISPLAY_DEVICEA, *PDISPLAY_DEVICEA, *LPDISPLAY_DEVICEA;
  3582. typedef struct _DISPLAY_DEVICEW {
  3583.     DWORD  cb;
  3584.     WCHAR  DeviceName[32];
  3585.     WCHAR  DeviceString[128];
  3586.     DWORD  StateFlags;
  3587. } DISPLAY_DEVICEW, *PDISPLAY_DEVICEW, *LPDISPLAY_DEVICEW;
  3588. #ifdef UNICODE
  3589. typedef DISPLAY_DEVICEW DISPLAY_DEVICE;
  3590. typedef PDISPLAY_DEVICEW PDISPLAY_DEVICE;
  3591. typedef LPDISPLAY_DEVICEW LPDISPLAY_DEVICE;
  3592. #else
  3593. typedef DISPLAY_DEVICEA DISPLAY_DEVICE;
  3594. typedef PDISPLAY_DEVICEA PDISPLAY_DEVICE;
  3595. typedef LPDISPLAY_DEVICEA LPDISPLAY_DEVICE;
  3596. #endif // UNICODE
  3597. #define DISPLAY_DEVICE_ATTACHED_TO_DESKTOP 0x00000001
  3598. #define DISPLAY_DEVICE_MULTI_DRIVER        0x00000002
  3599. #define DISPLAY_DEVICE_PRIMARY_DEVICE      0x00000004
  3600. #define DISPLAY_DEVICE_MIRRORING_DRIVER    0x00000008
  3601. #define DISPLAY_DEVICE_VGA                 0x00000010
  3602. WINUSERAPI
  3603. BOOL
  3604. WINAPI
  3605. EnumDisplayDevicesA(
  3606.     PVOID Unused,
  3607.     DWORD iDevNum,
  3608.     PDISPLAY_DEVICEA lpDisplayDevice,
  3609.     DWORD dwFlags);
  3610. WINUSERAPI
  3611. BOOL
  3612. WINAPI
  3613. EnumDisplayDevicesW(
  3614.     PVOID Unused,
  3615.     DWORD iDevNum,
  3616.     PDISPLAY_DEVICEW lpDisplayDevice,
  3617.     DWORD dwFlags);
  3618. #ifdef UNICODE
  3619. #define EnumDisplayDevices  EnumDisplayDevicesW
  3620. #else
  3621. #define EnumDisplayDevices  EnumDisplayDevicesA
  3622. #endif // !UNICODE
  3623. #endif // (_WIN32_WINDOWS >= 0x040A)
  3624. #endif /* NOGDI */
  3625. #endif /* _WINGDI_ */
  3626. WINUSERAPI
  3627. BOOL
  3628. WINAPI
  3629. SystemParametersInfoA(
  3630.     UINT uiAction,
  3631.     UINT uiParam,
  3632.     PVOID pvParam,
  3633.     UINT fWinIni);
  3634. WINUSERAPI
  3635. BOOL
  3636. WINAPI
  3637. SystemParametersInfoW(
  3638.     UINT uiAction,
  3639.     UINT uiParam,
  3640.     PVOID pvParam,
  3641.     UINT fWinIni);
  3642. #ifdef UNICODE
  3643. #define SystemParametersInfo  SystemParametersInfoW
  3644. #else
  3645. #define SystemParametersInfo  SystemParametersInfoA
  3646. #endif // !UNICODE
  3647. #endif  /* !NOSYSPARAMSINFO  */
  3648. /*
  3649.  * Accessibility support
  3650.  */
  3651. typedef struct tagFILTERKEYS
  3652. {
  3653.     UINT  cbSize;
  3654.     DWORD dwFlags;
  3655.     DWORD iWaitMSec;            // Acceptance Delay
  3656.     DWORD iDelayMSec;           // Delay Until Repeat
  3657.     DWORD iRepeatMSec;          // Repeat Rate
  3658.     DWORD iBounceMSec;          // Debounce Time
  3659. } FILTERKEYS, *LPFILTERKEYS;
  3660. /*
  3661.  * FILTERKEYS dwFlags field
  3662.  */
  3663. #define FKF_FILTERKEYSON    0x00000001
  3664. #define FKF_AVAILABLE       0x00000002
  3665. #define FKF_HOTKEYACTIVE    0x00000004
  3666. #define FKF_CONFIRMHOTKEY   0x00000008
  3667. #define FKF_HOTKEYSOUND     0x00000010
  3668. #define FKF_INDICATOR       0x00000020
  3669. #define FKF_CLICKON         0x00000040
  3670. typedef struct tagSTICKYKEYS
  3671. {
  3672.     UINT  cbSize;
  3673.     DWORD dwFlags;
  3674. } STICKYKEYS, *LPSTICKYKEYS;
  3675. /*
  3676.  * STICKYKEYS dwFlags field
  3677.  */
  3678. #define SKF_STICKYKEYSON    0x00000001
  3679. #define SKF_AVAILABLE       0x00000002
  3680. #define SKF_HOTKEYACTIVE    0x00000004
  3681. #define SKF_CONFIRMHOTKEY   0x00000008
  3682. #define SKF_HOTKEYSOUND     0x00000010
  3683. #define SKF_INDICATOR       0x00000020
  3684. #define SKF_AUDIBLEFEEDBACK 0x00000040
  3685. #define SKF_TRISTATE        0x00000080
  3686. #define SKF_TWOKEYSOFF      0x00000100
  3687. #define SKF_VALID           0x000001FF  // ; internal
  3688. typedef struct tagMOUSEKEYS
  3689. {
  3690.     UINT cbSize;
  3691.     DWORD dwFlags;
  3692.     DWORD iMaxSpeed;
  3693.     DWORD iTimeToMaxSpeed;
  3694.     DWORD iCtrlSpeed;
  3695.     DWORD dwReserved1;
  3696.     DWORD dwReserved2;
  3697. } MOUSEKEYS, *LPMOUSEKEYS;
  3698. /*
  3699.  * MOUSEKEYS dwFlags field
  3700.  */
  3701. #define MKF_MOUSEKEYSON     0x00000001
  3702. #define MKF_AVAILABLE       0x00000002
  3703. #define MKF_HOTKEYACTIVE    0x00000004
  3704. #define MKF_CONFIRMHOTKEY   0x00000008
  3705. #define MKF_HOTKEYSOUND     0x00000010
  3706. #define MKF_INDICATOR       0x00000020
  3707. #define MKF_MODIFIERS       0x00000040
  3708. #define MKF_REPLACENUMBERS  0x00000080
  3709. typedef struct tagACCESSTIMEOUT
  3710. {
  3711.     UINT  cbSize;
  3712.     DWORD dwFlags;
  3713.     DWORD iTimeOutMSec;
  3714. } ACCESSTIMEOUT, *LPACCESSTIMEOUT;
  3715. /*
  3716.  * ACCESSTIMEOUT dwFlags field
  3717.  */
  3718. #define ATF_TIMEOUTON       0x00000001
  3719. #define ATF_ONOFFFEEDBACK   0x00000002
  3720. /* values for SOUNDSENTRY iFSGrafEffect field */
  3721. #define SSGF_NONE       0
  3722. #define SSGF_DISPLAY    3
  3723. /* values for SOUNDSENTRY iFSTextEffect field */
  3724. #define SSTF_NONE       0
  3725. #define SSTF_CHARS      1
  3726. #define SSTF_BORDER     2
  3727. #define SSTF_DISPLAY    3
  3728. /* values for SOUNDSENTRY iWindowsEffect field */
  3729. #define SSWF_NONE     0
  3730. #define SSWF_TITLE    1
  3731. #define SSWF_WINDOW   2
  3732. #define SSWF_DISPLAY  3
  3733. #define SSWF_CUSTOM   4
  3734. typedef struct tagSOUNDSENTRYA
  3735. {
  3736.     UINT cbSize;
  3737.     DWORD dwFlags;
  3738.     DWORD iFSTextEffect;
  3739.     DWORD iFSTextEffectMSec;
  3740.     DWORD iFSTextEffectColorBits;
  3741.     DWORD iFSGrafEffect;
  3742.     DWORD iFSGrafEffectMSec;
  3743.     DWORD iFSGrafEffectColor;
  3744.     DWORD iWindowsEffect;
  3745.     DWORD iWindowsEffectMSec;
  3746.     LPSTR   lpszWindowsEffectDLL;
  3747.     DWORD iWindowsEffectOrdinal;
  3748. } SOUNDSENTRYA, *LPSOUNDSENTRYA;
  3749. typedef struct tagSOUNDSENTRYW
  3750. {
  3751.     UINT cbSize;
  3752.     DWORD dwFlags;
  3753.     DWORD iFSTextEffect;
  3754.     DWORD iFSTextEffectMSec;
  3755.     DWORD iFSTextEffectColorBits;
  3756.     DWORD iFSGrafEffect;
  3757.     DWORD iFSGrafEffectMSec;
  3758.     DWORD iFSGrafEffectColor;
  3759.     DWORD iWindowsEffect;
  3760.     DWORD iWindowsEffectMSec;
  3761.     LPWSTR  lpszWindowsEffectDLL;
  3762.     DWORD iWindowsEffectOrdinal;
  3763. } SOUNDSENTRYW, *LPSOUNDSENTRYW;
  3764. #ifdef UNICODE
  3765. typedef SOUNDSENTRYW SOUNDSENTRY;
  3766. typedef LPSOUNDSENTRYW LPSOUNDSENTRY;
  3767. #else
  3768. typedef SOUNDSENTRYA SOUNDSENTRY;
  3769. typedef LPSOUNDSENTRYA LPSOUNDSENTRY;
  3770. #endif // UNICODE
  3771. /*
  3772.  * SOUNDSENTRY dwFlags field
  3773.  */
  3774. #define SSF_SOUNDSENTRYON   0x00000001
  3775. #define SSF_AVAILABLE       0x00000002
  3776. #define SSF_INDICATOR       0x00000004
  3777. typedef struct tagTOGGLEKEYS
  3778. {
  3779.     UINT cbSize;
  3780.     DWORD dwFlags;
  3781. } TOGGLEKEYS, *LPTOGGLEKEYS;
  3782. /*
  3783.  * TOGGLEKEYS dwFlags field
  3784.  */
  3785. #define TKF_TOGGLEKEYSON    0x00000001
  3786. #define TKF_AVAILABLE       0x00000002
  3787. #define TKF_HOTKEYACTIVE    0x00000004
  3788. #define TKF_CONFIRMHOTKEY   0x00000008
  3789. #define TKF_HOTKEYSOUND     0x00000010
  3790. #define TKF_INDICATOR       0x00000020
  3791. /*
  3792.  * Set debug level
  3793.  */
  3794. WINUSERAPI
  3795. VOID
  3796. WINAPI
  3797. SetDebugErrorLevel(
  3798.     DWORD dwLevel
  3799.     );
  3800. /*
  3801.  * SetLastErrorEx() types.
  3802.  */
  3803. #define SLE_ERROR       0x00000001
  3804. #define SLE_MINORERROR  0x00000002
  3805. #define SLE_WARNING     0x00000003
  3806. WINUSERAPI
  3807. VOID
  3808. WINAPI
  3809. SetLastErrorEx(
  3810.     DWORD dwErrCode,
  3811.     DWORD dwType
  3812.     );
  3813. #if (_WIN32_WINDOWS >= 0x040A)
  3814. /*
  3815.  * Multimonitor API.
  3816.  */
  3817. typedef HANDLE  HMONITOR;
  3818. #define HMONITOR_DECLARED
  3819. #define MONITOR_DEFAULTTONULL       0x00000000
  3820. #define MONITOR_DEFAULTTOPRIMARY    0x00000001
  3821. #define MONITOR_DEFAULTTONEAREST    0x00000002
  3822. WINUSERAPI
  3823. HMONITOR
  3824. WINAPI
  3825. MonitorFromPoint(POINT pt, DWORD dwFlags);
  3826. WINUSERAPI
  3827. HMONITOR
  3828. WINAPI
  3829. MonitorFromRect(LPCRECT lprc, DWORD dwFlags);
  3830. WINUSERAPI
  3831. HMONITOR
  3832. WINAPI
  3833. MonitorFromWindow(HWND hwnd, DWORD dwFlags);
  3834. #define MONITORINFOF_PRIMARY        0x00000001
  3835. #ifndef CCHDEVICENAME
  3836. #define CCHDEVICENAME 32
  3837. #endif
  3838. typedef struct tagMONITORINFO
  3839. {
  3840.     DWORD   cbSize;
  3841.     RECT    rcMonitor;
  3842.     RECT    rcWork;
  3843.     DWORD   dwFlags;
  3844. } MONITORINFO, *LPMONITORINFO;
  3845. #ifdef __cplusplus
  3846. typedef struct tagMONITORINFOEXA : public tagMONITORINFO
  3847. {
  3848.     CHAR        szDevice[CCHDEVICENAME];
  3849. } MONITORINFOEXA, *LPMONITORINFOEXA;
  3850. typedef struct tagMONITORINFOEXW : public tagMONITORINFO
  3851. {
  3852.     WCHAR       szDevice[CCHDEVICENAME];
  3853. } MONITORINFOEXW, *LPMONITORINFOEXW;
  3854. #ifdef UNICODE
  3855. typedef MONITORINFOEXW MONITORINFOEX;
  3856. typedef LPMONITORINFOEXW LPMONITORINFOEX;
  3857. #else
  3858. typedef MONITORINFOEXA MONITORINFOEX;
  3859. typedef LPMONITORINFOEXA LPMONITORINFOEX;
  3860. #endif // UNICODE
  3861. #else // ndef __cplusplus
  3862. typedef struct tagMONITORINFOEXA
  3863. {
  3864.     MONITORINFO;
  3865.     CHAR        szDevice[CCHDEVICENAME];
  3866. } MONITORINFOEXA, *LPMONITORINFOEXA;
  3867. typedef struct tagMONITORINFOEXW
  3868. {
  3869.     MONITORINFO;
  3870.     WCHAR       szDevice[CCHDEVICENAME];
  3871. } MONITORINFOEXW, *LPMONITORINFOEXW;
  3872. #ifdef UNICODE
  3873. typedef MONITORINFOEXW MONITORINFOEX;
  3874. typedef LPMONITORINFOEXW LPMONITORINFOEX;
  3875. #else
  3876. typedef MONITORINFOEXA MONITORINFOEX;
  3877. typedef LPMONITORINFOEXA LPMONITORINFOEX;
  3878. #endif // UNICODE
  3879. #endif
  3880. WINUSERAPI BOOL WINAPI GetMonitorInfoA(HMONITOR hMonitor, LPMONITORINFO lpmi);
  3881. WINUSERAPI BOOL WINAPI GetMonitorInfoW(HMONITOR hMonitor, LPMONITORINFO lpmi);
  3882. #ifdef UNICODE
  3883. #define GetMonitorInfo  GetMonitorInfoW
  3884. #else
  3885. #define GetMonitorInfo  GetMonitorInfoA
  3886. #endif // !UNICODE
  3887. typedef BOOL (CALLBACK* MONITORENUMPROC)(HMONITOR, HDC, LPRECT, LPARAM);
  3888. WINUSERAPI
  3889. BOOL
  3890. WINAPI
  3891. EnumDisplayMonitors(
  3892.     HDC             hdc,
  3893.     LPCRECT         lprcClip,
  3894.     MONITORENUMPROC lpfnEnum,
  3895.     LPARAM          dwData);
  3896. #ifndef NOWINABLE
  3897. /*
  3898.  * WinEvents - Active Accessibility hooks
  3899.  */
  3900. WINUSERAPI VOID WINAPI
  3901. NotifyWinEvent(
  3902.     DWORD event,
  3903.     HWND  hwnd,
  3904.     LONG  idObject,
  3905.     LONG  idChild);
  3906. typedef DWORD   HWINEVENTHOOK;
  3907. typedef VOID (CALLBACK* WINEVENTPROC)(
  3908.     HWINEVENTHOOK hWinEventHook,
  3909.     DWORD         event,
  3910.     HWND          hwnd,
  3911.     LONG          idObject,
  3912.     LONG          idChild,
  3913.     DWORD         idEventThread,
  3914.     DWORD         dwmsEventTime);
  3915. /*
  3916.  * idObject values for WinEventProc and NotifyWinEvent
  3917.  */
  3918. /*
  3919.  * hwnd + idObject can be used with OLEACC.DLL's OleGetObjectFromWindow()
  3920.  * to get an interface pointer to the container.  indexChild is the item
  3921.  * within the container in question.  Setup a VARIANT with vt VT_I4 and
  3922.  * lVal the indexChild and pass that in to all methods.  Then you
  3923.  * are raring to go.
  3924.  */
  3925. /*
  3926.  * Common object IDs (cookies, only for sending WM_GETOBJECT to get at the
  3927.  * thing in question).  Positive IDs are reserved for apps (app specific),
  3928.  * negative IDs are system things and are global, 0 means "just little old
  3929.  * me".
  3930.  */
  3931. #define     CHILDID_SELF        0
  3932. #define     INDEXID_OBJECT      0
  3933. #define     INDEXID_CONTAINER   0
  3934. /*
  3935.  * Reserved IDs for system objects
  3936.  */
  3937. #define     OBJID_WINDOW        0x00000000
  3938. #define     OBJID_SYSMENU       0xFFFFFFFF
  3939. #define     OBJID_TITLEBAR      0xFFFFFFFE
  3940. #define     OBJID_MENU          0xFFFFFFFD
  3941. #define     OBJID_CLIENT        0xFFFFFFFC
  3942. #define     OBJID_VSCROLL       0xFFFFFFFB
  3943. #define     OBJID_HSCROLL       0xFFFFFFFA
  3944. #define     OBJID_SIZEGRIP      0xFFFFFFF9
  3945. #define     OBJID_CARET         0xFFFFFFF8
  3946. #define     OBJID_CURSOR        0xFFFFFFF7
  3947. #define     OBJID_ALERT         0xFFFFFFF6
  3948. #define     OBJID_SOUND         0xFFFFFFF5
  3949. /*
  3950.  * EVENT DEFINITION
  3951.  */
  3952. #define EVENT_MIN           0x00000001
  3953. #define EVENT_MAX           0x7FFFFFFF
  3954. /*
  3955.  *  EVENT_SYSTEM_SOUND
  3956.  *  Sent when a sound is played.  Currently nothing is generating this, we
  3957.  *  this event when a system sound (for menus, etc) is played.  Apps
  3958.  *  generate this, if accessible, when a private sound is played.  For
  3959.  *  example, if Mail plays a "New Mail" sound.
  3960.  *
  3961.  *  System Sounds:
  3962.  *  (Generated by PlaySoundEvent in USER itself)
  3963.  *      hwnd            is NULL
  3964.  *      idObject        is OBJID_SOUND
  3965.  *      idChild         is sound child ID if one
  3966.  *  App Sounds:
  3967.  *  (PlaySoundEvent won't generate notification; up to app)
  3968.  *      hwnd + idObject gets interface pointer to Sound object
  3969.  *      idChild identifies the sound in question
  3970.  *  are going to be cleaning up the SOUNDSENTRY feature in the control panel
  3971.  *  and will use this at that time.  Applications implementing WinEvents
  3972.  *  are perfectly welcome to use it.  Clients of IAccessible* will simply
  3973.  *  turn around and get back a non-visual object that describes the sound.
  3974.  */
  3975. #define EVENT_SYSTEM_SOUND              0x0001
  3976. /*
  3977.  * EVENT_SYSTEM_ALERT
  3978.  * System Alerts:
  3979.  * (Generated by MessageBox() calls for example)
  3980.  *      hwnd            is hwndMessageBox
  3981.  *      idObject        is OBJID_ALERT
  3982.  * App Alerts:
  3983.  * (Generated whenever)
  3984.  *      hwnd+idObject gets interface pointer to Alert
  3985.  */
  3986. #define EVENT_SYSTEM_ALERT              0x0002
  3987. /*
  3988.  * EVENT_SYSTEM_FOREGROUND
  3989.  * Sent when the foreground (active) window changes, even if it is changing
  3990.  * to another window in the same thread as the previous one.
  3991.  *      hwnd            is hwndNewForeground
  3992.  *      idObject        is OBJID_WINDOW
  3993.  *      idChild    is INDEXID_OBJECT
  3994.  */
  3995. #define EVENT_SYSTEM_FOREGROUND         0x0003
  3996. /*
  3997.  * Menu
  3998.  *      hwnd            is window (top level window or popup menu window)
  3999.  *      idObject        is ID of control (OBJID_MENU, OBJID_SYSMENU, OBJID_SELF for popup)
  4000.  *      idChild         is CHILDID_SELF
  4001.  *
  4002.  * EVENT_SYSTEM_MENUSTART
  4003.  * EVENT_SYSTEM_MENUEND
  4004.  * For MENUSTART, hwnd+idObject+idChild refers to the control with the menu bar,
  4005.  *  or the control bringing up the context menu.
  4006.  *
  4007.  * Sent when entering into and leaving from menu mode (system, app bar, and
  4008.  * track popups).
  4009.  */
  4010. #define EVENT_SYSTEM_MENUSTART          0x0004
  4011. #define EVENT_SYSTEM_MENUEND            0x0005
  4012. /*
  4013.  * EVENT_SYSTEM_MENUPOPUPSTART
  4014.  * EVENT_SYSTEM_MENUPOPUPEND
  4015.  * Sent when a menu popup comes up and just before it is taken down.  Note
  4016.  * that for a call to TrackPopupMenu(), a client will see EVENT_SYSTEM_MENUSTART
  4017.  * followed almost immediately by EVENT_SYSTEM_MENUPOPUPSTART for the popup
  4018.  * being shown.
  4019.  *
  4020.  * For MENUPOPUP, hwnd+idObject+idChild refers to the NEW popup coming up, not the
  4021.  * parent item which is hierarchical.  You can get the parent menu/popup by
  4022.  * asking for the accParent object.
  4023.  */
  4024. #define EVENT_SYSTEM_MENUPOPUPSTART     0x0006
  4025. #define EVENT_SYSTEM_MENUPOPUPEND       0x0007
  4026. /*
  4027.  * EVENT_SYSTEM_CAPTURESTART
  4028.  * EVENT_SYSTEM_CAPTUREEND
  4029.  * Sent when a window takes the capture and releases the capture.
  4030.  */
  4031. #define EVENT_SYSTEM_CAPTURESTART       0x0008
  4032. #define EVENT_SYSTEM_CAPTUREEND         0x0009
  4033. /*
  4034.  * Move Size
  4035.  * EVENT_SYSTEM_MOVESIZESTART
  4036.  * EVENT_SYSTEM_MOVESIZEEND
  4037.  * Sent when a window enters and leaves move-size dragging mode.
  4038.  */
  4039. #define EVENT_SYSTEM_MOVESIZESTART      0x000A
  4040. #define EVENT_SYSTEM_MOVESIZEEND        0x000B
  4041. /*
  4042.  * Context Help
  4043.  * EVENT_SYSTEM_CONTEXTHELPSTART
  4044.  * EVENT_SYSTEM_CONTEXTHELPEND
  4045.  * Sent when a window enters and leaves context sensitive help mode.
  4046.  */
  4047. #define EVENT_SYSTEM_CONTEXTHELPSTART   0x000C
  4048. #define EVENT_SYSTEM_CONTEXTHELPEND     0x000D
  4049. /*
  4050.  * Drag & Drop
  4051.  * EVENT_SYSTEM_DRAGDROPSTART
  4052.  * EVENT_SYSTEM_DRAGDROPEND
  4053.  * Send the START notification just before going into drag&drop loop.  Send
  4054.  * the END notification just after canceling out.
  4055.  * Note that it is up to apps and OLE to generate this, since the system
  4056.  * doesn't know.  Like EVENT_SYSTEM_SOUND, it will be a while before this
  4057.  * is prevalent.
  4058.  */
  4059. #define EVENT_SYSTEM_DRAGDROPSTART      0x000E
  4060. #define EVENT_SYSTEM_DRAGDROPEND        0x000F
  4061. /*
  4062.  * Dialog
  4063.  * Send the START notification right after the dialog is completely
  4064.  *  initialized and visible.  Send the END right before the dialog
  4065.  *  is hidden and goes away.
  4066.  * EVENT_SYSTEM_DIALOGSTART
  4067.  * EVENT_SYSTEM_DIALOGEND
  4068.  */
  4069. #define EVENT_SYSTEM_DIALOGSTART        0x0010
  4070. #define EVENT_SYSTEM_DIALOGEND          0x0011
  4071. /*
  4072.  * EVENT_SYSTEM_SCROLLING
  4073.  * EVENT_SYSTEM_SCROLLINGSTART
  4074.  * EVENT_SYSTEM_SCROLLINGEND
  4075.  * Sent when beginning and ending the tracking of a scrollbar in a window,
  4076.  * and also for scrollbar controls.
  4077.  */
  4078. #define EVENT_SYSTEM_SCROLLINGSTART     0x0012
  4079. #define EVENT_SYSTEM_SCROLLINGEND       0x0013
  4080. /*
  4081.  * Alt-Tab Window
  4082.  * Send the START notification right after the switch window is initialized
  4083.  * and visible.  Send the END right before it is hidden and goes away.
  4084.  * EVENT_SYSTEM_SWITCHSTART
  4085.  * EVENT_SYSTEM_SWITCHEND
  4086.  */
  4087. #define EVENT_SYSTEM_SWITCHSTART        0x0014
  4088. #define EVENT_SYSTEM_SWITCHEND          0x0015
  4089. /*
  4090.  * EVENT_SYSTEM_MINIMIZESTART
  4091.  * EVENT_SYSTEM_MINIMIZEEND
  4092.  * Sent when a window minimizes and just before it restores.
  4093.  */
  4094. #define EVENT_SYSTEM_MINIMIZESTART      0x0016
  4095. #define EVENT_SYSTEM_MINIMIZEEND        0x0017
  4096. /*
  4097.  * Object events
  4098.  *
  4099.  * The system AND apps generate these.  The system generates these for
  4100.  * real windows.  Apps generate these for objects within their window which
  4101.  * act like a separate control, e.g. an item in a list view.
  4102.  *
  4103.  * When the system generate them, dwParam2 is always WMOBJID_SELF.  When
  4104.  * apps generate them, apps put the has-meaning-to-the-app-only ID value
  4105.  * in dwParam2.
  4106.  * For all events, if you want detailed accessibility information, callers
  4107.  * should
  4108.  *      * Call AccessibleObjectFromWindow() with the hwnd, idObject parameters
  4109.  *          of the event, and IID_IAccessible as the REFIID, to get back an
  4110.  *          IAccessible* to talk to
  4111.  *      * Initialize and fill in a VARIANT as VT_I4 with lVal the idChild
  4112.  *          parameter of the event.
  4113.  *      * If idChild isn't zero, call get_accChild() in the container to see
  4114.  *          if the child is an object in its own right.  If so, you will get
  4115.  *          back an IDispatch* object for the child.  You should release the
  4116.  *          parent, and call QueryInterface() on the child object to get its
  4117.  *          IAccessible*.  Then you talk directly to the child.  Otherwise,
  4118.  *          if get_accChild() returns you nothing, you should continue to
  4119.  *          use the child VARIANT.  You will ask the container for the properties
  4120.  *          of the child identified by the VARIANT.  In other words, the
  4121.  *          child in this case is accessible but not a full-blown object.
  4122.  *          Like a button on a titlebar which is 'small' and has no children.
  4123.  */
  4124. /*
  4125.  * For all EVENT_OBJECT events,
  4126.  *      hwnd is the dude to Send the WM_GETOBJECT message to (unless NULL,
  4127.  *          see above for system things)
  4128.  *      idObject is the ID of the object that can resolve any queries a
  4129.  *          client might have.  It's a way to deal with windowless controls,
  4130.  *          controls that are just drawn on the screen in some larger parent
  4131.  *          window (like SDM), or standard frame elements of a window.
  4132.  *      idChild is the piece inside of the object that is affected.  This
  4133.  *          allows clients to access things that are too small to have full
  4134.  *          blown objects in their own right.  Like the thumb of a scrollbar.
  4135.  *          The hwnd/idObject pair gets you to the container, the dude you
  4136.  *          probably want to talk to most of the time anyway.  The idChild
  4137.  *          can then be passed into the acc properties to get the name/value
  4138.  *          of it as needed.
  4139.  *
  4140.  * Example #1:
  4141.  *      System propagating a listbox selection change
  4142.  *      EVENT_OBJECT_SELECTION
  4143.  *          hwnd == listbox hwnd
  4144.  *          idObject == OBJID_WINDOW
  4145.  *          idChild == new selected item, or CHILDID_SELF if
  4146.  *              nothing now selected within container.
  4147.  *      Word '97 propagating a listbox selection change
  4148.  *          hwnd == SDM window
  4149.  *          idObject == SDM ID to get at listbox 'control'
  4150.  *          idChild == new selected item, or CHILDID_SELF if
  4151.  *              nothing
  4152.  *
  4153.  * Example #2:
  4154.  *      System propagating a menu item selection on the menu bar
  4155.  *      EVENT_OBJECT_SELECTION
  4156.  *          hwnd == top level window
  4157.  *          idObject == OBJID_MENU
  4158.  *          idChild == ID of child menu bar item selected
  4159.  *
  4160.  * Example #3:
  4161.  *      System propagating a dropdown coming off of said menu bar item
  4162.  *      EVENT_OBJECT_CREATE
  4163.  *          hwnd == popup item
  4164.  *          idObject == OBJID_WINDOW
  4165.  *          idChild == CHILDID_SELF
  4166.  *
  4167.  * Example #4:
  4168.  *
  4169.  * For EVENT_OBJECT_REORDER, the object referred to by hwnd/idObject is the
  4170.  * PARENT container in which the zorder is occurring.  This is because if
  4171.  * one child is zordering, all of them are changing their relative zorder.
  4172.  */
  4173. #define EVENT_OBJECT_CREATE                 0x8000  // hwnd + ID + idChild is created item
  4174. #define EVENT_OBJECT_DESTROY                0x8001  // hwnd + ID + idChild is destroyed item
  4175. #define EVENT_OBJECT_SHOW                   0x8002  // hwnd + ID + idChild is shown item
  4176. #define EVENT_OBJECT_HIDE                   0x8003  // hwnd + ID + idChild is hidden item
  4177. #define EVENT_OBJECT_REORDER                0x8004  // hwnd + ID + idChild is parent of zordering children
  4178. /*
  4179.  * NOTE:
  4180.  * Minimize the number of notifications!
  4181.  *
  4182.  * When you are hiding a parent object, obviously all child objects are no
  4183.  * longer visible on screen.  They still have the same "visible" status,
  4184.  * but are not truly visible.  Hence do not send HIDE notifications for the
  4185.  * children also.  One implies all.  The same goes for SHOW.
  4186.  */
  4187. #define EVENT_OBJECT_FOCUS                  0x8005  // hwnd + ID + idChild is focused item
  4188. #define EVENT_OBJECT_SELECTION              0x8006  // hwnd + ID + idChild is selected item (if only one), or idChild is OBJID_WINDOW if complex
  4189. #define EVENT_OBJECT_SELECTIONADD           0x8007  // hwnd + ID + idChild is item added
  4190. #define EVENT_OBJECT_SELECTIONREMOVE        0x8008  // hwnd + ID + idChild is item removed
  4191. #define EVENT_OBJECT_SELECTIONWITHIN        0x8009  // hwnd + ID + idChild is parent of changed selected items
  4192. /*
  4193.  * NOTES:
  4194.  * There is only one "focused" child item in a parent.  This is the place
  4195.  * keystrokes are going at a given moment.  Hence only send a notification
  4196.  * about where the NEW focus is going.  A NEW item getting the focus already
  4197.  * implies that the OLD item is losing it.
  4198.  *
  4199.  * SELECTION however can be multiple.  Hence the different SELECTION
  4200.  * notifications.  Here's when to use each:
  4201.  *
  4202.  * (1) Send a SELECTION notification in the simple single selection
  4203.  *     case (like the focus) when the item with the selection is
  4204.  *     merely moving to a different item within a container.  hwnd + ID
  4205.  *     is the container control, idChildItem is the new child with the
  4206.  *     selection.
  4207.  *
  4208.  * (2) Send a SELECTIONADD notification when a new item has simply been added
  4209.  *     to the selection within a container.  This is appropriate when the
  4210.  *     number of newly selected items is very small.  hwnd + ID is the
  4211.  *     container control, idChildItem is the new child added to the selection.
  4212.  *
  4213.  * (3) Send a SELECTIONREMOVE notification when a new item has simply been
  4214.  *     removed from the selection within a container.  This is appropriate
  4215.  *     when the number of newly selected items is very small, just like
  4216.  *     SELECTIONADD.  hwnd + ID is the container control, idChildItem is the
  4217.  *     new child removed from the selection.
  4218.  *
  4219.  * (4) Send a SELECTIONWITHIN notification when the selected items within a
  4220.  *     control have changed substantially.  Rather than propagate a large
  4221.  *     number of changes to reflect removal for some items, addition of
  4222.  *     others, just tell somebody who cares that a lot happened.  It will
  4223.  *     be faster an easier for somebody watching to just turn around and
  4224.  *     query the container control what the new bunch of selected items
  4225.  *     are.
  4226.  */
  4227. #define EVENT_OBJECT_STATECHANGE            0x800A  // hwnd + ID + idChild is item w/ state change
  4228. /*
  4229.  * Examples of when to send an EVENT_OBJECT_STATECHANGE include
  4230.  *      * It is being enabled/disabled (USER does for windows)
  4231.  *      * It is being pressed/released (USER does for buttons)
  4232.  *      * It is being checked/unchecked (USER does for radio/check buttons)
  4233.  */
  4234. #define EVENT_OBJECT_LOCATIONCHANGE         0x800B  // hwnd + ID + idChild is moved/sized item
  4235. /*
  4236.  * Note:
  4237.  * A LOCATIONCHANGE is not sent for every child object when the parent
  4238.  * changes shape/moves.  Send one notification for the topmost object
  4239.  * that is changing.  For example, if the user resizes a top level window,
  4240.  * USER will generate a LOCATIONCHANGE for it, but not for the menu bar,
  4241.  * title bar, scrollbars, etc.  that are also changing shape/moving.
  4242.  *
  4243.  * In other words, it only generates LOCATIONCHANGE notifications for
  4244.  * real windows that are moving/sizing.  It will not generate a LOCATIONCHANGE
  4245.  * for every non-floating child window when the parent moves (the children are
  4246.  * logically moving also on screen, but not relative to the parent).
  4247.  *
  4248.  * Now, if the app itself resizes child windows as a result of being
  4249.  * sized, USER will generate LOCATIONCHANGEs for those dudes also because
  4250.  * it doesn't know better.
  4251.  *
  4252.  * Note also that USER will generate LOCATIONCHANGE notifications for two
  4253.  * non-window sys objects:
  4254.  *      (1) System caret
  4255.  *      (2) Cursor
  4256.  */
  4257. #define EVENT_OBJECT_NAMECHANGE             0x800C  // hwnd + ID + idChild is item w/ name change
  4258. #define EVENT_OBJECT_DESCRIPTIONCHANGE      0x800D  // hwnd + ID + idChild is item w/ desc change
  4259. #define EVENT_OBJECT_VALUECHANGE            0x800E  // hwnd + ID + idChild is item w/ value change
  4260. #define EVENT_OBJECT_PARENTCHANGE           0x800F  // hwnd + ID + idChild is item w/ new parent
  4261. #define EVENT_OBJECT_HELPCHANGE             0x8010  // hwnd + ID + idChild is item w/ help change
  4262. #define EVENT_OBJECT_DEFACTIONCHANGE        0x8011  // hwnd + ID + idChild is item w/ def action change
  4263. #define EVENT_OBJECT_ACCELERATORCHANGE      0x8012  // hwnd + ID + idChild is item w/ keybd accel change
  4264. /*
  4265.  * Child IDs
  4266.  */
  4267. /*
  4268.  * System Sounds (idChild of system SOUND notification)
  4269.  */
  4270. #define SOUND_SYSTEM_STARTUP            1
  4271. #define SOUND_SYSTEM_SHUTDOWN           2
  4272. #define SOUND_SYSTEM_BEEP               3
  4273. #define SOUND_SYSTEM_ERROR              4
  4274. #define SOUND_SYSTEM_QUESTION           5
  4275. #define SOUND_SYSTEM_WARNING            6
  4276. #define SOUND_SYSTEM_INFORMATION        7
  4277. #define SOUND_SYSTEM_MAXIMIZE           8
  4278. #define SOUND_SYSTEM_MINIMIZE           9
  4279. #define SOUND_SYSTEM_RESTOREUP          10
  4280. #define SOUND_SYSTEM_RESTOREDOWN        11
  4281. #define SOUND_SYSTEM_APPSTART           12
  4282. #define SOUND_SYSTEM_FAULT              13
  4283. #define SOUND_SYSTEM_APPEND             14
  4284. #define SOUND_SYSTEM_MENUCOMMAND        15
  4285. #define SOUND_SYSTEM_MENUPOPUP          16
  4286. #define CSOUND_SYSTEM                   16
  4287. /*
  4288.  * System Alerts (indexChild of system ALERT notification)
  4289.  */
  4290. #define ALERT_SYSTEM_INFORMATIONAL      1       // MB_INFORMATION
  4291. #define ALERT_SYSTEM_WARNING            2       // MB_WARNING
  4292. #define ALERT_SYSTEM_ERROR              3       // MB_ERROR
  4293. #define ALERT_SYSTEM_QUERY              4       // MB_QUESTION
  4294. #define ALERT_SYSTEM_CRITICAL           5       // HardSysErrBox
  4295. #define CALERT_SYSTEM                   6
  4296. WINUSERAPI HWINEVENTHOOK WINAPI
  4297. SetWinEventHook(
  4298.     DWORD        eventMin,
  4299.     DWORD        eventMax,
  4300.     HMODULE      hmodWinEventProc,
  4301.     WINEVENTPROC pfnWinEventProc,
  4302.     DWORD        idProcess,
  4303.     DWORD        idThread,
  4304.     DWORD        dwFlags);
  4305. WINUSERAPI BOOL WINAPI
  4306. UnhookWinEvent(HWINEVENTHOOK hWinEventHook);
  4307. /*
  4308.  * dwFlags for SetWinEventHook
  4309.  */
  4310. #define WINEVENT_OUTOFCONTEXT   0x0000  // Events are ASYNC
  4311. #define WINEVENT_SKIPOWNTHREAD  0x0001  // Don't call back for events on installer's thread
  4312. #define WINEVENT_SKIPOWNPROCESS 0x0002  // Don't call back for events on installer's process
  4313. #define WINEVENT_INCONTEXT      0x0004  // Events are SYNC, this causes your dll to be injected into every process
  4314. typedef struct tagGUITHREADINFO
  4315. {
  4316.     DWORD   cbSize;
  4317.     DWORD   flags;
  4318.     HWND    hwndActive;
  4319.     HWND    hwndFocus;
  4320.     HWND    hwndCapture;
  4321.     HWND    hwndMenuOwner;
  4322.     HWND    hwndMoveSize;
  4323.     HWND    hwndCaret;
  4324.     RECT    rcCaret;
  4325. } GUITHREADINFO, *PGUITHREADINFO;
  4326. #define GUI_CARETBLINKING   0x00000001
  4327. #define GUI_INMOVESIZE      0x00000002
  4328. #define GUI_INMENUMODE      0x00000004
  4329. #define GUI_SYSTEMMENUMODE  0x00000008
  4330. #define GUI_POPUPMENUMODE   0x00000010
  4331. WINUSERAPI BOOL WINAPI
  4332. GetGUIThreadInfo(
  4333.     DWORD          idThread,
  4334.     PGUITHREADINFO pgui);
  4335. WINUSERAPI UINT WINAPI
  4336. GetWindowModuleFileNameA(
  4337.     HWND   hwnd,
  4338.     LPSTR pszFileName,
  4339.     UINT   cchFileNameMax);
  4340. WINUSERAPI UINT WINAPI
  4341. GetWindowModuleFileNameW(
  4342.     HWND   hwnd,
  4343.     LPWSTR pszFileName,
  4344.     UINT   cchFileNameMax);
  4345. #ifdef UNICODE
  4346. #define GetWindowModuleFileName  GetWindowModuleFileNameW
  4347. #else
  4348. #define GetWindowModuleFileName  GetWindowModuleFileNameA
  4349. #endif // !UNICODE
  4350. #define STATE_SYSTEM_UNAVAILABLE        0x00000001  // Disabled
  4351. #define STATE_SYSTEM_SELECTED           0x00000002
  4352. #define STATE_SYSTEM_FOCUSED            0x00000004
  4353. #define STATE_SYSTEM_PRESSED            0x00000008
  4354. #define STATE_SYSTEM_CHECKED            0x00000010
  4355. #define STATE_SYSTEM_MIXED              0x00000020  // 3-state checkbox or toolbar button
  4356. #define STATE_SYSTEM_READONLY           0x00000040
  4357. #define STATE_SYSTEM_HOTTRACKED         0x00000080
  4358. #define STATE_SYSTEM_DEFAULT            0x00000100
  4359. #define STATE_SYSTEM_EXPANDED           0x00000200
  4360. #define STATE_SYSTEM_COLLAPSED          0x00000400
  4361. #define STATE_SYSTEM_BUSY               0x00000800
  4362. #define STATE_SYSTEM_FLOATING           0x00001000  // Children "owned" not "contained" by parent
  4363. #define STATE_SYSTEM_MARQUEED           0x00002000
  4364. #define STATE_SYSTEM_ANIMATED           0x00004000
  4365. #define STATE_SYSTEM_INVISIBLE          0x00008000
  4366. #define STATE_SYSTEM_OFFSCREEN          0x00010000
  4367. #define STATE_SYSTEM_SIZEABLE           0x00020000
  4368. #define STATE_SYSTEM_MOVEABLE           0x00040000
  4369. #define STATE_SYSTEM_SELFVOICING        0x00080000
  4370. #define STATE_SYSTEM_FOCUSABLE          0x00100000
  4371. #define STATE_SYSTEM_SELECTABLE         0x00200000
  4372. #define STATE_SYSTEM_LINKED             0x00400000
  4373. #define STATE_SYSTEM_TRAVERSED          0x00800000
  4374. #define STATE_SYSTEM_MULTISELECTABLE    0x01000000  // Supports multiple selection
  4375. #define STATE_SYSTEM_EXTSELECTABLE      0x02000000  // Supports extended selection
  4376. #define STATE_SYSTEM_VALID              0x03FFFFFF
  4377. #define CCHILDREN_TITLEBAR              5
  4378. #define CCHILDREN_SCROLLBAR             5
  4379. /*
  4380.  * Information about the global cursor.
  4381.  */
  4382. typedef struct tagCURSORINFO
  4383. {
  4384.     DWORD   cbSize;
  4385.     DWORD   flags;
  4386.     HCURSOR hCursor;
  4387.     POINT   ptScreenPos;
  4388. } CURSORINFO, *PCURSORINFO, *LPCURSORINFO;
  4389. #define CURSOR_SHOWING     0x00000001
  4390. BOOL WINAPI
  4391. GetCursorInfo(
  4392.     PCURSORINFO pci
  4393. );
  4394. /*
  4395.  * Window information snapshot
  4396.  */
  4397. typedef struct tagWINDOWINFO
  4398. {
  4399.     DWORD cbSize;
  4400.     RECT  rcWindow;
  4401.     RECT  rcClient;
  4402.     DWORD dwStyle;
  4403.     DWORD dwExStyle;
  4404.     DWORD dwOtherStuff;
  4405.     UINT  cxWindowBorders;
  4406.     UINT  cyWindowBorders;
  4407.     ATOM  atomWindowType;
  4408.     WORD  wCreatorVersion;
  4409. } WINDOWINFO, *PWINDOWINFO, *LPWINDOWINFO;
  4410. #define WS_ACTIVECAPTION    0x0001
  4411. BOOL WINAPI
  4412. GetWindowInfo(
  4413.     HWND hwnd,
  4414.     PWINDOWINFO pwi
  4415. );
  4416. /*
  4417.  * Titlebar information.
  4418.  */
  4419. typedef struct tagTITLEBARINFO
  4420. {
  4421.     DWORD cbSize;
  4422.     RECT  rcTitleBar;
  4423.     DWORD rgstate[CCHILDREN_TITLEBAR+1];
  4424. } TITLEBARINFO, *PTITLEBARINFO, *LPTITLEBARINFO;
  4425. BOOL WINAPI
  4426. GetTitleBarInfo(
  4427.     HWND hwnd,
  4428.     PTITLEBARINFO pti
  4429. );
  4430. /*
  4431.  * Menubar information
  4432.  */
  4433. typedef struct tagMENUBARINFO
  4434. {
  4435.     DWORD cbSize;
  4436.     RECT  rcBar;          // rect of bar, popup, item
  4437.     HMENU hMenu;          // real menu handle of bar, popup
  4438.     HWND  hwndMenu;       // hwnd of item submenu if one
  4439.     BOOL  fBarFocused:1;  // bar, popup has the focus
  4440.     BOOL  fFocused:1;     // item has the focus
  4441. } MENUBARINFO, *PMENUBARINFO, *LPMENUBARINFO;
  4442. BOOL WINAPI
  4443. GetMenuBarInfo(
  4444.     HWND hwnd,
  4445.     LONG idObject,
  4446.     LONG idItem,
  4447.     PMENUBARINFO pmbi
  4448. );
  4449. /*
  4450.  * Scrollbar information
  4451.  */
  4452. typedef struct tagSCROLLBARINFO
  4453. {
  4454.     DWORD cbSize;
  4455.     RECT  rcScrollBar;
  4456.     int   dxyLineButton;
  4457.     int   xyThumbTop;
  4458.     int   xyThumbBottom;
  4459.     int   bogus;
  4460.     DWORD rgstate[CCHILDREN_SCROLLBAR+1];
  4461. } SCROLLBARINFO, *PSCROLLBARINFO, *LPSCROLLBARINFO;
  4462. BOOL
  4463. WINAPI
  4464. GetScrollBarInfo(
  4465.     HWND hwnd,
  4466.     LONG idObject,
  4467.     PSCROLLBARINFO psbi
  4468. );
  4469. /*
  4470.  * Combobox information
  4471.  */
  4472. typedef struct tagCOMBOBOXINFO
  4473. {
  4474.     DWORD cbSize;
  4475.     RECT  rcItem;
  4476.     RECT  rcButton;
  4477.     DWORD stateButton;
  4478.     HWND  hwndCombo;
  4479.     HWND  hwndItem;
  4480.     HWND  hwndList;
  4481. } COMBOBOXINFO, *PCOMBOBOXINFO, *LPCOMBOBOXINFO;
  4482. BOOL
  4483. WINAPI
  4484. GetComboBoxInfo(
  4485.     HWND hwndCombo,
  4486.     PCOMBOBOXINFO pcbi
  4487. );
  4488. /*
  4489.  * The "real" ancestor window
  4490.  */
  4491. #define     GA_MIC          1
  4492. #define     GA_PARENT       1
  4493. #define     GA_ROOT         2
  4494. #define     GA_ROOTOWNER    3
  4495. #define     GA_MAC          4
  4496. HWND
  4497. WINAPI
  4498. GetAncestor(
  4499.     HWND hwnd,
  4500.     UINT gaFlags
  4501. );
  4502. /*
  4503.  * This gets the REAL child window at the point.  If it is in the dead
  4504.  * space of a group box, it will try a sibling behind it.  But static
  4505.  * fields will get returned.  In other words, it is kind of a cross between
  4506.  * ChildWindowFromPointEx and WindowFromPoint.
  4507.  */
  4508. HWND
  4509. WINAPI
  4510. RealChildWindowFromPoint(
  4511.     HWND hwndParent,
  4512.     POINT ptParentClientCoords
  4513. );
  4514. /*
  4515.  * This gets the name of the window TYPE, not class.  This allows us to
  4516.  * recognize ThunderButton32 et al.
  4517.  */
  4518. UINT
  4519. WINAPI
  4520. RealGetWindowClassA(
  4521.     HWND  hwnd,
  4522.     LPTSTR pszType,
  4523.     UINT  cchType
  4524. );
  4525. /*
  4526.  * This gets the name of the window TYPE, not class.  This allows us to
  4527.  * recognize ThunderButton32 et al.
  4528.  */
  4529. UINT
  4530. WINAPI
  4531. RealGetWindowClassW(
  4532.     HWND  hwnd,
  4533.     LPTSTR pszType,
  4534.     UINT  cchType
  4535. );
  4536. #ifdef UNICODE
  4537. #define RealGetWindowClass  RealGetWindowClassW
  4538. #else
  4539. #define RealGetWindowClass  RealGetWindowClassA
  4540. #endif // !UNICODE
  4541. /*
  4542.  * Alt-Tab Switch window information.
  4543.  */
  4544. typedef struct tagALTTABINFO
  4545. {
  4546.     DWORD cbSize;
  4547.     int   cItems;
  4548.     int   cColumns;
  4549.     int   cRows;
  4550.     int   iColFocus;
  4551.     int   iRowFocus;
  4552.     int   cxItem;
  4553.     int   cyItem;
  4554.     POINT ptStart;
  4555. } ALTTABINFO, *PALTTABINFO, *LPALTTABINFO;
  4556. BOOL
  4557. WINAPI
  4558. GetAltTabInfoA(
  4559.     HWND hwnd,
  4560.     int iItem,
  4561.     PALTTABINFO pati,
  4562.     LPTSTR pszItemText,
  4563.     UINT cchItemText
  4564. );
  4565. BOOL
  4566. WINAPI
  4567. GetAltTabInfoW(
  4568.     HWND hwnd,
  4569.     int iItem,
  4570.     PALTTABINFO pati,
  4571.     LPTSTR pszItemText,
  4572.     UINT cchItemText
  4573. );
  4574. #ifdef UNICODE
  4575. #define GetAltTabInfo  GetAltTabInfoW
  4576. #else
  4577. #define GetAltTabInfo  GetAltTabInfoA
  4578. #endif // !UNICODE
  4579. /*
  4580.  * Listbox information.
  4581.  * Returns the number of items per row.
  4582.  */
  4583. DWORD
  4584. WINAPI
  4585. GetListBoxInfo(
  4586.     HWND hwnd
  4587. );
  4588. #endif /* NOWINABLE */
  4589. #endif // if (_WIN32_WINDOWS >= 0x040A)
  4590. #ifdef __cplusplus
  4591. }
  4592. #endif  /* __cplusplus */
  4593. #endif /* !_WINUSER_ */