Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3495 lines
115 KiB

  1. /*****************************************************************************\
  2. * *
  3. * commctrl.h - - Interface for the Windows Common Controls *
  4. * *
  5. * Version 1.0 *
  6. * *
  7. * Copyright (c) 1991-1995, Microsoft Corp. All rights reserved. *
  8. * *
  9. \*****************************************************************************/
  10. /*REVIEW: this stuff needs Windows style in many places; find all REVIEWs. */ // ;Internal
  11. // ;Internal
  12. #ifndef _INC_COMMCTRL
  13. #define _INC_COMMCTRL
  14. #ifndef _INC_COMCTRLP // ;internal
  15. #define _INC_COMCTRLP // ;internal
  16. #ifndef NOUSER
  17. //
  18. // Define API decoration for direct importing of DLL references.
  19. //
  20. #ifndef WINCOMMCTRLAPI
  21. #if !defined(_COMCTL32_) && defined(_WIN32)
  22. #define WINCOMMCTRLAPI DECLSPEC_IMPORT
  23. #else
  24. #define WINCOMMCTRLAPI
  25. #endif
  26. #endif // WINCOMMCTRLAPI
  27. //
  28. // For compilers that don't support nameless unions
  29. //
  30. #ifndef DUMMYUNIONNAME
  31. #ifdef NONAMELESSUNION
  32. #define DUMMYUNIONNAME u
  33. #define DUMMYUNIONNAME2 u2
  34. #define DUMMYUNIONNAME3 u3
  35. #else
  36. #define DUMMYUNIONNAME
  37. #define DUMMYUNIONNAME2
  38. #define DUMMYUNIONNAME3
  39. #endif
  40. #endif // DUMMYUNIONNAME
  41. #ifdef _WIN32
  42. #include <pshpack1.h>
  43. #endif
  44. #ifdef __cplusplus
  45. extern "C" {
  46. #endif
  47. //
  48. // Users of this header may define any number of these constants to avoid
  49. // the definitions of each functional group.
  50. //
  51. // NOTOOLBAR Customizable bitmap-button toolbar control.
  52. // NOUPDOWN Up and Down arrow increment/decrement control.
  53. // NOSTATUSBAR Status bar control.
  54. // NOMENUHELP APIs to help manage menus, especially with a status bar.
  55. // NOTRACKBAR Customizable column-width tracking control.
  56. // NOBTNLIST A control which is a list of bitmap buttons. // ;Internal
  57. // NODRAGLIST APIs to make a listbox source and sink drag&drop actions.
  58. // NOPROGRESS Progress gas gauge.
  59. // NOHOTKEY HotKey control
  60. // NOHEADER Header bar control.
  61. // NOIMAGEAPIS ImageList apis.
  62. // NOLISTVIEW ListView control.
  63. // NOTREEVIEW TreeView control.
  64. // NOTABCONTROL Tab control.
  65. // NOANIMATE Animate control.
  66. //
  67. //=============================================================================
  68. #include <prsht.h>
  69. #include <prshtp.h> // ;internal
  70. WINCOMMCTRLAPI void WINAPI InitCommonControls();
  71. // BUGBUG: should be in windows.h? // ;Internal
  72. #define ODT_HEADER 100
  73. #define ODT_TAB 101
  74. #define ODT_LISTVIEW 102
  75. //====== Ranges for control message IDs =======================================
  76. #define LVM_FIRST 0x1000 // ListView messages
  77. #define TV_FIRST 0x1100 // TreeView messages
  78. #define HDM_FIRST 0x1200 // Header messages
  79. WINCOMMCTRLAPI LRESULT WINAPI SendNotify(HWND hwndTo, HWND hwndFrom, int code, NMHDR FAR* pnmhdr); // ;internal
  80. WINCOMMCTRLAPI LRESULT WINAPI SendNotifyEx(HWND hwndTo, HWND hwndFrom, int code, NMHDR FAR* pnmhdr, BOOL bUnicode); // ;internal
  81. //====== WM_NOTIFY Macros =====================================================
  82. #define HANDLE_WM_NOTIFY(hwnd, wParam, lParam, fn) \
  83. (fn)((hwnd), (int)(wParam), (NMHDR FAR*)(lParam))
  84. #define FORWARD_WM_NOTIFY(hwnd, idFrom, pnmhdr, fn) \
  85. (LRESULT)(fn)((hwnd), WM_NOTIFY, (WPARAM)(int)(idFrom), (LPARAM)(NMHDR FAR*)(pnmhdr))
  86. //====== Generic WM_NOTIFY notification codes =================================
  87. #define NM_OUTOFMEMORY (NM_FIRST-1)
  88. #define NM_CLICK (NM_FIRST-2)
  89. #define NM_DBLCLK (NM_FIRST-3)
  90. #define NM_RETURN (NM_FIRST-4)
  91. #define NM_RCLICK (NM_FIRST-5)
  92. #define NM_RDBLCLK (NM_FIRST-6)
  93. #define NM_SETFOCUS (NM_FIRST-7)
  94. #define NM_KILLFOCUS (NM_FIRST-8)
  95. #define NM_STARTWAIT (NM_FIRST-9) // ;Internal
  96. #define NM_ENDWAIT (NM_FIRST-10) // ;Internal
  97. #define NM_BTNCLK (NM_FIRST-11) // ;Internal
  98. #define NM_CUSTOMDRAW (NM_FIRST-12)
  99. //====== WM_NOTIFY codes (NMHDR.code values) ==================================
  100. #define NM_FIRST (0U- 0U) // generic to all controls
  101. #define NM_LAST (0U- 99U)
  102. #define LVN_FIRST (0U-100U) // listview
  103. #define LVN_LAST (0U-199U)
  104. #define HDN_FIRST (0U-300U) // header
  105. #define HDN_LAST (0U-399U)
  106. #define TVN_FIRST (0U-400U) // treeview
  107. #define TVN_LAST (0U-499U)
  108. #define TTN_FIRST (0U-520U) // tooltips
  109. #define TTN_LAST (0U-549U)
  110. #define TCN_FIRST (0U-550U) // tab control
  111. #define TCN_LAST (0U-580U)
  112. // Shell reserved (0U-580U) - (0U-589U)
  113. #define CDN_FIRST (0U-601U) // common dialog (new)
  114. #define CDN_LAST (0U-699U)
  115. #define TBN_FIRST (0U-700U) // toolbar
  116. #define TBN_LAST (0U-720U)
  117. #define UDN_FIRST (0U-721) // updown
  118. #define UDN_LAST (0U-740)
  119. // Message Filter Proc codes - These are defined above MSGF_USER // ;Internal
  120. #define MSGF_COMMCTRL_BEGINDRAG 0x4200
  121. #define MSGF_COMMCTRL_SIZEHEADER 0x4201
  122. #define MSGF_COMMCTRL_DRAGSELECT 0x4202
  123. #define MSGF_COMMCTRL_TOOLBARCUST 0x4203
  124. //==================== CUSTOM DRAW ==========================================
  125. // custom draw return flags
  126. // values under 0x00010000 are reserved for global custom draw values.
  127. // above that are for specific controls
  128. #define CDRF_DODEFAULT 0x00000000
  129. #define CDRF_SKIPDEFAULT 0x00000001
  130. #define CDRF_NOTIFYPOSTPAINT 0x00000010
  131. #define CDRF_NOTIFYITEMDRAW 0x00000020
  132. // drawstage flags
  133. // values under 0x00010000 are reserved for global custom draw values.
  134. // above that are for specific controls
  135. #define CDDS_PREPAINT 0x000000001
  136. #define CDDS_POSTPAINT 0x000000002
  137. // the 0x000010000 bit means it's individual item specific
  138. #define CDDS_ITEM 0x000010000
  139. #define CDDS_ITEMPREPAINT (CDDS_ITEM | CDDS_PREPAINT)
  140. #define CDDS_ITEMPOSTPAINT (CDDS_ITEM | CDDS_POSTPAINT)
  141. // itemState flags
  142. #define CDIS_SELECTED 0x0001
  143. #define CDIS_GRAYED 0x0002
  144. #define CDIS_DISABLED 0x0004
  145. #define CDIS_CHECKED 0x0008
  146. #define CDIS_FOCUS 0x0010
  147. #define CDIS_DEFAULT 0x0020
  148. typedef struct tagNMCUSTOMDRAWINFO
  149. {
  150. NMHDR hdr;
  151. DWORD dwDrawStage;
  152. HDC hdc;
  153. RECT rc;
  154. DWORD dwItemSpec; // this is control specific, but it's how to specify an item. valid only with CDDS_ITEM bit set
  155. UINT uItemState;
  156. } NMCUSTOMDRAW, FAR * LPNMCUSTOMDRAW;
  157. //====== IMAGE APIS ===========================================================
  158. #ifndef NOIMAGEAPIS
  159. #define CLR_NONE 0xFFFFFFFFL
  160. #define CLR_DEFAULT 0xFF000000L
  161. struct _IMAGELIST;
  162. typedef struct _IMAGELIST NEAR* HIMAGELIST;
  163. typedef struct _IMAGELISTDRAWPARAMS {
  164. DWORD cbSize;
  165. HIMAGELIST himl;
  166. int i;
  167. HDC hdcDst;
  168. int x;
  169. int y;
  170. int cx;
  171. int cy;
  172. int xBitmap; // x offest from the upperleft of bitmap
  173. int yBitmap; // y offset from the upperleft of bitmap
  174. COLORREF rgbBk;
  175. COLORREF rgbFg;
  176. UINT fStyle;
  177. DWORD dwRop;
  178. } IMAGELISTDRAWPARAMS, FAR * LPIMAGELISTDRAWPARAMS;
  179. #define ILC_MASK 0x0001
  180. #define ILC_COLOR 0x0000
  181. #define ILC_COLORMASK 0x00FE // ;Internal
  182. #define ILC_COLORDDB 0x00FE
  183. #define ILC_COLOR4 0x0004
  184. #define ILC_COLOR8 0x0008
  185. #define ILC_COLOR16 0x0010
  186. #define ILC_COLOR24 0x0018
  187. #define ILC_COLOR32 0x0020
  188. #define ILC_SHARED 0x0100 // this is a shareable image list // ;Internal
  189. #define ILC_LARGESMALL 0x0200 // contains both large and small images (not implenented) // ;Internal
  190. #define ILC_UNIQUE 0x0400 // makes sure no dup. image exists in list (not implenented) // ;Internal
  191. #define ILC_PALETTE 0x0800
  192. WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_Create(int cx, int cy, UINT flags, int cInitial, int cGrow);
  193. WINCOMMCTRLAPI BOOL WINAPI ImageList_Destroy(HIMAGELIST himl);
  194. WINCOMMCTRLAPI int WINAPI ImageList_GetImageCount(HIMAGELIST himl);
  195. WINCOMMCTRLAPI int WINAPI ImageList_Add(HIMAGELIST himl, HBITMAP hbmImage, HBITMAP hbmMask);
  196. WINCOMMCTRLAPI int WINAPI ImageList_ReplaceIcon(HIMAGELIST himl, int i, HICON hicon);
  197. WINCOMMCTRLAPI COLORREF WINAPI ImageList_SetBkColor(HIMAGELIST himl, COLORREF clrBk);
  198. WINCOMMCTRLAPI COLORREF WINAPI ImageList_GetBkColor(HIMAGELIST himl);
  199. WINCOMMCTRLAPI BOOL WINAPI ImageList_SetOverlayImage(HIMAGELIST himl, int iImage, int iOverlay);
  200. #define ImageList_AddIcon(himl, hicon) ImageList_ReplaceIcon(himl, -1, hicon)
  201. #define ILD_NORMAL 0x0000
  202. #define ILD_TRANSPARENT 0x0001
  203. #define ILD_MASK 0x0010
  204. #define ILD_IMAGE 0x0020
  205. #define ILD_ROP 0x0040
  206. #define ILD_BLENDMASK 0x000E // ;Internal
  207. #define ILD_BLEND25 0x0002
  208. #define ILD_BLEND50 0x0004
  209. #define ILD_BLEND75 0x0008 // not implemented // ;Internal
  210. #define ILD_OVERLAYMASK 0x0F00
  211. #define INDEXTOOVERLAYMASK(i) ((i) << 8)
  212. #define OVERLAYMASKTOINDEX(i) ((((i) >> 8) & (ILD_OVERLAYMASK >> 8))-1) // ;Internal
  213. #define ILD_SELECTED ILD_BLEND50
  214. #define ILD_FOCUS ILD_BLEND25
  215. #define ILD_BLEND ILD_BLEND50
  216. #define CLR_HILIGHT CLR_DEFAULT
  217. WINCOMMCTRLAPI BOOL WINAPI ImageList_Draw(HIMAGELIST himl, int i, HDC hdcDst, int x, int y, UINT fStyle);
  218. // BUGBUG remove these! // ;internal
  219. WINCOMMCTRLAPI BOOL WINAPI ImageList_GetIconSize(HIMAGELIST himl, int FAR *cx, int FAR *cy); // ;internal
  220. WINCOMMCTRLAPI BOOL WINAPI ImageList_GetImageRect(HIMAGELIST himl, int i, RECT FAR* prcImage); // ;internal
  221. WINCOMMCTRLAPI BOOL WINAPI ImageList_DrawEx(HIMAGELIST himl, int i, HDC hdcDst, int x, int y, int dx, int dy, COLORREF rgbBk, COLORREF rgbFg, UINT fStyle); // ;internal
  222. WINCOMMCTRLAPI BOOL WINAPI ImageList_DrawIndirect(IMAGELISTDRAWPARAMS* pimldp); // ;internal
  223. WINCOMMCTRLAPI BOOL WINAPI ImageList_Remove(HIMAGELIST himl, int i); // ;internal
  224. #ifdef _WIN32
  225. WINCOMMCTRLAPI BOOL WINAPI ImageList_Replace(HIMAGELIST himl, int i, HBITMAP hbmImage, HBITMAP hbmMask);
  226. WINCOMMCTRLAPI int WINAPI ImageList_AddMasked(HIMAGELIST himl, HBITMAP hbmImage, COLORREF crMask);
  227. WINCOMMCTRLAPI BOOL WINAPI ImageList_DrawEx(HIMAGELIST himl, int i, HDC hdcDst, int x, int y, int dx, int dy, COLORREF rgbBk, COLORREF rgbFg, UINT fStyle);
  228. WINCOMMCTRLAPI BOOL WINAPI ImageList_DrawIndirect(IMAGELISTDRAWPARAMS* pimldp);
  229. WINCOMMCTRLAPI BOOL WINAPI ImageList_Remove(HIMAGELIST himl, int i);
  230. WINCOMMCTRLAPI HICON WINAPI ImageList_GetIcon(HIMAGELIST himl, int i, UINT flags);
  231. WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_LoadImageA(HINSTANCE hi, LPCSTR lpbmp, int cx, int cGrow, COLORREF crMask, UINT uType, UINT uFlags);
  232. WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_LoadImageW(HINSTANCE hi, LPCWSTR lpbmp, int cx, int cGrow, COLORREF crMask, UINT uType, UINT uFlags);
  233. #ifdef UNICODE
  234. #define ImageList_LoadImage ImageList_LoadImageW
  235. #else
  236. #define ImageList_LoadImage ImageList_LoadImageA
  237. #endif
  238. WINCOMMCTRLAPI BOOL WINAPI ImageList_BeginDrag(HIMAGELIST himlTrack, int iTrack, int dxHotspot, int dyHotspot);
  239. WINCOMMCTRLAPI void WINAPI ImageList_EndDrag();
  240. WINCOMMCTRLAPI BOOL WINAPI ImageList_DragEnter(HWND hwndLock, int x, int y);
  241. WINCOMMCTRLAPI BOOL WINAPI ImageList_DragLeave(HWND hwndLock);
  242. WINCOMMCTRLAPI BOOL WINAPI ImageList_DragMove(int x, int y);
  243. WINCOMMCTRLAPI BOOL WINAPI ImageList_SetDragCursorImage(HIMAGELIST himlDrag, int iDrag, int dxHotspot, int dyHotspot);
  244. WINCOMMCTRLAPI BOOL WINAPI ImageList_DragShowNolock(BOOL fShow);
  245. WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_GetDragImage(POINT FAR* ppt,POINT FAR* pptHotspot);
  246. #define ImageList_RemoveAll(himl) ImageList_Remove(himl, -1)
  247. #define ImageList_ExtractIcon(hi, himl, i) ImageList_GetIcon(himl, i, 0)
  248. #define ImageList_LoadBitmap(hi, lpbmp, cx, cGrow, crMask) ImageList_LoadImage(hi, lpbmp, cx, cGrow, crMask, IMAGE_BITMAP, 0)
  249. #ifdef __IStream_INTERFACE_DEFINED__
  250. WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_Read(LPSTREAM pstm);
  251. WINCOMMCTRLAPI BOOL WINAPI ImageList_Write(HIMAGELIST himl, LPSTREAM pstm);
  252. #endif
  253. typedef struct _IMAGEINFO
  254. {
  255. HBITMAP hbmImage;
  256. HBITMAP hbmMask;
  257. int Unused1;
  258. int Unused2;
  259. RECT rcImage;
  260. } IMAGEINFO, FAR *LPIMAGEINFO;
  261. WINCOMMCTRLAPI BOOL WINAPI ImageList_GetIconSize(HIMAGELIST himl, int FAR *cx, int FAR *cy);
  262. WINCOMMCTRLAPI BOOL WINAPI ImageList_SetIconSize(HIMAGELIST himl, int cx, int cy);
  263. WINCOMMCTRLAPI BOOL WINAPI ImageList_GetImageInfo(HIMAGELIST himl, int i, IMAGEINFO FAR* pImageInfo);
  264. WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_Merge(HIMAGELIST himl1, int i1, HIMAGELIST himl2, int i2, int dx, int dy);
  265. #endif
  266. #endif
  267. //====== HEADER CONTROL =======================================================
  268. #ifndef NOHEADER
  269. #ifdef _WIN32
  270. #define WC_HEADERA "SysHeader32"
  271. #define WC_HEADERW L"SysHeader32"
  272. #ifdef UNICODE
  273. #define WC_HEADER WC_HEADERW
  274. #else
  275. #define WC_HEADER WC_HEADERA
  276. #endif
  277. #else
  278. #define WC_HEADER "SysHeader"
  279. #endif
  280. #define HDS_HORZ 0x0000
  281. #define HDS_VERT 0x0001 // BUGBUG: not implemente // ;Internal
  282. #define HDS_BUTTONS 0x0002
  283. #define HDS_DIVIDERTRACK 0x0004 // (default) width tracking // ;Internal
  284. #define HDS_HIDDEN 0x0008
  285. #define HDS_SHAREDIMAGELISTS 0x0000 // ;internal
  286. #define HDS_PRIVATEIMAGELISTS 0x0010 // ;internal
  287. typedef struct _HD_ITEMA
  288. {
  289. UINT mask;
  290. int cxy;
  291. LPSTR pszText;
  292. HBITMAP hbm;
  293. int cchTextMax;
  294. int fmt;
  295. LPARAM lParam;
  296. int iImage; // index of bitmap in ImageList
  297. } HDITEMA, FAR * LPHDITEMA;
  298. typedef struct _HD_ITEMW
  299. {
  300. UINT mask;
  301. int cxy;
  302. LPWSTR pszText;
  303. HBITMAP hbm;
  304. int cchTextMax;
  305. int fmt;
  306. LPARAM lParam;
  307. int iImage; // index of bitmap in ImageList
  308. } HDITEMW, FAR * LPHDITEMW;
  309. #define HD_ITEMA HDITEMA
  310. #define HD_ITEMW HDITEMW
  311. #ifdef UNICODE
  312. #define HDITEM HDITEMW
  313. #define LPHDITEM LPHDITEMW
  314. #else
  315. #define HDITEM HDITEMA
  316. #define LPHDITEM LPHDITEMW
  317. #endif
  318. #define HD_ITEM HDITEM
  319. #define HDI_WIDTH 0x0001
  320. #define HDI_HEIGHT HDI_WIDTH
  321. #define HDI_TEXT 0x0002
  322. #define HDI_FORMAT 0x0004
  323. #define HDI_LPARAM 0x0008
  324. #define HDI_BITMAP 0x0010
  325. #define HDI_IMAGE 0x0020
  326. #define HDI_DI_SETITEM 0x0040
  327. #define HDI_ALL 0x003f // ;Internal
  328. #define HDF_LEFT 0
  329. #define HDF_RIGHT 1
  330. #define HDF_CENTER 2
  331. #define HDF_JUSTIFYMASK 0x0003
  332. #define HDF_RTLREADING 4
  333. #define HDF_OWNERDRAW 0x8000
  334. #define HDF_STRING 0x4000
  335. #define HDF_BITMAP 0x2000
  336. #define HDF_BITMAP_ON_RIGHT 0x1000
  337. #define HDF_IMAGE 0x0800
  338. #define HDM_GETITEMCOUNT (HDM_FIRST + 0)
  339. #define Header_GetItemCount(hwndHD) \
  340. (int)SendMessage((hwndHD), HDM_GETITEMCOUNT, 0, 0L)
  341. #define HDM_INSERTITEMA (HDM_FIRST + 1)
  342. #define HDM_INSERTITEMW (HDM_FIRST + 10)
  343. #ifdef UNICODE
  344. #define HDM_INSERTITEM HDM_INSERTITEMW
  345. #else
  346. #define HDM_INSERTITEM HDM_INSERTITEMA
  347. #endif
  348. #define Header_InsertItem(hwndHD, i, phdi) \
  349. (int)SendMessage((hwndHD), HDM_INSERTITEM, (WPARAM)(int)(i), (LPARAM)(const HD_ITEM FAR*)(phdi))
  350. #define HDM_DELETEITEM (HDM_FIRST + 2)
  351. #define Header_DeleteItem(hwndHD, i) \
  352. (BOOL)SendMessage((hwndHD), HDM_DELETEITEM, (WPARAM)(int)(i), 0L)
  353. #define HDM_GETITEMA (HDM_FIRST + 3)
  354. #define HDM_GETITEMW (HDM_FIRST + 11)
  355. #ifdef UNICODE
  356. #define HDM_GETITEM HDM_GETITEMW
  357. #else
  358. #define HDM_GETITEM HDM_GETITEMA
  359. #endif
  360. #define Header_GetItem(hwndHD, i, phdi) \
  361. (BOOL)SendMessage((hwndHD), HDM_GETITEM, (WPARAM)(int)(i), (LPARAM)(HD_ITEM FAR*)(phdi))
  362. #define HDM_SETITEMA (HDM_FIRST + 4)
  363. #define HDM_SETITEMW (HDM_FIRST + 12)
  364. #ifdef UNICODE
  365. #define HDM_SETITEM HDM_SETITEMW
  366. #else
  367. #define HDM_SETITEM HDM_SETITEMA
  368. #endif
  369. #define Header_SetItem(hwndHD, i, phdi) \
  370. (BOOL)SendMessage((hwndHD), HDM_SETITEM, (WPARAM)(int)(i), (LPARAM)(const HD_ITEM FAR*)(phdi))
  371. typedef struct _HD_LAYOUT
  372. {
  373. RECT FAR* prc;
  374. WINDOWPOS FAR* pwpos;
  375. } HDLAYOUT, FAR *LPHDLAYOUT;
  376. #define HD_LAYOUT HDLAYOUT
  377. #define HDM_LAYOUT (HDM_FIRST + 5)
  378. #define Header_Layout(hwndHD, playout) \
  379. (BOOL)SendMessage((hwndHD), HDM_LAYOUT, 0, (LPARAM)(HD_LAYOUT FAR*)(playout))
  380. #define HHT_NOWHERE 0x0001
  381. #define HHT_ONHEADER 0x0002
  382. #define HHT_ONDIVIDER 0x0004
  383. #define HHT_ONDIVOPEN 0x0008
  384. #define HHT_ABOVE 0x0100
  385. #define HHT_BELOW 0x0200
  386. #define HHT_TORIGHT 0x0400
  387. #define HHT_TOLEFT 0x0800
  388. typedef struct _HD_HITTESTINFO
  389. {
  390. POINT pt;
  391. UINT flags;
  392. int iItem;
  393. } HDHITTESTINFO, FAR *LPHDHITTESTINFO;
  394. #define HD_HITTESTINFO HDHITTESTINFO
  395. #define HDM_HITTEST (HDM_FIRST + 6)
  396. #define HDM_GETITEMRECT (HDM_FIRST + 7)
  397. #define Header_GetItemRect(hwnd, iItem, lprc) \
  398. (BOOL)SendMessage((hwnd), HDM_GETITEMRECT, (WPARAM)iItem, (LPARAM)lprc)
  399. #define HDM_SETIMAGELIST (HDM_FIRST + 8)
  400. #define HDM_GETIMAGELIST (HDM_FIRST + 9)
  401. #define HDN_ITEMCHANGINGA (HDN_FIRST-0)
  402. #define HDN_ITEMCHANGINGW (HDN_FIRST-20)
  403. #define HDN_ITEMCHANGEDA (HDN_FIRST-1)
  404. #define HDN_ITEMCHANGEDW (HDN_FIRST-21)
  405. #define HDN_ITEMCLICKA (HDN_FIRST-2)
  406. #define HDN_ITEMCLICKW (HDN_FIRST-22)
  407. #define HDN_ITEMDBLCLICKA (HDN_FIRST-3)
  408. #define HDN_ITEMDBLCLICKW (HDN_FIRST-23)
  409. #define HDN_DIVIDERDBLCLICKA (HDN_FIRST-5)
  410. #define HDN_DIVIDERDBLCLICKW (HDN_FIRST-25)
  411. #define HDN_BEGINTRACKA (HDN_FIRST-6)
  412. #define HDN_BEGINTRACKW (HDN_FIRST-26)
  413. #define HDN_ENDTRACKA (HDN_FIRST-7)
  414. #define HDN_ENDTRACKW (HDN_FIRST-27)
  415. #define HDN_TRACKA (HDN_FIRST-8)
  416. #define HDN_TRACKW (HDN_FIRST-28)
  417. #define HDN_GETDISPINFOA (HDN_FIRST-9)
  418. #define HDN_GETDISPINFOW (HDN_FIRST-29)
  419. #ifdef UNICODE
  420. #define HDN_ITEMCHANGING HDN_ITEMCHANGINGW
  421. #define HDN_ITEMCHANGED HDN_ITEMCHANGEDW
  422. #define HDN_ITEMCLICK HDN_ITEMCLICKW
  423. #define HDN_ITEMDBLCLICK HDN_ITEMDBLCLICKW
  424. #define HDN_DIVIDERDBLCLICK HDN_DIVIDERDBLCLICKW
  425. #define HDN_BEGINTRACK HDN_BEGINTRACKW
  426. #define HDN_ENDTRACK HDN_ENDTRACKW
  427. #define HDN_TRACK HDN_TRACKW
  428. #define HDN_GETDISPINFO HDN_GETDISPINFOW
  429. #else
  430. #define HDN_ITEMCHANGING HDN_ITEMCHANGINGA
  431. #define HDN_ITEMCHANGED HDN_ITEMCHANGEDA
  432. #define HDN_ITEMCLICK HDN_ITEMCLICKA
  433. #define HDN_ITEMDBLCLICK HDN_ITEMDBLCLICKA
  434. #define HDN_DIVIDERDBLCLICK HDN_DIVIDERDBLCLICKA
  435. #define HDN_BEGINTRACK HDN_BEGINTRACKA
  436. #define HDN_ENDTRACK HDN_ENDTRACKA
  437. #define HDN_TRACK HDN_TRACKA
  438. #define HDN_GETDISPINFO HDN_GETDISPINFOA
  439. #endif
  440. typedef struct tagNMHEADERA
  441. {
  442. NMHDR hdr;
  443. int iItem;
  444. int iButton;
  445. HDITEMA FAR* pitem;
  446. } NMHEADERA, FAR* LPNMHEADERA;
  447. typedef struct tagNMHEADERW
  448. {
  449. NMHDR hdr;
  450. int iItem;
  451. int iButton;
  452. HDITEMW FAR* pitem;
  453. } NMHEADERW, FAR* LPNMHEADERW;
  454. #ifdef UNICODE
  455. #define NMHEADER NMHEADERW
  456. #define LPNMHEADER LPNMHEADERW
  457. #else
  458. #define NMHEADER NMHEADERA
  459. #define LPNMHEADER LPNMHEADERA
  460. #endif
  461. #define HD_NOTIFYA NMHEADERA
  462. #define HD_NOTIFYW NMHEADERW
  463. #define HD_NOTIFY NMHEADER
  464. typedef struct tagNMHDDISPINFOW
  465. {
  466. NMHDR hdr;
  467. int iItem;
  468. UINT mask;
  469. LPWSTR pszText;
  470. int cchTextMax;
  471. int iImage;
  472. LPARAM lParam;
  473. } NMHDDISPINFOW, FAR* LPNMHDDISPINFOW;
  474. typedef struct tagNMHDDISPINFOA
  475. {
  476. NMHDR hdr;
  477. int iItem;
  478. UINT mask;
  479. LPSTR pszText;
  480. int cchTextMax;
  481. int iImage;
  482. LPARAM lParam;
  483. } NMHDDISPINFOA, FAR* LPNMHDDISPINFOA;
  484. #ifdef UNICODE
  485. #define NMHDDISPINFO NMHDDISPINFOW
  486. #define LPNMHDDISPINFO LPNMHDDISPINFOW
  487. #else
  488. #define NMHDDISPINFO NMHDDISPINFOA
  489. #define LPNMHDDISPINFO LPNMHDDISPINFOA
  490. #endif
  491. #endif
  492. //====== TOOLBAR CONTROL ======================================================
  493. #ifndef NOTOOLBAR
  494. #ifdef _WIN32
  495. #define TOOLBARCLASSNAMEW L"ToolbarWindow32"
  496. #define TOOLBARCLASSNAMEA "ToolbarWindow32"
  497. #ifdef UNICODE
  498. #define TOOLBARCLASSNAME TOOLBARCLASSNAMEW
  499. #else
  500. #define TOOLBARCLASSNAME TOOLBARCLASSNAMEA
  501. #endif
  502. #else
  503. #define TOOLBARCLASSNAME "ToolbarWindow"
  504. #endif
  505. typedef struct _TBBUTTON {
  506. /* REVIEW: index, command, flag words, resource ids should be UINT */ // ;Internal
  507. int iBitmap;
  508. int idCommand;
  509. BYTE fsState;
  510. BYTE fsStyle;
  511. #ifdef _WIN32
  512. BYTE bReserved[2];
  513. #endif
  514. DWORD dwData;
  515. int iString;
  516. } TBBUTTON, NEAR* PTBBUTTON, FAR* LPTBBUTTON;
  517. typedef const TBBUTTON FAR* LPCTBBUTTON;
  518. /* REVIEW: is this internal? if not, call it TBCOLORMAP, prefix tbc */ // ;Internal
  519. typedef struct _COLORMAP {
  520. COLORREF from;
  521. COLORREF to;
  522. } COLORMAP, FAR* LPCOLORMAP;
  523. WINCOMMCTRLAPI HWND WINAPI CreateToolbarEx(HWND hwnd, DWORD ws, UINT wID, int nBitmaps,
  524. HINSTANCE hBMInst, UINT wBMID, LPCTBBUTTON lpButtons,
  525. int iNumButtons, int dxButton, int dyButton,
  526. int dxBitmap, int dyBitmap, UINT uStructSize);
  527. WINCOMMCTRLAPI HBITMAP WINAPI CreateMappedBitmap(HINSTANCE hInstance, int idBitmap,
  528. UINT wFlags, LPCOLORMAP lpColorMap,
  529. int iNumMaps);
  530. #define CMB_DISCARDABLE 0x01 /* BUGBUG: remove this */ // ;Internal
  531. #define CMB_MASKED 0x02
  532. /*REVIEW: TBSTATE_* should be TBF_* (for Flags) */ // ;Internal
  533. #define TBSTATE_CHECKED 0x01
  534. #define TBSTATE_PRESSED 0x02
  535. #define TBSTATE_ENABLED 0x04
  536. #define TBSTATE_HIDDEN 0x08
  537. #define TBSTATE_INDETERMINATE 0x10
  538. #define TBSTATE_WRAP 0x20
  539. #define TBSTYLE_BUTTON 0x00
  540. #define TBSTYLE_SEP 0x01
  541. #define TBSTYLE_CHECK 0x02
  542. #define TBSTYLE_GROUP 0x04
  543. #define TBSTYLE_CHECKGROUP (TBSTYLE_GROUP | TBSTYLE_CHECK)
  544. #define TBSTYLE_TOOLTIPS 0x0100
  545. #define TBSTYLE_WRAPABLE 0x0200
  546. #define TBSTYLE_ALTDRAG 0x0400
  547. #define TB_ENABLEBUTTON (WM_USER + 1)
  548. #define TB_CHECKBUTTON (WM_USER + 2)
  549. #define TB_PRESSBUTTON (WM_USER + 3)
  550. #define TB_HIDEBUTTON (WM_USER + 4)
  551. #define TB_INDETERMINATE (WM_USER + 5)
  552. /* Messages up to WM_USER+8 are reserved until we define more state bits */ // ;Internal
  553. #define TB_ISBUTTONENABLED (WM_USER + 9)
  554. #define TB_ISBUTTONCHECKED (WM_USER + 10)
  555. #define TB_ISBUTTONPRESSED (WM_USER + 11)
  556. #define TB_ISBUTTONHIDDEN (WM_USER + 12)
  557. #define TB_ISBUTTONINDETERMINATE (WM_USER + 13)
  558. /* Messages up to WM_USER+16 are reserved until we define more state bits */ // ;Internal
  559. #define TB_SETSTATE (WM_USER + 17)
  560. #define TB_GETSTATE (WM_USER + 18)
  561. #define TB_ADDBITMAP (WM_USER + 19)
  562. #ifdef _WIN32
  563. typedef struct tagTBADDBITMAP {
  564. HINSTANCE hInst;
  565. UINT nID;
  566. } TBADDBITMAP, *LPTBADDBITMAP;
  567. #define HINST_COMMCTRL ((HINSTANCE)-1)
  568. #define IDB_STD_SMALL_COLOR 0
  569. #define IDB_STD_LARGE_COLOR 1
  570. #define IDB_STD_SMALL_MONO 2 /* not supported yet */ // ;Internal
  571. #define IDB_STD_LARGE_MONO 3 /* not supported yet */ // ;Internal
  572. #define IDB_VIEW_SMALL_COLOR 4
  573. #define IDB_VIEW_LARGE_COLOR 5
  574. #define IDB_VIEW_SMALL_MONO 6 /* not supported yet */ // ;Internal
  575. #define IDB_VIEW_LARGE_MONO 7 /* not supported yet */ // ;Internal
  576. // icon indexes for standard bitmap
  577. #define STD_CUT 0
  578. #define STD_COPY 1
  579. #define STD_PASTE 2
  580. #define STD_UNDO 3
  581. #define STD_REDOW 4
  582. #define STD_DELETE 5
  583. #define STD_FILENEW 6
  584. #define STD_FILEOPEN 7
  585. #define STD_FILESAVE 8
  586. #define STD_PRINTPRE 9
  587. #define STD_PROPERTIES 10
  588. #define STD_HELP 11
  589. #define STD_FIND 12
  590. #define STD_REPLACE 13
  591. #define STD_PRINT 14
  592. // icon indexes for standard view bitmap
  593. #define VIEW_LARGEICONS 0
  594. #define VIEW_SMALLICONS 1
  595. #define VIEW_LIST 2
  596. #define VIEW_DETAILS 3
  597. #define VIEW_SORTNAME 4
  598. #define VIEW_SORTSIZE 5
  599. #define VIEW_SORTDATE 6
  600. #define VIEW_SORTTYPE 7
  601. #define VIEW_PARENTFOLDER 8
  602. #define VIEW_NETCONNECT 9
  603. #define VIEW_NETDISCONNECT 10
  604. #define VIEW_NEWFOLDER 11
  605. #endif
  606. #define TB_ADDBUTTONS (WM_USER + 20)
  607. #define TB_INSERTBUTTON (WM_USER + 21)
  608. #define TB_DELETEBUTTON (WM_USER + 22)
  609. #define TB_GETBUTTON (WM_USER + 23)
  610. #define TB_BUTTONCOUNT (WM_USER + 24)
  611. #define TB_COMMANDTOINDEX (WM_USER + 25)
  612. #ifdef _WIN32
  613. typedef struct tagTBSAVEPARAMSA {
  614. HKEY hkr;
  615. LPCSTR pszSubKey;
  616. LPCSTR pszValueName;
  617. } TBSAVEPARAMSA, FAR* LPTBSAVEPARAMSA;
  618. typedef struct tagTBSAVEPARAMSW {
  619. HKEY hkr;
  620. LPCWSTR pszSubKey;
  621. LPCWSTR pszValueName;
  622. } TBSAVEPARAMSW, FAR *LPTBSAVEPARAMW;
  623. #ifdef UNICODE
  624. #define TBSAVEPARAMS TBSAVEPARAMSW
  625. #define LPTBSAVEPARAMS LPTBSAVEPARAMSW
  626. #else
  627. #define TBSAVEPARAMS TBSAVEPARAMSA
  628. #define LPTBSAVEPARAMS LPTBSAVEPARAMSA
  629. #endif
  630. #endif
  631. #define TB_SAVERESTOREA (WM_USER + 26)
  632. #define TB_SAVERESTOREW (WM_USER + 76)
  633. #define TB_CUSTOMIZE (WM_USER + 27)
  634. #define TB_ADDSTRINGA (WM_USER + 28)
  635. #define TB_ADDSTRINGW (WM_USER + 77)
  636. #define TB_GETITEMRECT (WM_USER + 29)
  637. #define TB_BUTTONSTRUCTSIZE (WM_USER + 30)
  638. #define TB_SETBUTTONSIZE (WM_USER + 31)
  639. #define TB_SETBITMAPSIZE (WM_USER + 32)
  640. #define TB_AUTOSIZE (WM_USER + 33)
  641. #define TB_SETBUTTONTYPE (WM_USER + 34) // ;Internal
  642. #define TB_GETTOOLTIPS (WM_USER + 35)
  643. #define TB_SETTOOLTIPS (WM_USER + 36)
  644. #define TB_SETPARENT (WM_USER + 37)
  645. #ifdef _WIN32 // ;Internal
  646. #define TB_ADDBITMAP32 (WM_USER + 38) // ;Internal
  647. #endif // ;Internal
  648. #define TB_SETROWS (WM_USER + 39)
  649. #define TB_GETROWS (WM_USER + 40)
  650. #define TB_SETCMDID (WM_USER + 42)
  651. #define TB_CHANGEBITMAP (WM_USER + 43)
  652. #define TB_GETBITMAP (WM_USER + 44)
  653. #define TB_GETBUTTONTEXTA (WM_USER + 45)
  654. #define TB_GETBUTTONTEXTW (WM_USER + 75)
  655. #define TB_REPLACEBITMAP (WM_USER + 46)
  656. #define TB_SETINDENT (WM_USER + 47)
  657. #define TB_SETIMAGELIST (WM_USER + 48)
  658. #define TB_GETIMAGELIST (WM_USER + 49)
  659. #define TB_LOADIMAGES (WM_USER + 50)
  660. #ifdef UNICODE
  661. #define TB_GETBUTTONTEXT TB_GETBUTTONTEXTW
  662. #define TB_SAVERESTORE TB_SAVERESTOREW
  663. #define TB_ADDSTRING TB_ADDSTRINGW
  664. #else
  665. #define TB_GETBUTTONTEXT TB_GETBUTTONTEXTA
  666. #define TB_SAVERESTORE TB_SAVERESTOREA
  667. #define TB_ADDSTRING TB_ADDSTRINGA
  668. #endif
  669. typedef struct {
  670. HINSTANCE hInstOld;
  671. UINT nIDOld;
  672. HINSTANCE hInstNew;
  673. UINT nIDNew;
  674. int nButtons;
  675. } TBREPLACEBITMAP, *LPTBREPLACEBITMAP;
  676. #ifdef _WIN32
  677. #define TBBF_LARGE 0x0001
  678. #define TBBF_MONO 0x0002 /* not supported yet */ // ;Internal
  679. #define TB_GETBITMAPFLAGS (WM_USER + 41)
  680. #define TBN_GETBUTTONINFOA (TBN_FIRST-0)
  681. #define TBN_GETBUTTONINFOW (TBN_FIRST-20)
  682. #define TBN_BEGINDRAG (TBN_FIRST-1)
  683. #define TBN_ENDDRAG (TBN_FIRST-2)
  684. #define TBN_BEGINADJUST (TBN_FIRST-3)
  685. #define TBN_ENDADJUST (TBN_FIRST-4)
  686. #define TBN_RESET (TBN_FIRST-5)
  687. #define TBN_QUERYINSERT (TBN_FIRST-6)
  688. #define TBN_QUERYDELETE (TBN_FIRST-7)
  689. #define TBN_TOOLBARCHANGE (TBN_FIRST-8)
  690. #define TBN_CUSTHELP (TBN_FIRST-9)
  691. #ifdef UNICODE
  692. #define TBN_GETBUTTONINFO TBN_GETBUTTONINFOW
  693. #else
  694. #define TBN_GETBUTTONINFO TBN_GETBUTTONINFOA
  695. #endif
  696. typedef struct tagNMTOOLBARA {
  697. NMHDR hdr;
  698. int iItem;
  699. TBBUTTON tbButton;
  700. int cchText;
  701. LPSTR pszText;
  702. } NMTOOLBARA, FAR* LPNMTOOLBARA;
  703. typedef struct tagNMTOOLBARW {
  704. NMHDR hdr;
  705. int iItem;
  706. TBBUTTON tbButton;
  707. int cchText;
  708. LPWSTR pszText;
  709. } NMTOOLBARW, FAR* LPNMTOOLBARW;
  710. #ifdef UNICODE
  711. #define NMTOOLBAR NMTOOLBARW
  712. #define LPNMTOOLBAR LPNMTOOLBARW
  713. #else
  714. #define NMTOOLBAR NMTOOLBARA
  715. #define LPNMTOOLBAR LPNMTOOLBARA
  716. #endif
  717. #define TBNOTIFYA NMTOOLBARA
  718. #define TBNOTIFYW NMTOOLBARW
  719. #define TBNOTIFY NMTOOLBAR
  720. #define LPTBNOTIFY LPNMTOOLBAR
  721. #define LPTBNOTIFYA LPNMTOOLBARA
  722. #define LPTBNOTIFYW LPNMTOOLBARW
  723. #endif
  724. #ifndef _WIN32 // ;Internal
  725. // for compatibility with the old 16 bit WM_COMMAND hacks // ;Internal
  726. typedef struct _ADJUSTINFO { // ;Internal
  727. TBBUTTON tbButton; // ;Internal
  728. char szDescription[1]; // ;Internal
  729. } ADJUSTINFO, NEAR* PADJUSTINFO, FAR* LPADJUSTINFO; // ;Internal
  730. #define TBN_BEGINDRAG 0x0201 // ;Internal
  731. #define TBN_ENDDRAG 0x0203 // ;Internal
  732. #define TBN_BEGINADJUST 0x0204 // ;Internal
  733. #define TBN_ADJUSTINFO 0x0205 // ;Internal
  734. #define TBN_ENDADJUST 0x0206 // ;Internal
  735. #define TBN_RESET 0x0207 // ;Internal
  736. #define TBN_QUERYINSERT 0x0208 // ;Internal
  737. #define TBN_QUERYDELETE 0x0209 // ;Internal
  738. #define TBN_TOOLBARCHANGE 0x020a // ;Internal
  739. #define TBN_CUSTHELP 0x020b // ;Internal
  740. #endif // ;Internal
  741. // ;Internal
  742. #endif
  743. //====== TOOLTIPS CONTROL =====================================================
  744. #ifndef NOTOOLTIPS
  745. #ifdef _WIN32
  746. #define TOOLTIPS_CLASSW L"tooltips_class32"
  747. #define TOOLTIPS_CLASSA "tooltips_class32"
  748. #ifdef UNICODE
  749. #define TOOLTIPS_CLASS TOOLTIPS_CLASSW
  750. #else
  751. #define TOOLTIPS_CLASS TOOLTIPS_CLASSA
  752. #endif
  753. #else
  754. #define TOOLTIPS_CLASS "tooltips_class"
  755. #endif
  756. typedef struct tagTTTOOLINFOA {
  757. UINT cbSize;
  758. UINT uFlags;
  759. HWND hwnd;
  760. UINT uId;
  761. RECT rect;
  762. HINSTANCE hinst;
  763. LPSTR lpszText;
  764. LPARAM lParam;
  765. } TTTOOLINFOA, NEAR *PTOOLINFOA, FAR *LPTTTOOLINFOA;
  766. typedef struct tagTOOLINFOW {
  767. UINT cbSize;
  768. UINT uFlags;
  769. HWND hwnd;
  770. UINT uId;
  771. RECT rect;
  772. HINSTANCE hinst;
  773. LPWSTR lpszText;
  774. LPARAM lParam;
  775. } TTTOOLINFOW, NEAR *PTOOLINFOW, FAR* LPTTTOOLINFOW;
  776. #ifdef UNICODE
  777. #define TTTOOLINFO TTTOOLINFOW
  778. #define PTOOLINFO PTOOLINFOW
  779. #define LPTTTOOLINFO LPTTTOOLINFOW
  780. #else
  781. #define PTOOLINFO PTOOLINFOA
  782. #define TTTOOLINFO TTTOOLINFOA
  783. #define LPTTTOOLINFO LPTTTOOLINFOA
  784. #endif
  785. #define LPTOOLINFO LPTTTOOLINFO
  786. #define LPTOOLINFOA LPTTTOOLINFOA
  787. #define LPTOOLINFOW LPTTTOOLINFOW
  788. #define TOOLINFO TTTOOLINFO
  789. #define TOOLINFOA TTTOOLINFOA
  790. #define TOOLINFOW TTTOOLINFOW
  791. #define TTS_ALWAYSTIP 0x01
  792. #define TTS_NOPREFIX 0x02
  793. #define TTF_IDISHWND 0x0001
  794. // Use this to center around trackpoint in trackmode
  795. // -OR- to center around tool in normal mode.
  796. // Use TTF_ABSOLUTE to place the tip exactly at the track coords when
  797. // in tracking mode. TTF_ABSOLUTE can be used in conjunction with TTF_CENTERTIP
  798. // to center the tip absolutely about the track point.
  799. #define TTF_CENTERTIP 0x0002
  800. #define TTF_RTLREADING 0x0004
  801. #define TTF_STRIPACCELS 0x0008 // (this is implicit now) // ;Internal
  802. #define TTF_SUBCLASS 0x0010
  803. #define TTF_TRACK 0x0020
  804. #define TTF_UNICODE 0x0040 // Unicode Notify's // ;Internal
  805. #define TTF_ABSOLUTE 0x0080
  806. #define TTF_DI_SETITEM 0x8000 // valid only on the TTN_NEEDTEXT callback
  807. #define TTDT_AUTOMATIC 0
  808. #define TTDT_RESHOW 1
  809. #define TTDT_AUTOPOP 2
  810. #define TTDT_INITIAL 3
  811. #define TTM_ACTIVATE (WM_USER + 1)
  812. #define TTM_SETDELAYTIME (WM_USER + 3)
  813. #define TTM_ADDTOOLA (WM_USER + 4)
  814. #define TTM_ADDTOOLW (WM_USER + 50)
  815. #define TTM_DELTOOLA (WM_USER + 5)
  816. #define TTM_DELTOOLW (WM_USER + 51)
  817. #define TTM_NEWTOOLRECTA (WM_USER + 6)
  818. #define TTM_NEWTOOLRECTW (WM_USER + 52)
  819. #define TTM_RELAYEVENT (WM_USER + 7)
  820. #define TTM_GETTOOLINFOA (WM_USER + 8)
  821. #define TTM_GETTOOLINFOW (WM_USER + 53)
  822. #define TTM_SETTOOLINFOA (WM_USER + 9)
  823. #define TTM_SETTOOLINFOW (WM_USER + 54)
  824. #define TTM_HITTESTA (WM_USER +10)
  825. #define TTM_HITTESTW (WM_USER +55)
  826. #define TTM_GETTEXTA (WM_USER +11)
  827. #define TTM_GETTEXTW (WM_USER +56)
  828. #define TTM_UPDATETIPTEXTA (WM_USER +12)
  829. #define TTM_UPDATETIPTEXTW (WM_USER +57)
  830. #define TTM_GETTOOLCOUNT (WM_USER +13)
  831. #define TTM_ENUMTOOLSA (WM_USER +14)
  832. #define TTM_ENUMTOOLSW (WM_USER +58)
  833. #define TTM_GETCURRENTTOOLA (WM_USER + 15)
  834. #define TTM_GETCURRENTTOOLW (WM_USER + 59)
  835. #define TTM_WINDOWFROMPOINT (WM_USER + 16)
  836. #define TTM_TRACKACTIVATE (WM_USER + 17) // wParam = TRUE/FALSE start end lparam = LPTOOLINFO
  837. #define TTM_TRACKPOSITION (WM_USER + 18) // lParam = dwPos
  838. #define TTM_SETTIPBKCOLOR (WM_USER + 19)
  839. #define TTM_SETTIPTEXTCOLOR (WM_USER + 20)
  840. #define TTM_GETDELAYTIME (WM_USER + 21)
  841. #define TTM_GETTIPBKCOLOR (WM_USER + 22)
  842. #define TTM_GETTIPTEXTCOLOR (WM_USER + 23)
  843. #ifdef UNICODE
  844. #define TTM_ADDTOOL TTM_ADDTOOLW
  845. #define TTM_DELTOOL TTM_DELTOOLW
  846. #define TTM_NEWTOOLRECT TTM_NEWTOOLRECTW
  847. #define TTM_GETTOOLINFO TTM_GETTOOLINFOW
  848. #define TTM_SETTOOLINFO TTM_SETTOOLINFOW
  849. #define TTM_HITTEST TTM_HITTESTW
  850. #define TTM_GETTEXT TTM_GETTEXTW
  851. #define TTM_UPDATETIPTEXT TTM_UPDATETIPTEXTW
  852. #define TTM_ENUMTOOLS TTM_ENUMTOOLSW
  853. #define TTM_GETCURRENTTOOL TTM_GETCURRENTTOOLW
  854. #else
  855. #define TTM_ADDTOOL TTM_ADDTOOLA
  856. #define TTM_DELTOOL TTM_DELTOOLA
  857. #define TTM_NEWTOOLRECT TTM_NEWTOOLRECTA
  858. #define TTM_GETTOOLINFO TTM_GETTOOLINFOA
  859. #define TTM_SETTOOLINFO TTM_SETTOOLINFOA
  860. #define TTM_HITTEST TTM_HITTESTA
  861. #define TTM_GETTEXT TTM_GETTEXTA
  862. #define TTM_UPDATETIPTEXT TTM_UPDATETIPTEXTA
  863. #define TTM_ENUMTOOLS TTM_ENUMTOOLSA
  864. #define TTM_GETCURRENTTOOL TTM_GETCURRENTTOOLA
  865. #endif
  866. typedef struct _TT_HITTESTINFOA {
  867. HWND hwnd;
  868. POINT pt;
  869. TTTOOLINFOA ti;
  870. } TTHITTESTINFOA, FAR * LPTTHITTESTINFOA;
  871. typedef struct _TT_HITTESTINFOW {
  872. HWND hwnd;
  873. POINT pt;
  874. TTTOOLINFOW ti;
  875. } TTHITTESTINFOW, FAR * LPTTHITTESTINFOW;
  876. #define LPHITTESTINFOW LPTTHITTESTINFOW
  877. #define LPHITTESTINFOA LPTTHITTESTINFOA
  878. #define LPHITTESTINFO LPTTHITTESTINFO
  879. #ifdef UNICODE
  880. #define TTHITTESTINFO TTHITTESTINFOW
  881. #define LPTTHITTESTINFO LPTTHITTESTINFOW
  882. #else
  883. #define TTHITTESTINFO TTHITTESTINFOA
  884. #define LPTTHITTESTINFO LPTTHITTESTINFOA
  885. #endif
  886. #define TTN_GETDISPINFOA (TTN_FIRST - 0)
  887. #define TTN_GETDISPINFOW (TTN_FIRST - 10)
  888. #define TTN_SHOW (TTN_FIRST - 1)
  889. #define TTN_POP (TTN_FIRST - 2)
  890. #ifdef UNICODE
  891. #define TTN_GETDISPINFO TTN_GETDISPINFOW
  892. #else
  893. #define TTN_GETDISPINFO TTN_GETDISPINFOA
  894. #endif
  895. #define TTN_NEEDTEXT TTN_GETDISPINFO
  896. #define TTN_NEEDTEXTA TTN_GETDISPINFOA
  897. #define TTN_NEEDTEXTW TTN_GETDISPINFOW
  898. typedef struct tagNMTTDISPIFNOA {
  899. NMHDR hdr;
  900. LPSTR lpszText;
  901. char szText[80];
  902. HINSTANCE hinst;
  903. UINT uFlags;
  904. LPARAM lParam;
  905. } NMTTDISPINFOA, FAR *LPNMTTDISPINFOA;
  906. typedef struct tagNMTTDISPINFOW {
  907. NMHDR hdr;
  908. LPWSTR lpszText;
  909. WCHAR szText[80];
  910. HINSTANCE hinst;
  911. UINT uFlags;
  912. LPARAM lParam;
  913. } NMTTDISPINFOW, FAR *LPNMTTDISPINFOW;
  914. #define TOOLTIPTEXTW NMTTDISPINFOW
  915. #define TOOLTIPTEXTA NMTTDISPINFOA
  916. #define TOOLTIPTEXT NMTTDISPINFO
  917. #define LPTOOLTIPTEXT LPNMTTDISPINFO
  918. #define LPTOOLTIPTEXTA LPNMTTDISPINFOA
  919. #define LPTOOLTIPTEXTW LPNMTTDISPINFOW
  920. #ifdef UNICODE
  921. #define NMTTDISPINFO NMTTDISPINFOW
  922. #define LPNMTTDISPINFO LPNMTTDISPINFOW
  923. #else
  924. #define NMTTDISPINFO NMTTDISPINFOA
  925. #define LPNMTTDISPINFO LPNMTTDISPINFOA
  926. #endif
  927. #endif
  928. //====== STATUS BAR CONTROL ===================================================
  929. #ifndef NOSTATUSBAR
  930. // SBS_* styles need to not overlap with CCS_* values // ;Internal
  931. // ;Internal
  932. #define SBARS_SIZEGRIP 0x0100
  933. WINCOMMCTRLAPI void WINAPI DrawStatusTextA(HDC hDC, LPRECT lprc, LPCSTR pszText, UINT uFlags);
  934. WINCOMMCTRLAPI void WINAPI DrawStatusTextW(HDC hDC, LPRECT lprc, LPCWSTR pszText, UINT uFlags);
  935. WINCOMMCTRLAPI HWND WINAPI CreateStatusWindowA(LONG style, LPCSTR lpszText, HWND hwndParent, UINT wID);
  936. WINCOMMCTRLAPI HWND WINAPI CreateStatusWindowW(LONG style, LPCWSTR lpszText, HWND hwndParent, UINT wID);
  937. #ifdef UNICODE
  938. #define CreateStatusWindow CreateStatusWindowW
  939. #define DrawStatusText DrawStatusTextW
  940. #else
  941. #define CreateStatusWindow CreateStatusWindowA
  942. #define DrawStatusText DrawStatusTextA
  943. #endif
  944. #ifdef _WIN32
  945. #define STATUSCLASSNAMEW L"msctls_statusbar32"
  946. #define STATUSCLASSNAMEA "msctls_statusbar32"
  947. #ifdef UNICODE
  948. #define STATUSCLASSNAME STATUSCLASSNAMEW
  949. #else
  950. #define STATUSCLASSNAME STATUSCLASSNAMEA
  951. #endif
  952. #else
  953. #define STATUSCLASSNAME "msctls_statusbar"
  954. #endif
  955. #define SB_SETTEXTA (WM_USER+1)
  956. #define SB_SETTEXTW (WM_USER+11)
  957. #define SB_GETTEXTA (WM_USER+2)
  958. #define SB_GETTEXTW (WM_USER+13)
  959. #define SB_GETTEXTLENGTHA (WM_USER+3)
  960. #define SB_GETTEXTLENGTHW (WM_USER+12)
  961. #ifdef UNICODE
  962. #define SB_GETTEXT SB_GETTEXTW
  963. #define SB_SETTEXT SB_SETTEXTW
  964. #define SB_GETTEXTLENGTH SB_GETTEXTLENGTHW
  965. #else
  966. #define SB_GETTEXT SB_GETTEXTA
  967. #define SB_SETTEXT SB_SETTEXTA
  968. #define SB_GETTEXTLENGTH SB_GETTEXTLENGTHA
  969. #endif
  970. #define SB_SETPARTS (WM_USER+4)
  971. #define SB_SETBORDERS (WM_USER+5) // ;Internal
  972. #define SB_GETPARTS (WM_USER+6)
  973. #define SB_GETBORDERS (WM_USER+7)
  974. #define SB_SETMINHEIGHT (WM_USER+8)
  975. #define SB_SIMPLE (WM_USER+9)
  976. #define SB_GETRECT (WM_USER+10)
  977. #define SBT_OWNERDRAW 0x1000
  978. #define SBT_NOBORDERS 0x0100
  979. #define SBT_POPOUT 0x0200
  980. #define SBT_RTLREADING 0x0400
  981. #endif
  982. //====== MENU HELP ============================================================
  983. #ifndef NOMENUHELP
  984. WINCOMMCTRLAPI void WINAPI MenuHelp(UINT uMsg, WPARAM wParam, LPARAM lParam, HMENU hMainMenu, HINSTANCE hInst, HWND hwndStatus, UINT FAR *lpwIDs);
  985. WINCOMMCTRLAPI BOOL WINAPI ShowHideMenuCtl(HWND hWnd, UINT uFlags, LPINT lpInfo);
  986. WINCOMMCTRLAPI void WINAPI GetEffectiveClientRect(HWND hWnd, LPRECT lprc, LPINT lpInfo);
  987. /*REVIEW: is this internal? */ // ;Internal
  988. #define MINSYSCOMMAND SC_SIZE
  989. #endif
  990. /*/////////////////////////////////////////////////////////////////////////*/ // ;internal
  991. #ifndef NOBTNLIST // ;internal
  992. /*REVIEW: should be BUTTONLIST_CLASS */ // ;internal
  993. #define BUTTONLISTBOX "ButtonListBox" // ;internal
  994. /* Button List Box Styles */ // ;internal
  995. #define BLS_NUMBUTTONS 0x00FF // ;internal
  996. #define BLS_VERTICAL 0x0100 // ;internal
  997. #define BLS_NOSCROLL 0x0200 // ;internal
  998. /* Button List Box Messages */ // ;internal
  999. #define BL_ADDBUTTON (WM_USER+1) // ;internal
  1000. #define BL_DELETEBUTTON (WM_USER+2) // ;internal
  1001. #define BL_GETCARETINDEX (WM_USER+3) // ;internal
  1002. #define BL_GETCOUNT (WM_USER+4) // ;internal
  1003. #define BL_GETCURSEL (WM_USER+5) // ;internal
  1004. #define BL_GETITEMDATA (WM_USER+6) // ;internal
  1005. #define BL_GETITEMRECT (WM_USER+7) // ;internal
  1006. #define BL_GETTEXT (WM_USER+8) // ;internal
  1007. #define BL_GETTEXTLEN (WM_USER+9) // ;internal
  1008. #define BL_GETTOPINDEX (WM_USER+10) // ;internal
  1009. #define BL_INSERTBUTTON (WM_USER+11) // ;internal
  1010. #define BL_RESETCONTENT (WM_USER+12) // ;internal
  1011. #define BL_SETCARETINDEX (WM_USER+13) // ;internal
  1012. #define BL_SETCURSEL (WM_USER+14) // ;internal
  1013. #define BL_SETITEMDATA (WM_USER+15) // ;internal
  1014. #define BL_SETTOPINDEX (WM_USER+16) // ;internal
  1015. #define BL_MSGMAX (WM_USER+17) // ;internal
  1016. /* Button listbox notification codes send in WM_COMMAND */ // ;internal
  1017. #define BLN_ERRSPACE (-2) // ;internal
  1018. #define BLN_SELCHANGE 1 // ;internal
  1019. #define BLN_CLICKED 2 // ;internal
  1020. #define BLN_SELCANCEL 3 // ;internal
  1021. #define BLN_SETFOCUS 4 // ;internal
  1022. #define BLN_KILLFOCUS 5 // ;internal
  1023. /* Message return values */ // ;internal
  1024. #define BL_OKAY 0 // ;internal
  1025. #define BL_ERR (-1) // ;internal
  1026. #define BL_ERRSPACE (-2) // ;internal
  1027. /* Create structure for */ // ;internal
  1028. /* BL_ADDBUTTON and */ // ;internal
  1029. /* BL_INSERTBUTTON */ // ;internal
  1030. /* lpCLB = (LPCREATELISTBUTTON)lParam */ // ;internal
  1031. typedef struct tagCREATELISTBUTTON { // ;internal
  1032. UINT cbSize; /* size of structure */ // ;internal
  1033. DWORD dwItemData; /* user defined item data */ // ;internal
  1034. /* for LB_GETITEMDATA and LB_SETITEMDATA */ // ;internal
  1035. HBITMAP hBitmap; /* button bitmap */ // ;internal
  1036. LPCSTR lpszText; /* button text */ // ;internal
  1037. } CREATELISTBUTTON, FAR* LPCREATELISTBUTTON; // ;internal
  1038. #endif /* NOBTNLIST */ // ;internal
  1039. //============================================================================= // ;internal
  1040. //====== TRACKBAR CONTROL =====================================================
  1041. #ifndef NOTRACKBAR
  1042. #ifdef _WIN32
  1043. #define TRACKBAR_CLASSA "msctls_trackbar32"
  1044. #define TRACKBAR_CLASSW L"msctls_trackbar32"
  1045. #ifdef UNICODE
  1046. #define TRACKBAR_CLASS TRACKBAR_CLASSW
  1047. #else
  1048. #define TRACKBAR_CLASS TRACKBAR_CLASSA
  1049. #endif
  1050. #else
  1051. #define TRACKBAR_CLASS "msctls_trackbar"
  1052. #endif
  1053. #define TBS_AUTOTICKS 0x0001
  1054. #define TBS_VERT 0x0002
  1055. #define TBS_HORZ 0x0000
  1056. #define TBS_TOP 0x0004
  1057. #define TBS_BOTTOM 0x0000
  1058. #define TBS_LEFT 0x0004
  1059. #define TBS_RIGHT 0x0000
  1060. #define TBS_BOTH 0x0008
  1061. #define TBS_NOTICKS 0x0010
  1062. #define TBS_ENABLESELRANGE 0x0020
  1063. #define TBS_FIXEDLENGTH 0x0040
  1064. #define TBS_NOTHUMB 0x0080
  1065. #define TBS_TOOLTIPS 0x0100
  1066. #define TBM_GETPOS (WM_USER)
  1067. #define TBM_GETRANGEMIN (WM_USER+1)
  1068. #define TBM_GETRANGEMAX (WM_USER+2)
  1069. #define TBM_GETTIC (WM_USER+3)
  1070. #define TBM_SETTIC (WM_USER+4)
  1071. #define TBM_SETPOS (WM_USER+5)
  1072. #define TBM_SETRANGE (WM_USER+6)
  1073. #define TBM_SETRANGEMIN (WM_USER+7)
  1074. #define TBM_SETRANGEMAX (WM_USER+8)
  1075. #define TBM_CLEARTICS (WM_USER+9)
  1076. #define TBM_SETSEL (WM_USER+10)
  1077. #define TBM_SETSELSTART (WM_USER+11)
  1078. #define TBM_SETSELEND (WM_USER+12)
  1079. #define TBM_GETPTICS (WM_USER+14)
  1080. #define TBM_GETTICPOS (WM_USER+15)
  1081. #define TBM_GETNUMTICS (WM_USER+16)
  1082. #define TBM_GETSELSTART (WM_USER+17)
  1083. #define TBM_GETSELEND (WM_USER+18)
  1084. #define TBM_CLEARSEL (WM_USER+19)
  1085. #define TBM_SETTICFREQ (WM_USER+20)
  1086. #define TBM_SETPAGESIZE (WM_USER+21)
  1087. #define TBM_GETPAGESIZE (WM_USER+22)
  1088. #define TBM_SETLINESIZE (WM_USER+23)
  1089. #define TBM_GETLINESIZE (WM_USER+24)
  1090. #define TBM_GETTHUMBRECT (WM_USER+25)
  1091. #define TBM_GETCHANNELRECT (WM_USER+26)
  1092. #define TBM_SETTHUMBLENGTH (WM_USER+27)
  1093. #define TBM_GETTHUMBLENGTH (WM_USER+28)
  1094. #define TBM_SETTOOLTIPS (WM_USER+29)
  1095. #define TBM_GETTOOLTIPS (WM_USER+30)
  1096. #define TBM_SETTIPSIDE (WM_USER+31)
  1097. // TrackBar Tip Side flags
  1098. #define TBTS_TOP 0
  1099. #define TBTS_LEFT 1
  1100. #define TBTS_BOTTOM 2
  1101. #define TBTS_RIGHT 3
  1102. /*REVIEW: these match the SB_ (scroll bar messages); define them that way? */ // ;Internal
  1103. // ;Internal
  1104. #define TB_LINEUP 0
  1105. #define TB_LINEDOWN 1
  1106. #define TB_PAGEUP 2
  1107. #define TB_PAGEDOWN 3
  1108. #define TB_THUMBPOSITION 4
  1109. #define TB_THUMBTRACK 5
  1110. #define TB_TOP 6
  1111. #define TB_BOTTOM 7
  1112. #define TB_ENDTRACK 8
  1113. // custom draw item specs
  1114. #define TBCD_TICS 0x0001
  1115. #define TBCD_THUMB 0x0002
  1116. #define TBCD_CHANNEL 0x0003
  1117. #endif // trackbar
  1118. //====== DRAG LIST CONTROL ====================================================
  1119. #ifndef NODRAGLIST
  1120. typedef struct tagDRAGLISTINFO {
  1121. UINT uNotification;
  1122. HWND hWnd;
  1123. POINT ptCursor;
  1124. } DRAGLISTINFO, FAR *LPDRAGLISTINFO;
  1125. #define DL_BEGINDRAG (WM_USER+133)
  1126. #define DL_DRAGGING (WM_USER+134)
  1127. #define DL_DROPPED (WM_USER+135)
  1128. #define DL_CANCELDRAG (WM_USER+136)
  1129. #define DL_CURSORSET 0
  1130. #define DL_STOPCURSOR 1
  1131. #define DL_COPYCURSOR 2
  1132. #define DL_MOVECURSOR 3
  1133. // // ;internal
  1134. // Unnecessary to create a A and W version // ;internal
  1135. // of this string since it is only passed // ;internal
  1136. // to RegisterWindowMessage. // ;internal
  1137. // // ;internal
  1138. #define DRAGLISTMSGSTRING TEXT("commctrl_DragListMsg")
  1139. WINCOMMCTRLAPI BOOL WINAPI MakeDragList(HWND hLB);
  1140. WINCOMMCTRLAPI void WINAPI DrawInsert(HWND handParent, HWND hLB, int nItem);
  1141. // BUGBUG -- there's a message to do this now -- just macro-ize this one // ;Internal
  1142. WINCOMMCTRLAPI int WINAPI LBItemFromPt(HWND hLB, POINT pt, BOOL bAutoScroll);
  1143. #endif
  1144. //====== UPDOWN CONTROL =======================================================
  1145. #ifndef NOUPDOWN
  1146. #ifdef _WIN32
  1147. #define UPDOWN_CLASSA "msctls_updown32"
  1148. #define UPDOWN_CLASSW L"msctls_updown32"
  1149. #ifdef UNICODE
  1150. #define UPDOWN_CLASS UPDOWN_CLASSW
  1151. #else
  1152. #define UPDOWN_CLASS UPDOWN_CLASSA
  1153. #endif
  1154. #else
  1155. #define UPDOWN_CLASS "msctls_updown"
  1156. #endif
  1157. typedef struct _UDACCEL {
  1158. UINT nSec;
  1159. UINT nInc;
  1160. } UDACCEL, FAR *LPUDACCEL;
  1161. #define UD_MAXVAL 0x7fff
  1162. #define UD_MINVAL (-UD_MAXVAL)
  1163. #define UDS_WRAP 0x0001
  1164. #define UDS_SETBUDDYINT 0x0002
  1165. #define UDS_ALIGNRIGHT 0x0004
  1166. #define UDS_ALIGNLEFT 0x0008
  1167. #define UDS_AUTOBUDDY 0x0010
  1168. #define UDS_ARROWKEYS 0x0020
  1169. #define UDS_HORZ 0x0040
  1170. #define UDS_NOTHOUSANDS 0x0080
  1171. #define UDM_SETRANGE (WM_USER+101)
  1172. #define UDM_GETRANGE (WM_USER+102)
  1173. #define UDM_SETPOS (WM_USER+103)
  1174. #define UDM_GETPOS (WM_USER+104)
  1175. #define UDM_SETBUDDY (WM_USER+105)
  1176. #define UDM_GETBUDDY (WM_USER+106)
  1177. #define UDM_SETACCEL (WM_USER+107)
  1178. #define UDM_GETACCEL (WM_USER+108)
  1179. #define UDM_SETBASE (WM_USER+109)
  1180. #define UDM_GETBASE (WM_USER+110)
  1181. WINCOMMCTRLAPI HWND WINAPI CreateUpDownControl(DWORD dwStyle, int x, int y, int cx, int cy,
  1182. HWND hParent, int nID, HINSTANCE hInst,
  1183. HWND hBuddy,
  1184. int nUpper, int nLower, int nPos);
  1185. typedef struct _NM_UPDOWN
  1186. {
  1187. NMHDR hdr;
  1188. int iPos;
  1189. int iDelta;
  1190. } NMUPDOWN, FAR *LPNMUPDOWN;
  1191. #define NM_UPDOWN NMUPDOWN
  1192. #define LPNM_UPDOWN LPNMUPDOWN
  1193. #define UDN_DELTAPOS (UDN_FIRST - 1)
  1194. #endif
  1195. //====== PROGRESS CONTROL =====================================================
  1196. #ifndef NOPROGRESS
  1197. #ifdef _WIN32
  1198. #define PROGRESS_CLASSA "msctls_progress32"
  1199. #define PROGRESS_CLASSW L"msctls_progress32"
  1200. #ifdef UNICODE
  1201. #define PROGRESS_CLASS PROGRESS_CLASSW
  1202. #else
  1203. #define PROGRESS_CLASS PROGRESS_CLASSA
  1204. #endif
  1205. #else
  1206. #define PROGRESS_CLASS "msctls_progress"
  1207. #endif
  1208. #define PBS_SHOWPERCENT 0x01 // ;Internal
  1209. #define PBS_SHOWPOS 0x02 // ;Internal
  1210. // ;Internal
  1211. // ;Internal
  1212. #define PBS_SMOOTH 0x01
  1213. #define PBS_VERTICAL 0x04
  1214. #define PBM_SETRANGE (WM_USER+1)
  1215. #define PBM_SETPOS (WM_USER+2)
  1216. #define PBM_DELTAPOS (WM_USER+3)
  1217. #define PBM_SETSTEP (WM_USER+4)
  1218. #define PBM_STEPIT (WM_USER+5)
  1219. #endif
  1220. //====== HOTKEY CONTROL =======================================================
  1221. #ifndef NOHOTKEY
  1222. #define HOTKEYF_SHIFT 0x01
  1223. #define HOTKEYF_CONTROL 0x02
  1224. #define HOTKEYF_ALT 0x04
  1225. #define HOTKEYF_EXT 0x08
  1226. #define HKCOMB_NONE 0x0001
  1227. #define HKCOMB_S 0x0002
  1228. #define HKCOMB_C 0x0004
  1229. #define HKCOMB_A 0x0008
  1230. #define HKCOMB_SC 0x0010
  1231. #define HKCOMB_SA 0x0020
  1232. #define HKCOMB_CA 0x0040
  1233. #define HKCOMB_SCA 0x0080
  1234. #define HKM_SETHOTKEY (WM_USER+1)
  1235. #define HKM_GETHOTKEY (WM_USER+2)
  1236. #define HKM_SETRULES (WM_USER+3)
  1237. #ifdef _WIN32
  1238. #define HOTKEY_CLASSA "msctls_hotkey32"
  1239. #define HOTKEY_CLASSW L"msctls_hotkey32"
  1240. #ifdef UNICODE
  1241. #define HOTKEY_CLASS HOTKEY_CLASSW
  1242. #else
  1243. #define HOTKEY_CLASS HOTKEY_CLASSA
  1244. #endif
  1245. #else
  1246. #define HOTKEY_CLASS "msctls_hotkey"
  1247. #endif
  1248. #endif
  1249. //====== COMMON CONTROL STYLES ================================================
  1250. #define CCS_TOP 0x00000001L
  1251. #define CCS_NOMOVEY 0x00000002L
  1252. #define CCS_BOTTOM 0x00000003L
  1253. #define CCS_NORESIZE 0x00000004L
  1254. #define CCS_NOPARENTALIGN 0x00000008L
  1255. #define CCS_NOHILITE 0x00000010L // ;Internal
  1256. #define CCS_ADJUSTABLE 0x00000020L
  1257. #define CCS_NODIVIDER 0x00000040L
  1258. //====== LISTVIEW CONTROL =====================================================
  1259. #ifndef NOLISTVIEW
  1260. #ifdef _WIN32
  1261. #define WC_LISTVIEWA "SysListView32"
  1262. #define WC_LISTVIEWW L"SysListView32"
  1263. #ifdef UNICODE
  1264. #define WC_LISTVIEW WC_LISTVIEWW
  1265. #else
  1266. #define WC_LISTVIEW WC_LISTVIEWA
  1267. #endif
  1268. #else
  1269. #define WC_LISTVIEW "SysListView"
  1270. #endif
  1271. #define LVS_PRIVATEIMAGELISTS 0x0000 // ;internal
  1272. #define LVS_ICON 0x0000
  1273. #define LVS_REPORT 0x0001
  1274. #define LVS_SMALLICON 0x0002
  1275. #define LVS_LIST 0x0003
  1276. #define LVS_TYPEMASK 0x0003
  1277. #define LVS_SINGLESEL 0x0004
  1278. #define LVS_SHOWSELALWAYS 0x0008
  1279. #define LVS_SORTASCENDING 0x0010
  1280. #define LVS_SORTDESCENDING 0x0020
  1281. #define LVS_SHAREIMAGELISTS 0x0040 // ;internal
  1282. #define LVS_NOLABELWRAP 0x0080
  1283. #define LVS_AUTOARRANGE 0x0100
  1284. #define LVS_EDITLABELS 0x0200
  1285. #define LVS_OWNERDATA 0x1000
  1286. #define LVS_NOSCROLL 0x2000
  1287. #define LVS_TYPESTYLEMASK 0xfc00
  1288. #define LVS_ALIGNTOP 0x0000
  1289. #define LVS_ALIGNBOTTOM 0x0400 // ;Internal
  1290. #define LVS_ALIGNLEFT 0x0800
  1291. #define LVS_ALIGNRIGHT 0x0c00 // ;Internal
  1292. #define LVS_ALIGNMASK 0x0c00
  1293. #define LVS_OWNERDRAWFIXED 0x0400
  1294. #define LVS_NOCOLUMNHEADER 0x4000
  1295. #define LVS_NOSORTHEADER 0x8000
  1296. #define LVM_GETBKCOLOR (LVM_FIRST + 0)
  1297. #define ListView_GetBkColor(hwnd) \
  1298. (COLORREF)SendMessage((hwnd), LVM_GETBKCOLOR, 0, 0L)
  1299. #define LVM_SETBKCOLOR (LVM_FIRST + 1)
  1300. #define ListView_SetBkColor(hwnd, clrBk) \
  1301. (BOOL)SendMessage((hwnd), LVM_SETBKCOLOR, 0, (LPARAM)(COLORREF)(clrBk))
  1302. #define LVM_GETIMAGELIST (LVM_FIRST + 2)
  1303. #define ListView_GetImageList(hwnd, iImageList) \
  1304. (HIMAGELIST)SendMessage((hwnd), LVM_GETIMAGELIST, (WPARAM)(INT)(iImageList), 0L)
  1305. #define LVSIL_NORMAL 0
  1306. #define LVSIL_SMALL 1
  1307. #define LVSIL_STATE 2
  1308. #define LVM_SETIMAGELIST (LVM_FIRST + 3)
  1309. #define ListView_SetImageList(hwnd, himl, iImageList) \
  1310. (HIMAGELIST)(UINT)SendMessage((hwnd), LVM_SETIMAGELIST, (WPARAM)(iImageList), (LPARAM)(UINT)(HIMAGELIST)(himl))
  1311. #define LVM_GETITEMCOUNT (LVM_FIRST + 4)
  1312. #define ListView_GetItemCount(hwnd) \
  1313. (int)SendMessage((hwnd), LVM_GETITEMCOUNT, 0, 0L)
  1314. #define LVIF_TEXT 0x0001
  1315. #define LVIF_IMAGE 0x0002
  1316. #define LVIF_PARAM 0x0004
  1317. #define LVIF_STATE 0x0008
  1318. #define LVIF_INDENT 0x0010
  1319. #define LVIF_ALL 0x001f // ;Internal
  1320. #define LVIF_RESERVED 0xf000 // all bits in high nibble is for notify specific stuff // ;Internal
  1321. #define LVIS_FOCUSED 0x0001
  1322. #define LVIS_SELECTED 0x0002
  1323. #define LVIS_CUT 0x0004
  1324. #define LVIS_DROPHILITED 0x0008
  1325. #define LVIS_DISABLED 0x0010 // GOING AWAY // ;Internal
  1326. #define LVIS_LINK 0x0040 // ;Internal
  1327. #define LVIS_OVERLAYMASK 0x0F00
  1328. #define LVIS_STATEIMAGEMASK 0xF000
  1329. #define LVIS_USERMASK LVIS_STATEIMAGEMASK // BUGBUG: remove me. // ;Internal
  1330. #define LVIS_ALL 0xFFFF // ;Internal
  1331. #define INDEXTOSTATEIMAGEMASK(i) ((i) << 12)
  1332. #define I_INDENTCALLBACK (-1)
  1333. typedef struct tagLVITEMA
  1334. {
  1335. UINT mask;
  1336. int iItem;
  1337. int iSubItem;
  1338. UINT state;
  1339. UINT stateMask;
  1340. LPSTR pszText;
  1341. int cchTextMax;
  1342. int iImage;
  1343. LPARAM lParam;
  1344. // all items above this line were for win95. don't touch them. // ;Internal
  1345. int iIndent;
  1346. } LVITEMA, FAR* LPLVITEMA;
  1347. #define LV_ITEMA LVITEMA
  1348. typedef struct tagLVITEMW
  1349. {
  1350. UINT mask;
  1351. int iItem;
  1352. int iSubItem;
  1353. UINT state;
  1354. UINT stateMask;
  1355. LPWSTR pszText;
  1356. int cchTextMax;
  1357. int iImage;
  1358. LPARAM lParam;
  1359. // all items above this line were for win95. don't touch them. // ;Internal
  1360. int iIndent;
  1361. } LVITEMW, FAR* LPLVITEMW;
  1362. #define LV_ITEMW LVITEMW
  1363. #define LV_ITEM LVITEM
  1364. #ifdef UNICODE
  1365. #define LVITEM LVITEMW
  1366. #else
  1367. #define LVITEM LVITEMA
  1368. #endif
  1369. #define LPSTR_TEXTCALLBACKW ((LPWSTR)-1L)
  1370. #define LPSTR_TEXTCALLBACKA ((LPSTR)-1L)
  1371. #ifdef UNICODE
  1372. #define LPSTR_TEXTCALLBACK LPSTR_TEXTCALLBACKW
  1373. #else
  1374. #define LPSTR_TEXTCALLBACK LPSTR_TEXTCALLBACKA
  1375. #endif
  1376. #define I_IMAGECALLBACK (-1)
  1377. #define LVM_GETITEMA (LVM_FIRST + 5)
  1378. #define LVM_GETITEMW (LVM_FIRST + 75)
  1379. #ifdef UNICODE
  1380. #define LVM_GETITEM LVM_GETITEMW
  1381. #else
  1382. #define LVM_GETITEM LVM_GETITEMA
  1383. #endif
  1384. #define ListView_GetItem(hwnd, pitem) \
  1385. (BOOL)SendMessage((hwnd), LVM_GETITEM, 0, (LPARAM)(LV_ITEM FAR*)(pitem))
  1386. #define LVM_SETITEMA (LVM_FIRST + 6)
  1387. #define LVM_SETITEMW (LVM_FIRST + 76)
  1388. #ifdef UNICODE
  1389. #define LVM_SETITEM LVM_SETITEMW
  1390. #else
  1391. #define LVM_SETITEM LVM_SETITEMA
  1392. #endif
  1393. #define ListView_SetItem(hwnd, pitem) \
  1394. (BOOL)SendMessage((hwnd), LVM_SETITEM, 0, (LPARAM)(const LV_ITEM FAR*)(pitem))
  1395. #define LVM_INSERTITEMA (LVM_FIRST + 7)
  1396. #define LVM_INSERTITEMW (LVM_FIRST + 77)
  1397. #ifdef UNICODE
  1398. #define LVM_INSERTITEM LVM_INSERTITEMW
  1399. #else
  1400. #define LVM_INSERTITEM LVM_INSERTITEMA
  1401. #endif
  1402. #define ListView_InsertItem(hwnd, pitem) \
  1403. (int)SendMessage((hwnd), LVM_INSERTITEM, 0, (LPARAM)(const LV_ITEM FAR*)(pitem))
  1404. #define LVM_DELETEITEM (LVM_FIRST + 8)
  1405. #define ListView_DeleteItem(hwnd, i) \
  1406. (BOOL)SendMessage((hwnd), LVM_DELETEITEM, (WPARAM)(int)(i), 0L)
  1407. #define LVM_DELETEALLITEMS (LVM_FIRST + 9)
  1408. #define ListView_DeleteAllItems(hwnd) \
  1409. (BOOL)SendMessage((hwnd), LVM_DELETEALLITEMS, 0, 0L)
  1410. #define LVM_GETCALLBACKMASK (LVM_FIRST + 10)
  1411. #define ListView_GetCallbackMask(hwnd) \
  1412. (BOOL)SendMessage((hwnd), LVM_GETCALLBACKMASK, 0, 0)
  1413. #define LVM_SETCALLBACKMASK (LVM_FIRST + 11)
  1414. #define ListView_SetCallbackMask(hwnd, mask) \
  1415. (BOOL)SendMessage((hwnd), LVM_SETCALLBACKMASK, (WPARAM)(UINT)(mask), 0)
  1416. #define LVNI_ALL 0x0000
  1417. #define LVNI_FOCUSED 0x0001
  1418. #define LVNI_SELECTED 0x0002
  1419. #define LVNI_CUT 0x0004
  1420. #define LVNI_DROPHILITED 0x0008
  1421. #define LVNI_PREVIOUS 0x0020 // ;Internal
  1422. #define LVNI_ABOVE 0x0100
  1423. #define LVNI_BELOW 0x0200
  1424. #define LVNI_TOLEFT 0x0400
  1425. #define LVNI_TORIGHT 0x0800
  1426. #define LVM_GETNEXTITEM (LVM_FIRST + 12)
  1427. #define ListView_GetNextItem(hwnd, i, flags) \
  1428. (int)SendMessage((hwnd), LVM_GETNEXTITEM, (WPARAM)(int)(i), MAKELPARAM((flags), 0))
  1429. #define LVFI_PARAM 0x0001
  1430. #define LVFI_STRING 0x0002
  1431. #define LVFI_SUBSTRING 0x0004 // ;Internal
  1432. #define LVFI_PARTIAL 0x0008
  1433. #define LVFI_NOCASE 0x0010 // ;Internal
  1434. #define LVFI_WRAP 0x0020
  1435. #define LVFI_NEARESTXY 0x0040
  1436. typedef struct tagLVFINDINFOA
  1437. {
  1438. UINT flags;
  1439. LPCSTR psz;
  1440. LPARAM lParam;
  1441. POINT pt;
  1442. UINT vkDirection;
  1443. } LVFINDINFOA, FAR* LPFINDINFOA;
  1444. #define LV_FINDINFOA LVFINDINFOA
  1445. typedef struct tagLVFINDINFOW
  1446. {
  1447. UINT flags;
  1448. LPCWSTR psz;
  1449. LPARAM lParam;
  1450. POINT pt;
  1451. UINT vkDirection;
  1452. } LVFINDINFOW, FAR* LPFINDINFOW;
  1453. #define LV_FINDINFOW LVFINDINFOW
  1454. #define LV_FINDINFO LVFINDINFO
  1455. #ifdef UNICODE
  1456. #define LVFINDINFO LVFINDINFOW
  1457. #else
  1458. #define LVFINDINFO LVFINDINFOA
  1459. #endif
  1460. #define LVM_FINDITEMA (LVM_FIRST + 13)
  1461. #define LVM_FINDITEMW (LVM_FIRST + 83)
  1462. #ifdef UNICODE
  1463. #define LVM_FINDITEM LVM_FINDITEMW
  1464. #else
  1465. #define LVM_FINDITEM LVM_FINDITEMA
  1466. #endif
  1467. #define ListView_FindItem(hwnd, iStart, plvfi) \
  1468. (int)SendMessage((hwnd), LVM_FINDITEM, (WPARAM)(int)(iStart), (LPARAM)(const LV_FINDINFO FAR*)(plvfi))
  1469. // the following #define's must be packed sequentially. // ;Internal
  1470. #define LVIR_BOUNDS 0
  1471. #define LVIR_ICON 1
  1472. #define LVIR_LABEL 2
  1473. #define LVIR_SELECTBOUNDS 3
  1474. #define LVIR_MAX 4 // ;Internal
  1475. #define LVM_GETITEMRECT (LVM_FIRST + 14)
  1476. #define ListView_GetItemRect(hwnd, i, prc, code) \
  1477. (BOOL)SendMessage((hwnd), LVM_GETITEMRECT, (WPARAM)(int)(i), \
  1478. ((prc) ? (((RECT FAR *)(prc))->left = (code),(LPARAM)(RECT FAR*)(prc)) : (LPARAM)(RECT FAR*)NULL))
  1479. #define LVM_SETITEMPOSITION (LVM_FIRST + 15)
  1480. #define ListView_SetItemPosition(hwndLV, i, x, y) \
  1481. (BOOL)SendMessage((hwndLV), LVM_SETITEMPOSITION, (WPARAM)(int)(i), MAKELPARAM((x), (y)))
  1482. #define LVM_GETITEMPOSITION (LVM_FIRST + 16)
  1483. #define ListView_GetItemPosition(hwndLV, i, ppt) \
  1484. (BOOL)SendMessage((hwndLV), LVM_GETITEMPOSITION, (WPARAM)(int)(i), (LPARAM)(POINT FAR*)(ppt))
  1485. #define LVM_GETSTRINGWIDTHA (LVM_FIRST + 17)
  1486. #define LVM_GETSTRINGWIDTHW (LVM_FIRST + 87)
  1487. #ifdef UNICODE
  1488. #define LVM_GETSTRINGWIDTH LVM_GETSTRINGWIDTHW
  1489. #else
  1490. #define LVM_GETSTRINGWIDTH LVM_GETSTRINGWIDTHA
  1491. #endif
  1492. #define ListView_GetStringWidth(hwndLV, psz) \
  1493. (int)SendMessage((hwndLV), LVM_GETSTRINGWIDTH, 0, (LPARAM)(LPCTSTR)(psz))
  1494. #define LVHT_NOWHERE 0x0001
  1495. #define LVHT_ONITEMICON 0x0002
  1496. #define LVHT_ONITEMLABEL 0x0004
  1497. #define LVHT_ONITEMSTATEICON 0x0008
  1498. #define LVHT_ONITEM (LVHT_ONITEMICON | LVHT_ONITEMLABEL | LVHT_ONITEMSTATEICON)
  1499. #define LVHT_ABOVE 0x0008
  1500. #define LVHT_BELOW 0x0010
  1501. #define LVHT_TORIGHT 0x0020
  1502. #define LVHT_TOLEFT 0x0040
  1503. typedef struct tagLVHITTESTINFO
  1504. {
  1505. POINT pt;
  1506. UINT flags;
  1507. int iItem;
  1508. } LVHITTESTINFO, FAR* LPLVHITTESTINFO;
  1509. #define LV_HITTESTINFO LVHITTESTINFO
  1510. #define LVM_HITTEST (LVM_FIRST + 18)
  1511. #define ListView_HitTest(hwndLV, pinfo) \
  1512. (int)SendMessage((hwndLV), LVM_HITTEST, 0, (LPARAM)(LV_HITTESTINFO FAR*)(pinfo))
  1513. #define LVM_ENSUREVISIBLE (LVM_FIRST + 19)
  1514. #define ListView_EnsureVisible(hwndLV, i, fPartialOK) \
  1515. (BOOL)SendMessage((hwndLV), LVM_ENSUREVISIBLE, (WPARAM)(int)(i), MAKELPARAM((fPartialOK), 0))
  1516. #define LVM_SCROLL (LVM_FIRST + 20)
  1517. #define ListView_Scroll(hwndLV, dx, dy) \
  1518. (BOOL)SendMessage((hwndLV), LVM_SCROLL, (WPARAM)(int)dx, (LPARAM)(int)dy)
  1519. #define LVM_REDRAWITEMS (LVM_FIRST + 21)
  1520. #define ListView_RedrawItems(hwndLV, iFirst, iLast) \
  1521. (BOOL)SendMessage((hwndLV), LVM_REDRAWITEMS, (WPARAM)(int)iFirst, (LPARAM)(int)iLast)
  1522. #define LVA_DEFAULT 0x0000
  1523. #define LVA_ALIGNLEFT 0x0001
  1524. #define LVA_ALIGNTOP 0x0002
  1525. #define LVA_ALIGNRIGHT 0x0003 // ;Internal
  1526. #define LVA_ALIGNBOTTOM 0x0004 // ;Internal
  1527. #define LVA_SNAPTOGRID 0x0005
  1528. #define LVA_ALIGNMASK 0x0007 // ;Internal
  1529. #define LVA_SORTASCENDING 0x0100 // ;Internal
  1530. #define LVA_SORTDESCENDING 0x0200 // ;Internal
  1531. #define LVM_ARRANGE (LVM_FIRST + 22)
  1532. #define ListView_Arrange(hwndLV, code) \
  1533. (BOOL)SendMessage((hwndLV), LVM_ARRANGE, (WPARAM)(UINT)(code), 0L)
  1534. #define LVM_EDITLABELA (LVM_FIRST + 23)
  1535. #define LVM_EDITLABELW (LVM_FIRST + 118)
  1536. #ifdef UNICODE
  1537. #define LVM_EDITLABEL LVM_EDITLABELW
  1538. #else
  1539. #define LVM_EDITLABEL LVM_EDITLABELA
  1540. #endif
  1541. #define ListView_EditLabel(hwndLV, i) \
  1542. (HWND)SendMessage((hwndLV), LVM_EDITLABEL, (WPARAM)(int)(i), 0L)
  1543. #define LVM_GETEDITCONTROL (LVM_FIRST + 24)
  1544. #define ListView_GetEditControl(hwndLV) \
  1545. (HWND)SendMessage((hwndLV), LVM_GETEDITCONTROL, 0, 0L)
  1546. typedef struct tagLVCOLUMNA
  1547. {
  1548. UINT mask;
  1549. int fmt;
  1550. int cx;
  1551. LPSTR pszText;
  1552. int cchTextMax;
  1553. int iSubItem;
  1554. // all items above this line were for win95. don't touch them. // ;Internal
  1555. int iImage;
  1556. } LVCOLUMNA, FAR* LPLVCOLUMNA;
  1557. typedef struct tagLVCOLUMNW
  1558. {
  1559. UINT mask;
  1560. int fmt;
  1561. int cx;
  1562. LPWSTR pszText;
  1563. int cchTextMax;
  1564. int iSubItem;
  1565. // all items above this line were for win95. don't touch them. // ;Internal
  1566. int iImage;
  1567. } LVCOLUMNW, FAR* LPLVCOLUMNW;
  1568. #ifdef UNICODE
  1569. #define LVCOLUMN LVCOLUMNW
  1570. #define LPLVCOLUMN LPLVCOLUMNW
  1571. #else
  1572. #define LVCOLUMN LVCOLUMNA
  1573. #define LPLVCOLUMN LPLVCOLUMNA
  1574. #endif
  1575. #define LV_COLUMN LVCOLUMN
  1576. #define LV_COLUMNA LVCOLUMNA
  1577. #define LV_COLUMNW LVCOLUMNW
  1578. #define LVCF_FMT 0x0001
  1579. #define LVCF_WIDTH 0x0002
  1580. #define LVCF_TEXT 0x0004
  1581. #define LVCF_SUBITEM 0x0008
  1582. #define LVCF_IMAGE 0x0010
  1583. #define LVCF_ALL 0x001f // ;Internal
  1584. #define LVCFMT_LEFT 0x0000
  1585. #define LVCFMT_RIGHT 0x0001
  1586. #define LVCFMT_CENTER 0x0002
  1587. #define LVCFMT_JUSTIFYMASK 0x0003
  1588. #define LVCFMT_BITMAP_ON_RIGHT 0x1000
  1589. #define LVM_GETCOLUMNA (LVM_FIRST + 25)
  1590. #define LVM_GETCOLUMNW (LVM_FIRST + 95)
  1591. #ifdef UNICODE
  1592. #define LVM_GETCOLUMN LVM_GETCOLUMNW
  1593. #else
  1594. #define LVM_GETCOLUMN LVM_GETCOLUMNA
  1595. #endif
  1596. #define ListView_GetColumn(hwnd, iCol, pcol) \
  1597. (BOOL)SendMessage((hwnd), LVM_GETCOLUMN, (WPARAM)(int)(iCol), (LPARAM)(LV_COLUMN FAR*)(pcol))
  1598. #define LVM_SETCOLUMNA (LVM_FIRST + 26)
  1599. #define LVM_SETCOLUMNW (LVM_FIRST + 96)
  1600. #ifdef UNICODE
  1601. #define LVM_SETCOLUMN LVM_SETCOLUMNW
  1602. #else
  1603. #define LVM_SETCOLUMN LVM_SETCOLUMNA
  1604. #endif
  1605. #define ListView_SetColumn(hwnd, iCol, pcol) \
  1606. (BOOL)SendMessage((hwnd), LVM_SETCOLUMN, (WPARAM)(int)(iCol), (LPARAM)(const LV_COLUMN FAR*)(pcol))
  1607. #define LVM_INSERTCOLUMNA (LVM_FIRST + 27)
  1608. #define LVM_INSERTCOLUMNW (LVM_FIRST + 97)
  1609. #ifdef UNICODE
  1610. # define LVM_INSERTCOLUMN LVM_INSERTCOLUMNW
  1611. #else
  1612. # define LVM_INSERTCOLUMN LVM_INSERTCOLUMNA
  1613. #endif
  1614. #define ListView_InsertColumn(hwnd, iCol, pcol) \
  1615. (int)SendMessage((hwnd), LVM_INSERTCOLUMN, (WPARAM)(int)(iCol), (LPARAM)(const LV_COLUMN FAR*)(pcol))
  1616. #define LVM_DELETECOLUMN (LVM_FIRST + 28)
  1617. #define ListView_DeleteColumn(hwnd, iCol) \
  1618. (BOOL)SendMessage((hwnd), LVM_DELETECOLUMN, (WPARAM)(int)(iCol), 0)
  1619. #define LVM_GETCOLUMNWIDTH (LVM_FIRST + 29)
  1620. #define ListView_GetColumnWidth(hwnd, iCol) \
  1621. (int)SendMessage((hwnd), LVM_GETCOLUMNWIDTH, (WPARAM)(int)(iCol), 0)
  1622. #define LVSCW_AUTOSIZE -1
  1623. #define LVSCW_AUTOSIZE_USEHEADER -2
  1624. #define LVM_SETCOLUMNWIDTH (LVM_FIRST + 30)
  1625. #define ListView_SetColumnWidth(hwnd, iCol, cx) \
  1626. (BOOL)SendMessage((hwnd), LVM_SETCOLUMNWIDTH, (WPARAM)(int)(iCol), MAKELPARAM((cx), 0))
  1627. #define LVM_CREATEDRAGIMAGE (LVM_FIRST + 33)
  1628. #define ListView_CreateDragImage(hwnd, i, lpptUpLeft) \
  1629. (HIMAGELIST)SendMessage((hwnd), LVM_CREATEDRAGIMAGE, (WPARAM)(int)(i), (LPARAM)(LPPOINT)(lpptUpLeft))
  1630. #define LVM_GETVIEWRECT (LVM_FIRST + 34)
  1631. #define ListView_GetViewRect(hwnd, prc) \
  1632. (BOOL)SendMessage((hwnd), LVM_GETVIEWRECT, 0, (LPARAM)(RECT FAR*)(prc))
  1633. #define LVM_GETTEXTCOLOR (LVM_FIRST + 35)
  1634. #define ListView_GetTextColor(hwnd) \
  1635. (COLORREF)SendMessage((hwnd), LVM_GETTEXTCOLOR, 0, 0L)
  1636. #define LVM_SETTEXTCOLOR (LVM_FIRST + 36)
  1637. #define ListView_SetTextColor(hwnd, clrText) \
  1638. (BOOL)SendMessage((hwnd), LVM_SETTEXTCOLOR, 0, (LPARAM)(COLORREF)(clrText))
  1639. #define LVM_GETTEXTBKCOLOR (LVM_FIRST + 37)
  1640. #define ListView_GetTextBkColor(hwnd) \
  1641. (COLORREF)SendMessage((hwnd), LVM_GETTEXTBKCOLOR, 0, 0L)
  1642. #define LVM_SETTEXTBKCOLOR (LVM_FIRST + 38)
  1643. #define ListView_SetTextBkColor(hwnd, clrTextBk) \
  1644. (BOOL)SendMessage((hwnd), LVM_SETTEXTBKCOLOR, 0, (LPARAM)(COLORREF)(clrTextBk))
  1645. #define LVM_GETTOPINDEX (LVM_FIRST + 39)
  1646. #define ListView_GetTopIndex(hwndLV) \
  1647. (int)SendMessage((hwndLV), LVM_GETTOPINDEX, 0, 0)
  1648. #define LVM_GETCOUNTPERPAGE (LVM_FIRST + 40)
  1649. #define ListView_GetCountPerPage(hwndLV) \
  1650. (int)SendMessage((hwndLV), LVM_GETCOUNTPERPAGE, 0, 0)
  1651. #define LVM_GETORIGIN (LVM_FIRST + 41)
  1652. #define ListView_GetOrigin(hwndLV, ppt) \
  1653. (BOOL)SendMessage((hwndLV), LVM_GETORIGIN, (WPARAM)0, (LPARAM)(POINT FAR*)(ppt))
  1654. #define LVM_UPDATE (LVM_FIRST + 42)
  1655. #define ListView_Update(hwndLV, i) \
  1656. (BOOL)SendMessage((hwndLV), LVM_UPDATE, (WPARAM)i, 0L)
  1657. #define LVM_SETITEMSTATE (LVM_FIRST + 43)
  1658. #define ListView_SetItemState(hwndLV, i, data, mask) \
  1659. { LV_ITEM _ms_lvi;\
  1660. _ms_lvi.stateMask = mask;\
  1661. _ms_lvi.state = data;\
  1662. SendMessage((hwndLV), LVM_SETITEMSTATE, (WPARAM)i, (LPARAM)(LV_ITEM FAR *)&_ms_lvi);\
  1663. }
  1664. #define LVM_GETITEMSTATE (LVM_FIRST + 44)
  1665. #define ListView_GetItemState(hwndLV, i, mask) \
  1666. (UINT)SendMessage((hwndLV), LVM_GETITEMSTATE, (WPARAM)i, (LPARAM)mask)
  1667. #define LVM_GETITEMTEXTA (LVM_FIRST + 45)
  1668. #define LVM_GETITEMTEXTW (LVM_FIRST + 115)
  1669. #ifdef UNICODE
  1670. #define LVM_GETITEMTEXT LVM_GETITEMTEXTW
  1671. #else
  1672. #define LVM_GETITEMTEXT LVM_GETITEMTEXTA
  1673. #endif
  1674. #define ListView_GetItemText(hwndLV, i, iSubItem_, pszText_, cchTextMax_) \
  1675. { LV_ITEM _ms_lvi;\
  1676. _ms_lvi.iSubItem = iSubItem_;\
  1677. _ms_lvi.cchTextMax = cchTextMax_;\
  1678. _ms_lvi.pszText = pszText_;\
  1679. SendMessage((hwndLV), LVM_GETITEMTEXT, (WPARAM)i, (LPARAM)(LV_ITEM FAR *)&_ms_lvi);\
  1680. }
  1681. #define LVM_SETITEMTEXTA (LVM_FIRST + 46)
  1682. #define LVM_SETITEMTEXTW (LVM_FIRST + 116)
  1683. #ifdef UNICODE
  1684. #define LVM_SETITEMTEXT LVM_SETITEMTEXTW
  1685. #else
  1686. #define LVM_SETITEMTEXT LVM_SETITEMTEXTA
  1687. #endif
  1688. #define ListView_SetItemText(hwndLV, i, iSubItem_, pszText_) \
  1689. { LV_ITEM _ms_lvi;\
  1690. _ms_lvi.iSubItem = iSubItem_;\
  1691. _ms_lvi.pszText = pszText_;\
  1692. SendMessage((hwndLV), LVM_SETITEMTEXT, (WPARAM)i, (LPARAM)(LV_ITEM FAR *)&_ms_lvi);\
  1693. }
  1694. #define LVM_SETITEMCOUNT (LVM_FIRST + 47)
  1695. #define ListView_SetItemCount(hwndLV, cItems) \
  1696. SendMessage((hwndLV), LVM_SETITEMCOUNT, (WPARAM)cItems, 0)
  1697. typedef int (CALLBACK *PFNLVCOMPARE)(LPARAM, LPARAM, LPARAM);
  1698. #define LVM_SORTITEMS (LVM_FIRST + 48)
  1699. #define ListView_SortItems(hwndLV, _pfnCompare, _lPrm) \
  1700. (BOOL)SendMessage((hwndLV), LVM_SORTITEMS, (WPARAM)(LPARAM)_lPrm, \
  1701. (LPARAM)(PFNLVCOMPARE)_pfnCompare)
  1702. #define LVM_SETITEMPOSITION32 (LVM_FIRST + 49)
  1703. #define ListView_SetItemPosition32(hwndLV, i, x, y) \
  1704. { POINT ptNewPos = {x,y}; \
  1705. SendMessage((hwndLV), LVM_SETITEMPOSITION32, (WPARAM)(int)(i), (LPARAM)&ptNewPos); \
  1706. }
  1707. #define LVM_GETSELECTEDCOUNT (LVM_FIRST + 50)
  1708. #define ListView_GetSelectedCount(hwndLV) \
  1709. (UINT)SendMessage((hwndLV), LVM_GETSELECTEDCOUNT, 0, 0L)
  1710. #define LVM_GETITEMSPACING (LVM_FIRST + 51)
  1711. #define ListView_GetItemSpacing(hwndLV, fSmall) \
  1712. (DWORD)SendMessage((hwndLV), LVM_GETITEMSPACING, fSmall, 0L)
  1713. #define LVM_GETISEARCHSTRINGA (LVM_FIRST + 52)
  1714. #define LVM_GETISEARCHSTRINGW (LVM_FIRST + 117)
  1715. #ifdef UNICODE
  1716. #define LVM_GETISEARCHSTRING LVM_GETISEARCHSTRINGW
  1717. #else
  1718. #define LVM_GETISEARCHSTRING LVM_GETISEARCHSTRINGA
  1719. #endif
  1720. #define ListView_GetISearchString(hwndLV, lpsz) \
  1721. (BOOL)SendMessage((hwndLV), LVM_GETISEARCHSTRING, 0, (LPARAM)(LPTSTR)lpsz)
  1722. #define LVM_SETICONSPACING (LVM_FIRST + 53)
  1723. // -1 for cx and cy means we'll use the default (system settings)
  1724. // 0 for cx or cy means use the current setting (allows you to change just one param)
  1725. #define ListView_SetIconSpacing(hwndLV, cx, cy) \
  1726. (BOOL)SendMessage((hwndLV), LVM_SETICONSPACING, 0, MAKELONG(cx,cy))
  1727. #define LVM_SETEXTENDEDLISTVIEWSTYLE (LVM_FIRST + 54)
  1728. #define ListView_SetExtendedListViewStyle(hwndLV, dw)\
  1729. (void)SendMessage((hwndLV), LVM_SETEXTENDEDLISTVIEWSTYLE, 0, dw)
  1730. #define LVM_GETEXTENDEDLISTVIEWSTYLE (LVM_FIRST + 55)
  1731. #define ListView_GetExtendedListViewStyle(hwndLV)\
  1732. (void)SendMessage((hwndLV), LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0)
  1733. #define LVS_EX_GRIDLINES 0x000000001
  1734. #define LVS_EX_SUBITEMIMAGES 0x000000002
  1735. typedef struct tagNMLISTVIEW
  1736. {
  1737. NMHDR hdr;
  1738. int iItem;
  1739. int iSubItem;
  1740. UINT uNewState;
  1741. UINT uOldState;
  1742. UINT uChanged;
  1743. POINT ptAction;
  1744. LPARAM lParam;
  1745. } NMLISTVIEW, FAR *LPNMLISTVIEW;
  1746. #define LPNM_LISTVIEW LPNMLISTVIEW
  1747. #define NM_LISTVIEW NMLISTVIEW
  1748. typedef struct tagNMLVCACHEHINT
  1749. {
  1750. NMHDR hdr;
  1751. int iFrom;
  1752. int iTo;
  1753. } NMLVCACHEHINT, FAR *LPNMLVCACHEHINT;
  1754. #define LPNM_CACHEHINT LPNMLVCACHEHINT
  1755. #define PNM_CACHEHINT LPNMLVCACHEHINT
  1756. #define NM_CACHEHINT NMLVCACHEHINT
  1757. typedef struct tagNMLVFINDITEM
  1758. {
  1759. NMHDR hdr;
  1760. int iStart;
  1761. LVFINDINFO lvfi;
  1762. } NMLVFINDITEM, FAR *LPNMLVFINDITEM;
  1763. #define PNM_FINDITEM LPNMLVFINDITEM
  1764. #define LPNM_FINDITEM LPNMLVFINDITEM
  1765. #define NM_FINDITEM NMLVFINDITEM
  1766. #define LVN_ITEMCHANGING (LVN_FIRST-0)
  1767. #define LVN_ITEMCHANGED (LVN_FIRST-1)
  1768. #define LVN_INSERTITEM (LVN_FIRST-2)
  1769. #define LVN_DELETEITEM (LVN_FIRST-3)
  1770. #define LVN_DELETEALLITEMS (LVN_FIRST-4)
  1771. #define LVN_BEGINLABELEDITA (LVN_FIRST-5)
  1772. #define LVN_BEGINLABELEDITW (LVN_FIRST-75)
  1773. #define LVN_ENDLABELEDITA (LVN_FIRST-6)
  1774. #define LVN_ENDLABELEDITW (LVN_FIRST-76)
  1775. #define LVN_COLUMNCLICK (LVN_FIRST-8)
  1776. #define LVN_BEGINDRAG (LVN_FIRST-9)
  1777. #define LVN_ENDDRAG (LVN_FIRST-10) // ;Internal
  1778. #define LVN_BEGINRDRAG (LVN_FIRST-11)
  1779. #define LVN_ENDRDRAG (LVN_FIRST-12) // ;Internal
  1780. #define LVN_ODCACHEHINT (LVN_FIRST-13)
  1781. #define LVN_ODFINDITEMA (LVN_FIRST-52)
  1782. #define LVN_ODFINDITEMW (LVN_FIRST-79)
  1783. #ifdef UNICODE
  1784. #define LVN_ODFINDITEM LVN_ODFINDITEMW
  1785. #else
  1786. #define LVN_ODFINDITEM LVN_ODFINDITEMA
  1787. #endif
  1788. #ifdef PW2 // ;Internal
  1789. #define LVN_PEN (LVN_FIRST-20) // ;Internal
  1790. #endif // ;Internal
  1791. #define LVN_GETDISPINFOA (LVN_FIRST-50)
  1792. #define LVN_GETDISPINFOW (LVN_FIRST-77)
  1793. #define LVN_SETDISPINFOA (LVN_FIRST-51)
  1794. #define LVN_SETDISPINFOW (LVN_FIRST-78)
  1795. #ifdef UNICODE
  1796. #define LVN_BEGINLABELEDIT LVN_BEGINLABELEDITW
  1797. #define LVN_ENDLABELEDIT LVN_ENDLABELEDITW
  1798. #define LVN_GETDISPINFO LVN_GETDISPINFOW
  1799. #define LVN_SETDISPINFO LVN_SETDISPINFOW
  1800. #else
  1801. #define LVN_BEGINLABELEDIT LVN_BEGINLABELEDITA
  1802. #define LVN_ENDLABELEDIT LVN_ENDLABELEDITA
  1803. #define LVN_GETDISPINFO LVN_GETDISPINFOA
  1804. #define LVN_SETDISPINFO LVN_SETDISPINFOA
  1805. #endif
  1806. #define LVIF_DI_SETITEM 0x1000
  1807. typedef struct tagLVDISPINFO {
  1808. NMHDR hdr;
  1809. LVITEMA item;
  1810. } NMLVDISPINFOA, FAR *LPNMLVDISPINFOA;
  1811. typedef struct tagLVDISPINFOW {
  1812. NMHDR hdr;
  1813. LVITEMW item;
  1814. } NMLVDISPINFOW, FAR * LPNMLVDISPINFOW;
  1815. #define LV_DISPINFOA NMLVDISPINFOA
  1816. #define LV_DISPINFOW NMLVDISPINFOW
  1817. #define LV_DISPINFO NMLVDISPINFO
  1818. #ifdef UNICODE
  1819. #define NMLVDISPINFO NMLVDISPINFOW
  1820. #else
  1821. #define NMLVDISPINFO NMLVDISPINFOA
  1822. #endif
  1823. #define LVN_KEYDOWN (LVN_FIRST-55)
  1824. typedef struct tagLVKEYDOWN
  1825. {
  1826. NMHDR hdr;
  1827. WORD wVKey;
  1828. UINT flags;
  1829. } NMLVKEYDOWN, FAR *LPNMLVKEYDOWN;
  1830. #define LV_KEYDOWN NMLVKEYDOWN
  1831. #endif
  1832. //====== TREEVIEW CONTROL =====================================================
  1833. #ifndef NOTREEVIEW
  1834. #ifdef _WIN32
  1835. #define WC_TREEVIEWA "SysTreeView32"
  1836. #define WC_TREEVIEWW L"SysTreeView32"
  1837. #ifdef UNICODE
  1838. #define WC_TREEVIEW WC_TREEVIEWW
  1839. #else
  1840. #define WC_TREEVIEW WC_TREEVIEWA
  1841. #endif
  1842. #else
  1843. #define WC_TREEVIEW "SysTreeView"
  1844. #endif
  1845. #define TVS_HASBUTTONS 0x0001
  1846. #define TVS_HASLINES 0x0002
  1847. #define TVS_LINESATROOT 0x0004
  1848. #define TVS_EDITLABELS 0x0008
  1849. #define TVS_DISABLEDRAGDROP 0x0010
  1850. #define TVS_SHOWSELALWAYS 0x0020
  1851. #define TVS_SHAREDIMAGELISTS 0x0000
  1852. #define TVS_PRIVATEIMAGELISTS 0x0040
  1853. #define TVS_NOTOOLTIPS 0x0080
  1854. typedef struct _TREEITEM FAR* HTREEITEM;
  1855. #define TVIF_TEXT 0x0001
  1856. #define TVIF_IMAGE 0x0002
  1857. #define TVIF_PARAM 0x0004
  1858. #define TVIF_STATE 0x0008
  1859. #define TVIF_HANDLE 0x0010
  1860. #define TVIF_SELECTEDIMAGE 0x0020
  1861. #define TVIF_CHILDREN 0x0040
  1862. #define TVIF_ALL 0x007F // ;Internal
  1863. #define TVIF_RESERVED 0xf000 // all bits in high nibble is for notify specific stuff // ;Internal
  1864. #define TVIS_FOCUSED 0x0001
  1865. #define TVIS_SELECTED 0x0002
  1866. #define TVIS_CUT 0x0004
  1867. #define TVIS_DROPHILITED 0x0008
  1868. #define TVIS_BOLD 0x0010
  1869. #define TVIS_EXPANDED 0x0020
  1870. #define TVIS_EXPANDEDONCE 0x0040
  1871. #define TVIS_DISABLED 0 // GOING AWAY // ;Internal
  1872. #define TVIS_OVERLAYMASK 0x0F00
  1873. #define TVIS_STATEIMAGEMASK 0xF000
  1874. #define TVIS_USERMASK 0xF000
  1875. #define TVIS_ALL 0xFF7f // ;Internal
  1876. #define I_CHILDRENCALLBACK (-1)
  1877. typedef struct tagTVITEMA {
  1878. UINT mask;
  1879. HTREEITEM hItem;
  1880. UINT state;
  1881. UINT stateMask;
  1882. LPSTR pszText;
  1883. int cchTextMax;
  1884. int iImage;
  1885. int iSelectedImage;
  1886. int cChildren;
  1887. LPARAM lParam;
  1888. // all items above this line were for win95. don't touch them. // ;Internal
  1889. } TVITEMA, FAR *LPTVITEMA;
  1890. typedef struct tagTVITEMW {
  1891. UINT mask;
  1892. HTREEITEM hItem;
  1893. UINT state;
  1894. UINT stateMask;
  1895. LPWSTR pszText;
  1896. int cchTextMax;
  1897. int iImage;
  1898. int iSelectedImage;
  1899. int cChildren;
  1900. LPARAM lParam;
  1901. // all items above this line were for win95. don't touch them. // ;Internal
  1902. } TVITEMW, FAR *LPTVITEMW;
  1903. #define LPTV_ITEMW LPTVITEMW
  1904. #define LPTV_ITEMA LPTVITEMA
  1905. #define LPTV_ITEM LPTVITEM
  1906. #define TV_ITEMW TVITEMW
  1907. #define TV_ITEMA TVITEMA
  1908. #define TV_ITEM TVITEM
  1909. #ifdef UNICODE
  1910. #define TVITEM TVITEMW
  1911. #define LPTVITEM LPTVITEMW
  1912. #else
  1913. #define TVITEM TVITEMA
  1914. #define LPTVITEM LPTVITEMA
  1915. #endif
  1916. #define TVI_ROOT ((HTREEITEM)0xFFFF0000)
  1917. #define TVI_FIRST ((HTREEITEM)0xFFFF0001)
  1918. #define TVI_LAST ((HTREEITEM)0xFFFF0002)
  1919. #define TVI_SORT ((HTREEITEM)0xFFFF0003)
  1920. typedef struct tagTVINSERTSTRUCTA {
  1921. HTREEITEM hParent;
  1922. HTREEITEM hInsertAfter;
  1923. TV_ITEMA item;
  1924. } TVINSERTSTRUCTA, FAR *LPTVINSERTSTRUCTA;
  1925. typedef struct tagTVINSERTSTRUCTW {
  1926. HTREEITEM hParent;
  1927. HTREEITEM hInsertAfter;
  1928. TV_ITEMW item;
  1929. } TVINSERTSTRUCTW, FAR *LPTVINSERTSTRUCTW;
  1930. #define LPTV_INSERTSTRUCTA LPTVINSERTSTRUCTA
  1931. #define LPTV_INSERTSTRUCTW LPTVINSERTSTRUCTW
  1932. #define LPTV_INSERTSTRUCT LPTVINSERTSTRUCT
  1933. #define TV_INSERTSTRUCTA TVINSERTSTRUCTA
  1934. #define TV_INSERTSTRUCTW TVINSERTSTRUCTW
  1935. #define TV_INSERTSTRUCT TVINSERTSTRUCT
  1936. #ifdef UNICODE
  1937. #define TVINSERTSTRUCT TVINSERTSTRUCTW
  1938. #define LPTVINSERTSTRUCT LPTVINSERTSTRUCTW
  1939. #else
  1940. #define TVINSERTSTRUCT TVINSERTSTRUCTA
  1941. #define LPTVINSERTSTRUCT LPTVINSERTSTRUCTA
  1942. #endif
  1943. #define TVM_INSERTITEMA (TV_FIRST + 0)
  1944. #define TVM_INSERTITEMW (TV_FIRST + 50)
  1945. #ifdef UNICODE
  1946. #define TVM_INSERTITEM TVM_INSERTITEMW
  1947. #else
  1948. #define TVM_INSERTITEM TVM_INSERTITEMA
  1949. #endif
  1950. #define TreeView_InsertItem(hwnd, lpis) \
  1951. (HTREEITEM)SendMessage((hwnd), TVM_INSERTITEM, 0, (LPARAM)(LPTV_INSERTSTRUCT)(lpis))
  1952. #define TVM_DELETEITEM (TV_FIRST + 1)
  1953. #define TreeView_DeleteItem(hwnd, hitem) \
  1954. (BOOL)SendMessage((hwnd), TVM_DELETEITEM, 0, (LPARAM)(HTREEITEM)(hitem))
  1955. #define TreeView_DeleteAllItems(hwnd) \
  1956. (BOOL)SendMessage((hwnd), TVM_DELETEITEM, 0, (LPARAM)TVI_ROOT)
  1957. #define TVM_EXPAND (TV_FIRST + 2)
  1958. #define TreeView_Expand(hwnd, hitem, code) \
  1959. (BOOL)SendMessage((hwnd), TVM_EXPAND, (WPARAM)code, (LPARAM)(HTREEITEM)(hitem))
  1960. #define TVE_COLLAPSE 0x0001
  1961. #define TVE_EXPAND 0x0002
  1962. #define TVE_TOGGLE 0x0003
  1963. #define TVE_ACTIONMASK 0x0007 // (TVE_COLLAPSE | TVE_EXPAND | TVE_TOGGLE) // ;Internal
  1964. #define TVE_COLLAPSERESET 0x8000
  1965. #define TV_FINDITEM (TV_FIRST + 3) // BUGBUG: Not implemented // ;Internal
  1966. #define TVM_GETITEMRECT (TV_FIRST + 4)
  1967. #define TreeView_GetItemRect(hwnd, hitem, prc, code) \
  1968. (*(HTREEITEM FAR *)prc = (hitem), (BOOL)SendMessage((hwnd), TVM_GETITEMRECT, (WPARAM)(code), (LPARAM)(RECT FAR*)(prc)))
  1969. #define TVM_GETCOUNT (TV_FIRST + 5)
  1970. #define TreeView_GetCount(hwnd) \
  1971. (UINT)SendMessage((hwnd), TVM_GETCOUNT, 0, 0)
  1972. #define TVM_GETINDENT (TV_FIRST + 6)
  1973. #define TreeView_GetIndent(hwnd) \
  1974. (UINT)SendMessage((hwnd), TVM_GETINDENT, 0, 0)
  1975. #define TVM_SETINDENT (TV_FIRST + 7)
  1976. #define TreeView_SetIndent(hwnd, indent) \
  1977. (BOOL)SendMessage((hwnd), TVM_SETINDENT, (WPARAM)indent, 0)
  1978. #define TVM_GETIMAGELIST (TV_FIRST + 8)
  1979. #define TreeView_GetImageList(hwnd, iImage) \
  1980. (HIMAGELIST)SendMessage((hwnd), TVM_GETIMAGELIST, iImage, 0)
  1981. #define TVSIL_NORMAL 0
  1982. #define TVSIL_STATE 2
  1983. #define TVM_SETIMAGELIST (TV_FIRST + 9)
  1984. #define TreeView_SetImageList(hwnd, himl, iImage) \
  1985. (HIMAGELIST)SendMessage((hwnd), TVM_SETIMAGELIST, iImage, (LPARAM)(UINT)(HIMAGELIST)(himl))
  1986. #define TVM_GETNEXTITEM (TV_FIRST + 10)
  1987. #define TreeView_GetNextItem(hwnd, hitem, code) \
  1988. (HTREEITEM)SendMessage((hwnd), TVM_GETNEXTITEM, (WPARAM)code, (LPARAM)(HTREEITEM)(hitem))
  1989. #define TVGN_ROOT 0x0000
  1990. #define TVGN_NEXT 0x0001
  1991. #define TVGN_PREVIOUS 0x0002
  1992. #define TVGN_PARENT 0x0003
  1993. #define TVGN_CHILD 0x0004
  1994. #define TVGN_FIRSTVISIBLE 0x0005
  1995. #define TVGN_NEXTVISIBLE 0x0006
  1996. #define TVGN_PREVIOUSVISIBLE 0x0007
  1997. #define TVGN_DROPHILITE 0x0008
  1998. #define TVGN_CARET 0x0009
  1999. #define TreeView_GetChild(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_CHILD)
  2000. #define TreeView_GetNextSibling(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_NEXT)
  2001. #define TreeView_GetPrevSibling(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_PREVIOUS)
  2002. #define TreeView_GetParent(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_PARENT)
  2003. #define TreeView_GetFirstVisible(hwnd) TreeView_GetNextItem(hwnd, NULL, TVGN_FIRSTVISIBLE)
  2004. #define TreeView_GetNextVisible(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_NEXTVISIBLE)
  2005. #define TreeView_GetPrevVisible(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_PREVIOUSVISIBLE)
  2006. #define TreeView_GetSelection(hwnd) TreeView_GetNextItem(hwnd, NULL, TVGN_CARET)
  2007. #define TreeView_GetDropHilight(hwnd) TreeView_GetNextItem(hwnd, NULL, TVGN_DROPHILITE)
  2008. #define TreeView_GetRoot(hwnd) TreeView_GetNextItem(hwnd, NULL, TVGN_ROOT)
  2009. #define TVM_SELECTITEM (TV_FIRST + 11)
  2010. #define TreeView_Select(hwnd, hitem, code) \
  2011. (HTREEITEM)SendMessage((hwnd), TVM_SELECTITEM, (WPARAM)code, (LPARAM)(HTREEITEM)(hitem))
  2012. #define TreeView_SelectItem(hwnd, hitem) TreeView_Select(hwnd, hitem, TVGN_CARET)
  2013. #define TreeView_SelectDropTarget(hwnd, hitem) TreeView_Select(hwnd, hitem, TVGN_DROPHILITE)
  2014. #define TreeView_SelectSetFirstVisible(hwnd, hitem) TreeView_Select(hwnd, hitem, TVGN_FIRSTVISIBLE)
  2015. #define TVM_GETITEMA (TV_FIRST + 12)
  2016. #define TVM_GETITEMW (TV_FIRST + 62)
  2017. #ifdef UNICODE
  2018. #define TVM_GETITEM TVM_GETITEMW
  2019. #else
  2020. #define TVM_GETITEM TVM_GETITEMA
  2021. #endif
  2022. #define TreeView_GetItem(hwnd, pitem) \
  2023. (BOOL)SendMessage((hwnd), TVM_GETITEM, 0, (LPARAM)(TV_ITEM FAR*)(pitem))
  2024. #define TVM_SETITEMA (TV_FIRST + 13)
  2025. #define TVM_SETITEMW (TV_FIRST + 63)
  2026. #ifdef UNICODE
  2027. #define TVM_SETITEM TVM_SETITEMW
  2028. #else
  2029. #define TVM_SETITEM TVM_SETITEMA
  2030. #endif
  2031. #define TreeView_SetItem(hwnd, pitem) \
  2032. (BOOL)SendMessage((hwnd), TVM_SETITEM, 0, (LPARAM)(const TV_ITEM FAR*)(pitem))
  2033. #define TVM_EDITLABELA (TV_FIRST + 14)
  2034. #define TVM_EDITLABELW (TV_FIRST + 65)
  2035. #ifdef UNICODE
  2036. #define TVM_EDITLABEL TVM_EDITLABELW
  2037. #else
  2038. #define TVM_EDITLABEL TVM_EDITLABELA
  2039. #endif
  2040. #define TreeView_EditLabel(hwnd, hitem) \
  2041. (HWND)SendMessage((hwnd), TVM_EDITLABEL, 0, (LPARAM)(HTREEITEM)(hitem))
  2042. #define TVM_GETEDITCONTROL (TV_FIRST + 15)
  2043. #define TreeView_GetEditControl(hwnd) \
  2044. (HWND)SendMessage((hwnd), TVM_GETEDITCONTROL, 0, 0)
  2045. #define TVM_GETVISIBLECOUNT (TV_FIRST + 16)
  2046. #define TreeView_GetVisibleCount(hwnd) \
  2047. (UINT)SendMessage((hwnd), TVM_GETVISIBLECOUNT, 0, 0)
  2048. #define TVM_HITTEST (TV_FIRST + 17)
  2049. #define TreeView_HitTest(hwnd, lpht) \
  2050. (HTREEITEM)SendMessage((hwnd), TVM_HITTEST, 0, (LPARAM)(LPTV_HITTESTINFO)(lpht))
  2051. typedef struct tagTVHITTESTINFO {
  2052. POINT pt;
  2053. UINT flags;
  2054. HTREEITEM hItem;
  2055. } TVHITTESTINFO, FAR *LPTVHITTESTINFO;
  2056. #define LPTV_HITTESTINFO LPTVHITTESTINFO
  2057. #define TV_HITTESTINFO TVHITTESTINFO
  2058. #define TVHT_NOWHERE 0x0001
  2059. #define TVHT_ONITEMICON 0x0002
  2060. #define TVHT_ONITEMLABEL 0x0004
  2061. #define TVHT_ONITEM (TVHT_ONITEMICON | TVHT_ONITEMLABEL | TVHT_ONITEMSTATEICON)
  2062. #define TVHT_ONITEMINDENT 0x0008
  2063. #define TVHT_ONITEMBUTTON 0x0010
  2064. #define TVHT_ONITEMRIGHT 0x0020
  2065. #define TVHT_ONITEMSTATEICON 0x0040
  2066. #define TVHT_ABOVE 0x0100
  2067. #define TVHT_BELOW 0x0200
  2068. #define TVHT_TORIGHT 0x0400
  2069. #define TVHT_TOLEFT 0x0800
  2070. #define TVM_CREATEDRAGIMAGE (TV_FIRST + 18)
  2071. #define TreeView_CreateDragImage(hwnd, hitem) \
  2072. (HIMAGELIST)SendMessage((hwnd), TVM_CREATEDRAGIMAGE, 0, (LPARAM)(HTREEITEM)(hitem))
  2073. #define TVM_SORTCHILDREN (TV_FIRST + 19)
  2074. #define TreeView_SortChildren(hwnd, hitem, recurse) \
  2075. (BOOL)SendMessage((hwnd), TVM_SORTCHILDREN, (WPARAM)recurse, (LPARAM)(HTREEITEM)(hitem))
  2076. #define TVM_ENSUREVISIBLE (TV_FIRST + 20)
  2077. #define TreeView_EnsureVisible(hwnd, hitem) \
  2078. (BOOL)SendMessage((hwnd), TVM_ENSUREVISIBLE, 0, (LPARAM)(HTREEITEM)(hitem))
  2079. #define TVM_SORTCHILDRENCB (TV_FIRST + 21)
  2080. #define TreeView_SortChildrenCB(hwnd, psort, recurse) \
  2081. (BOOL)SendMessage((hwnd), TVM_SORTCHILDRENCB, (WPARAM)recurse, \
  2082. (LPARAM)(LPTV_SORTCB)(psort))
  2083. #define TVM_ENDEDITLABELNOW (TV_FIRST + 22)
  2084. #define TreeView_EndEditLabelNow(hwnd, fCancel) \
  2085. (BOOL)SendMessage((hwnd), TVM_ENDEDITLABELNOW, (WPARAM)fCancel, 0)
  2086. #define TVM_GETISEARCHSTRINGA (TV_FIRST + 23)
  2087. #define TVM_GETISEARCHSTRINGW (TV_FIRST + 64)
  2088. #ifdef UNICODE
  2089. #define TVM_GETISEARCHSTRING TVM_GETISEARCHSTRINGW
  2090. #else
  2091. #define TVM_GETISEARCHSTRING TVM_GETISEARCHSTRINGA
  2092. #endif
  2093. #define TVM_SETTOOLTIPS (TV_FIRST + 24)
  2094. #define TVM_GETTOOLTIPS (TV_FIRST + 25)
  2095. #define TreeView_GetISearchString(hwndTV, lpsz) \
  2096. (BOOL)SendMessage((hwndTV), TVM_GETISEARCHSTRING, 0, (LPARAM)(LPTSTR)lpsz)
  2097. typedef int (CALLBACK *PFNTVCOMPARE)(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);
  2098. typedef struct tagTVSORTCB
  2099. {
  2100. HTREEITEM hParent;
  2101. PFNTVCOMPARE lpfnCompare;
  2102. LPARAM lParam;
  2103. } TVSORTCB, FAR *LPTVSORTCB;
  2104. #define LPTV_SORTCB LPTVSORTCB
  2105. #define TV_SORTCB TVSORTCB
  2106. typedef struct tagNMTREEVIEWA {
  2107. NMHDR hdr;
  2108. UINT action;
  2109. TVITEMA itemOld;
  2110. TVITEMA itemNew;
  2111. POINT ptDrag;
  2112. } NMTREEVIEWA, FAR *LPNMTREEVIEWA;
  2113. typedef struct tagNMTREEVIEWW {
  2114. NMHDR hdr;
  2115. UINT action;
  2116. TVITEMW itemOld;
  2117. TVITEMW itemNew;
  2118. POINT ptDrag;
  2119. } NMTREEVIEWW, FAR *LPNMTREEVIEWW;
  2120. #define LPNM_TREEVIEWA LPNMTREEVIEWA
  2121. #define LPNM_TREEVIEWW LPNMTREEVIEWW
  2122. #define LPNM_TREEVIEW LPNMTREEVIEW
  2123. #define NM_TREEVIEWW NMTREEVIEWW
  2124. #define NM_TREEVIEWA NMTREEVIEWA
  2125. #define NM_TREEVIEW NMTREEVIEW
  2126. #ifdef UNICODE
  2127. #define NMTREEVIEW NMTREEVIEWW
  2128. #define LPNMTREEVIEW LPNMTREEVIEWW
  2129. #else
  2130. #define NMTREEVIEW NMTREEVIEWA
  2131. #define LPNMTREEVIEW LPNMTREEVIEWA
  2132. #endif
  2133. #define TVN_SELCHANGINGA (TVN_FIRST-1)
  2134. #define TVN_SELCHANGINGW (TVN_FIRST-50)
  2135. #define TVN_SELCHANGEDA (TVN_FIRST-2)
  2136. #define TVN_SELCHANGEDW (TVN_FIRST-51)
  2137. #define TVC_UNKNOWN 0x0000
  2138. #define TVC_BYMOUSE 0x0001
  2139. #define TVC_BYKEYBOARD 0x0002
  2140. #define TVN_GETDISPINFOA (TVN_FIRST-3)
  2141. #define TVN_GETDISPINFOW (TVN_FIRST-52)
  2142. #define TVN_SETDISPINFOA (TVN_FIRST-4)
  2143. #define TVN_SETDISPINFOW (TVN_FIRST-53)
  2144. #define TVIF_DI_SETITEM 0x1000
  2145. typedef struct tagTVDISPINFOA {
  2146. NMHDR hdr;
  2147. TVITEMA item;
  2148. } NMTVDISPINFOA, FAR *LPNMTVDISPINFOA;
  2149. typedef struct tagTVDISPINFOW {
  2150. NMHDR hdr;
  2151. TVITEMW item;
  2152. } NMTVDISPINFOW, FAR *LPNMTVDISPINFOW;
  2153. #define TV_DISPINFOA NMTVDISPINFOA
  2154. #define TV_DISPINFOW NMTVDISPINFOW
  2155. #define TV_DISPINFO NMTVDISPINFO
  2156. #ifdef UNICODE
  2157. #define NMTVDISPINFO NMTVDISPINFOW
  2158. #define LPNMTVDISPINFO LPNMTVDISPINFOW
  2159. #else
  2160. #define NMTVDISPINFO NMTVDISPINFOA
  2161. #define LPNMTVDISPINFO LPNMTVDISPINFOA
  2162. #endif
  2163. #define TVN_ITEMEXPANDINGA (TVN_FIRST-5)
  2164. #define TVN_ITEMEXPANDINGW (TVN_FIRST-54)
  2165. #define TVN_ITEMEXPANDEDA (TVN_FIRST-6)
  2166. #define TVN_ITEMEXPANDEDW (TVN_FIRST-55)
  2167. #define TVN_BEGINDRAGA (TVN_FIRST-7)
  2168. #define TVN_BEGINDRAGW (TVN_FIRST-56)
  2169. #define TVN_BEGINRDRAGA (TVN_FIRST-8)
  2170. #define TVN_BEGINRDRAGW (TVN_FIRST-57)
  2171. #define TVN_DELETEITEMA (TVN_FIRST-9)
  2172. #define TVN_DELETEITEMW (TVN_FIRST-58)
  2173. #define TVN_BEGINLABELEDITA (TVN_FIRST-10)
  2174. #define TVN_BEGINLABELEDITW (TVN_FIRST-59)
  2175. #define TVN_ENDLABELEDITA (TVN_FIRST-11)
  2176. #define TVN_ENDLABELEDITW (TVN_FIRST-60)
  2177. #define TVN_KEYDOWN (TVN_FIRST-12)
  2178. typedef struct tagTVKEYDOWN {
  2179. NMHDR hdr;
  2180. WORD wVKey;
  2181. UINT flags;
  2182. } NMTVKEYDOWN, FAR *LPNMTVKEYDOWN;
  2183. #define TV_KEYDOWN NMTVKEYDOWN
  2184. #ifdef UNICODE
  2185. #define TVN_SELCHANGING TVN_SELCHANGINGW
  2186. #define TVN_SELCHANGED TVN_SELCHANGEDW
  2187. #define TVN_GETDISPINFO TVN_GETDISPINFOW
  2188. #define TVN_SETDISPINFO TVN_SETDISPINFOW
  2189. #define TVN_ITEMEXPANDING TVN_ITEMEXPANDINGW
  2190. #define TVN_ITEMEXPANDED TVN_ITEMEXPANDEDW
  2191. #define TVN_BEGINDRAG TVN_BEGINDRAGW
  2192. #define TVN_BEGINRDRAG TVN_BEGINRDRAGW
  2193. #define TVN_DELETEITEM TVN_DELETEITEMW
  2194. #define TVN_BEGINLABELEDIT TVN_BEGINLABELEDITW
  2195. #define TVN_ENDLABELEDIT TVN_ENDLABELEDITW
  2196. #else
  2197. #define TVN_SELCHANGING TVN_SELCHANGINGA
  2198. #define TVN_SELCHANGED TVN_SELCHANGEDA
  2199. #define TVN_GETDISPINFO TVN_GETDISPINFOA
  2200. #define TVN_SETDISPINFO TVN_SETDISPINFOA
  2201. #define TVN_ITEMEXPANDING TVN_ITEMEXPANDINGA
  2202. #define TVN_ITEMEXPANDED TVN_ITEMEXPANDEDA
  2203. #define TVN_BEGINDRAG TVN_BEGINDRAGA
  2204. #define TVN_BEGINRDRAG TVN_BEGINRDRAGA
  2205. #define TVN_DELETEITEM TVN_DELETEITEMA
  2206. #define TVN_BEGINLABELEDIT TVN_BEGINLABELEDITA
  2207. #define TVN_ENDLABELEDIT TVN_ENDLABELEDITA
  2208. #endif
  2209. #endif
  2210. //====== TAB CONTROL ==========================================================
  2211. #ifndef NOTABCONTROL
  2212. #ifdef _WIN32
  2213. #define WC_TABCONTROLA "SysTabControl32"
  2214. #define WC_TABCONTROLW L"SysTabControl32"
  2215. #ifdef UNICODE
  2216. #define WC_TABCONTROL WC_TABCONTROLW
  2217. #else
  2218. #define WC_TABCONTROL WC_TABCONTROLA
  2219. #endif
  2220. #else
  2221. #define WC_TABCONTROL "SysTabControl"
  2222. #endif
  2223. #define TCS_SCROLLOPPOSITE 0x0001 // assumes multiline tab
  2224. #define TCS_FORCEICONLEFT 0x0010
  2225. #define TCS_FORCELABELLEFT 0x0020
  2226. #define TCS_SHAREIMAGELISTS 0x0000 // ;internal
  2227. #define TCS_PRIVATEIMAGELISTS 0x0040 // ;internal
  2228. #define TCS_VERTICAL 0x0080 // only valid with multiline mode
  2229. #define TCS_TABS 0x0000
  2230. #define TCS_BUTTONS 0x0100
  2231. #define TCS_SINGLELINE 0x0000
  2232. #define TCS_MULTILINE 0x0200
  2233. #define TCS_RIGHTJUSTIFY 0x0000
  2234. #define TCS_FIXEDWIDTH 0x0400
  2235. #define TCS_RAGGEDRIGHT 0x0800
  2236. #define TCS_FOCUSONBUTTONDOWN 0x1000
  2237. #define TCS_OWNERDRAWFIXED 0x2000
  2238. #define TCS_TOOLTIPS 0x4000
  2239. #define TCS_FOCUSNEVER 0x8000
  2240. #define TCM_FIRST 0x1300
  2241. #define TCM_GETBKCOLOR (TCM_FIRST + 0) // ;Internal
  2242. #define TabCtrl_GetBkColor(hwnd) (COLORREF)SendMessage((hwnd), TCM_GETBKCOLOR, 0, 0L) // ;Internal
  2243. #define TCM_SETBKCOLOR (TCM_FIRST + 1) // ;Internal
  2244. #define TabCtrl_SetBkColor(hwnd, clrBk) (BOOL)SendMessage((hwnd), TCM_SETBKCOLOR, 0, (LPARAM)(COLORREF)(clrBk)) // ;Internal
  2245. #define TCM_GETIMAGELIST (TCM_FIRST + 2)
  2246. #define TabCtrl_GetImageList(hwnd) \
  2247. (HIMAGELIST)SendMessage((hwnd), TCM_GETIMAGELIST, 0, 0L)
  2248. #define TCM_SETIMAGELIST (TCM_FIRST + 3)
  2249. #define TabCtrl_SetImageList(hwnd, himl) \
  2250. (HIMAGELIST)SendMessage((hwnd), TCM_SETIMAGELIST, 0, (LPARAM)(UINT)(HIMAGELIST)(himl))
  2251. #define TCM_GETITEMCOUNT (TCM_FIRST + 4)
  2252. #define TabCtrl_GetItemCount(hwnd) \
  2253. (int)SendMessage((hwnd), TCM_GETITEMCOUNT, 0, 0L)
  2254. #define TCIF_TEXT 0x0001
  2255. #define TCIF_IMAGE 0x0002
  2256. #define TCIF_RTLREADING 0x0004
  2257. #define TCIF_PARAM 0x0008
  2258. #define TCIF_ALL 0x000f // ;Internal
  2259. typedef struct tagTCITEMHEADERA
  2260. {
  2261. UINT mask;
  2262. UINT lpReserved1;
  2263. UINT lpReserved2;
  2264. LPSTR pszText;
  2265. int cchTextMax;
  2266. int iImage;
  2267. } TCITEMHEADERA, FAR *LPTCITEMHEADERA;
  2268. typedef struct tagTCITEMHEADERW
  2269. {
  2270. UINT mask;
  2271. UINT lpReserved1;
  2272. UINT lpReserved2;
  2273. LPWSTR pszText;
  2274. int cchTextMax;
  2275. int iImage;
  2276. } TCITEMHEADERW, FAR *LPTCITEMHEADERW;
  2277. #define TC_ITEMHEADERA TCITEMHEADERA
  2278. #define TC_ITEMHEADERW TCITEMHEADERW
  2279. #define TC_ITEMHEADER TCITEMHEADER
  2280. #ifdef UNICODE
  2281. #define TCITEMHEADER TCITEMHEADERW
  2282. #define LPTCITEMHEADER LPTCITEMHEADERW
  2283. #else
  2284. #define TCITEMHEADER TCITEMHEADERA
  2285. #define LPTCITEMHEADER LPTCITEMHEADERA
  2286. #endif
  2287. // BUGBUG: we need to pull the state code stuff out // ;Internal
  2288. typedef struct tagTCITEMA
  2289. {
  2290. // This block must be identical to TC_TEIMHEADER // ;Internal
  2291. UINT mask;
  2292. UINT lpReserved1;
  2293. UINT lpReserved2;
  2294. LPSTR pszText;
  2295. int cchTextMax;
  2296. int iImage;
  2297. LPARAM lParam;
  2298. } TCITEMA, FAR *LPTCITEMA;
  2299. typedef struct tagTCITEMW
  2300. {
  2301. // This block must be identical to TC_TEIMHEADER // ;Internal
  2302. UINT mask;
  2303. UINT lpReserved1;
  2304. UINT lpReserved2;
  2305. LPWSTR pszText;
  2306. int cchTextMax;
  2307. int iImage;
  2308. LPARAM lParam;
  2309. } TCITEMW, FAR *LPTCITEMW;
  2310. #define TC_ITEMA TCITEMA
  2311. #define TC_ITEMW TCITEMW
  2312. #define TC_ITEM TCITEM
  2313. #ifdef UNICODE
  2314. #define TCITEM TCITEMW
  2315. #define LPTCITEM LPTCITEMW
  2316. #else
  2317. #define TCITEM TCITEMA
  2318. #define LPTCITEM LPTCITEMA
  2319. #endif
  2320. #define TCM_GETITEMA (TCM_FIRST + 5)
  2321. #define TCM_GETITEMW (TCM_FIRST + 60)
  2322. #ifdef UNICODE
  2323. #define TCM_GETITEM TCM_GETITEMW
  2324. #else
  2325. #define TCM_GETITEM TCM_GETITEMA
  2326. #endif
  2327. #define TabCtrl_GetItem(hwnd, iItem, pitem) \
  2328. (BOOL)SendMessage((hwnd), TCM_GETITEM, (WPARAM)(int)iItem, (LPARAM)(TC_ITEM FAR*)(pitem))
  2329. #define TCM_SETITEMA (TCM_FIRST + 6)
  2330. #define TCM_SETITEMW (TCM_FIRST + 61)
  2331. #ifdef UNICODE
  2332. #define TCM_SETITEM TCM_SETITEMW
  2333. #else
  2334. #define TCM_SETITEM TCM_SETITEMA
  2335. #endif
  2336. #define TabCtrl_SetItem(hwnd, iItem, pitem) \
  2337. (BOOL)SendMessage((hwnd), TCM_SETITEM, (WPARAM)(int)iItem, (LPARAM)(TC_ITEM FAR*)(pitem))
  2338. #define TCM_INSERTITEMA (TCM_FIRST + 7)
  2339. #define TCM_INSERTITEMW (TCM_FIRST + 62)
  2340. #ifdef UNICODE
  2341. #define TCM_INSERTITEM TCM_INSERTITEMW
  2342. #else
  2343. #define TCM_INSERTITEM TCM_INSERTITEMA
  2344. #endif
  2345. #define TabCtrl_InsertItem(hwnd, iItem, pitem) \
  2346. (int)SendMessage((hwnd), TCM_INSERTITEM, (WPARAM)(int)iItem, (LPARAM)(const TC_ITEM FAR*)(pitem))
  2347. #define TCM_DELETEITEM (TCM_FIRST + 8)
  2348. #define TabCtrl_DeleteItem(hwnd, i) \
  2349. (BOOL)SendMessage((hwnd), TCM_DELETEITEM, (WPARAM)(int)(i), 0L)
  2350. #define TCM_DELETEALLITEMS (TCM_FIRST + 9)
  2351. #define TabCtrl_DeleteAllItems(hwnd) \
  2352. (BOOL)SendMessage((hwnd), TCM_DELETEALLITEMS, 0, 0L)
  2353. #define TCM_GETITEMRECT (TCM_FIRST + 10)
  2354. #define TabCtrl_GetItemRect(hwnd, i, prc) \
  2355. (BOOL)SendMessage((hwnd), TCM_GETITEMRECT, (WPARAM)(int)(i), (LPARAM)(RECT FAR*)(prc))
  2356. #define TCM_GETCURSEL (TCM_FIRST + 11)
  2357. #define TabCtrl_GetCurSel(hwnd) \
  2358. (int)SendMessage((hwnd), TCM_GETCURSEL, 0, 0)
  2359. #define TCM_SETCURSEL (TCM_FIRST + 12)
  2360. #define TabCtrl_SetCurSel(hwnd, i) \
  2361. (int)SendMessage((hwnd), TCM_SETCURSEL, (WPARAM)i, 0)
  2362. #define TCHT_NOWHERE 0x0001
  2363. #define TCHT_ONITEMICON 0x0002
  2364. #define TCHT_ONITEMLABEL 0x0004
  2365. #define TCHT_ONITEM (TCHT_ONITEMICON | TCHT_ONITEMLABEL)
  2366. typedef struct tagTCHITTESTINFO
  2367. {
  2368. POINT pt;
  2369. UINT flags;
  2370. } TCHITTESTINFO, FAR * LPTCHITTESTINFO;
  2371. #define LPTC_HITTESTINFO LPTCHITTESTINFO
  2372. #define TC_HITTESTINFO TCHITTESTINFO
  2373. #define TCM_HITTEST (TCM_FIRST + 13)
  2374. #define TabCtrl_HitTest(hwndTC, pinfo) \
  2375. (int)SendMessage((hwndTC), TCM_HITTEST, 0, (LPARAM)(TC_HITTESTINFO FAR*)(pinfo))
  2376. #define TCM_SETITEMEXTRA (TCM_FIRST + 14)
  2377. #define TabCtrl_SetItemExtra(hwndTC, cb) \
  2378. (BOOL)SendMessage((hwndTC), TCM_SETITEMEXTRA, (WPARAM)(cb), 0L)
  2379. #define TCM_ADJUSTRECT (TCM_FIRST + 40)
  2380. #define TabCtrl_AdjustRect(hwnd, bLarger, prc) \
  2381. (int)SendMessage(hwnd, TCM_ADJUSTRECT, (WPARAM)(BOOL)bLarger, (LPARAM)(RECT FAR *)prc)
  2382. #define TCM_SETITEMSIZE (TCM_FIRST + 41)
  2383. #define TabCtrl_SetItemSize(hwnd, x, y) \
  2384. (DWORD)SendMessage((hwnd), TCM_SETITEMSIZE, 0, MAKELPARAM(x,y))
  2385. #define TCM_REMOVEIMAGE (TCM_FIRST + 42)
  2386. #define TabCtrl_RemoveImage(hwnd, i) \
  2387. (void)SendMessage((hwnd), TCM_REMOVEIMAGE, i, 0L)
  2388. #define TCM_SETPADDING (TCM_FIRST + 43)
  2389. #define TabCtrl_SetPadding(hwnd, cx, cy) \
  2390. (void)SendMessage((hwnd), TCM_SETPADDING, 0, MAKELPARAM(cx, cy))
  2391. #define TCM_GETROWCOUNT (TCM_FIRST + 44)
  2392. #define TabCtrl_GetRowCount(hwnd) \
  2393. (int)SendMessage((hwnd), TCM_GETROWCOUNT, 0, 0L)
  2394. #define TCM_GETTOOLTIPS (TCM_FIRST + 45)
  2395. #define TabCtrl_GetToolTips(hwnd) \
  2396. (HWND)SendMessage((hwnd), TCM_GETTOOLTIPS, 0, 0L)
  2397. #define TCM_SETTOOLTIPS (TCM_FIRST + 46)
  2398. #define TabCtrl_SetToolTips(hwnd, hwndTT) \
  2399. (void)SendMessage((hwnd), TCM_SETTOOLTIPS, (WPARAM)hwndTT, 0L)
  2400. #define TCM_GETCURFOCUS (TCM_FIRST + 47)
  2401. #define TabCtrl_GetCurFocus(hwnd) \
  2402. (int)SendMessage((hwnd), TCM_GETCURFOCUS, 0, 0)
  2403. #define TCM_SETCURFOCUS (TCM_FIRST + 48)
  2404. #define TabCtrl_SetCurFocus(hwnd, i) \
  2405. SendMessage((hwnd),TCM_SETCURFOCUS, i, 0)
  2406. #define TCN_KEYDOWN (TCN_FIRST - 0)
  2407. typedef struct tagTCKEYDOWN
  2408. {
  2409. NMHDR hdr;
  2410. WORD wVKey;
  2411. UINT flags;
  2412. } NMTCKEYDOWN;
  2413. #define TC_KEYDOWN NMTCKEYDOWN
  2414. #define TCN_SELCHANGE (TCN_FIRST - 1)
  2415. #define TCN_SELCHANGING (TCN_FIRST - 2)
  2416. #define TCN_BEGINSCROLL (TCN_FIRST - 3)
  2417. #define TCN_ENDSCROLL (TCN_FIRST - 4)
  2418. #endif
  2419. //====== ANIMATE CONTROL ======================================================
  2420. #ifndef NOANIMATE
  2421. #ifdef _WIN32
  2422. #define ANIMATE_CLASSW L"SysAnimate32"
  2423. #define ANIMATE_CLASSA "SysAnimate32"
  2424. #ifdef UNICODE
  2425. #define ANIMATE_CLASS ANIMATE_CLASSW
  2426. #else
  2427. #define ANIMATE_CLASS ANIMATE_CLASSA
  2428. #endif
  2429. #define ACS_CENTER 0x0001
  2430. #define ACS_TRANSPARENT 0x0002
  2431. #define ACS_AUTOPLAY 0x0004
  2432. #define ACM_OPENA (WM_USER+100)
  2433. #define ACM_OPENW (WM_USER+103)
  2434. #ifdef UNICODE
  2435. #define ACM_OPEN ACM_OPENW
  2436. #else
  2437. #define ACM_OPEN ACM_OPENA
  2438. #endif
  2439. #define ACM_PLAY (WM_USER+101)
  2440. #define ACM_STOP (WM_USER+102)
  2441. #define ACN_START 1
  2442. #define ACN_STOP 2
  2443. #define Animate_Create(hwndP, id, dwStyle, hInstance) \
  2444. CreateWindow(ANIMATE_CLASS, NULL, \
  2445. dwStyle, 0, 0, 0, 0, hwndP, (HMENU)(id), hInstance, NULL)
  2446. #define Animate_Open(hwnd, szName) (BOOL)SendMessage(hwnd, ACM_OPEN, 0, (LPARAM)(LPTSTR)(szName))
  2447. #define Animate_Play(hwnd, from, to, rep) (BOOL)SendMessage(hwnd, ACM_PLAY, (WPARAM)(UINT)(rep), (LPARAM)MAKELONG(from, to))
  2448. #define Animate_Stop(hwnd) (BOOL)SendMessage(hwnd, ACM_STOP, 0, 0)
  2449. #define Animate_Close(hwnd) Animate_Open(hwnd, NULL)
  2450. #define Animate_Seek(hwnd, frame) Animate_Play(hwnd, frame, frame, 1)
  2451. #endif
  2452. #endif
  2453. #ifndef NO_COMMCTRL_DA // ;internal
  2454. //====== Dynamic Array routines ========================================== // ;internal
  2455. // Dynamic structure array // ;internal
  2456. typedef struct _DSA FAR* HDSA; // ;internal
  2457. WINCOMMCTRLAPI HDSA WINAPI DSA_Create(int cbItem, int cItemGrow); // ;internal
  2458. WINCOMMCTRLAPI BOOL WINAPI DSA_Destroy(HDSA hdsa); // ;internal
  2459. WINCOMMCTRLAPI BOOL WINAPI DSA_GetItem(HDSA hdsa, int i, void FAR* pitem); // ;internal
  2460. WINCOMMCTRLAPI LPVOID WINAPI DSA_GetItemPtr(HDSA hdsa, int i); // ;internal
  2461. WINCOMMCTRLAPI BOOL WINAPI DSA_SetItem(HDSA hdsa, int i, void FAR* pitem); // ;internal
  2462. WINCOMMCTRLAPI int WINAPI DSA_InsertItem(HDSA hdsa, int i, void FAR* pitem); // ;internal
  2463. WINCOMMCTRLAPI BOOL WINAPI DSA_DeleteItem(HDSA hdsa, int i); // ;internal
  2464. WINCOMMCTRLAPI BOOL WINAPI DSA_DeleteAllItems(HDSA hdsa); // ;internal
  2465. #define DSA_GetItemCount(hdsa) (*(int FAR*)(hdsa)) // ;internal
  2466. // Dynamic pointer array // ;internal
  2467. typedef struct _DPA FAR* HDPA; // ;internal
  2468. WINCOMMCTRLAPI HDPA WINAPI DPA_Create(int cItemGrow); // ;internal
  2469. WINCOMMCTRLAPI HDPA WINAPI DPA_CreateEx(int cpGrow, HANDLE hheap); // ;internal
  2470. WINCOMMCTRLAPI BOOL WINAPI DPA_Destroy(HDPA hdpa); // ;internal
  2471. WINCOMMCTRLAPI HDPA WINAPI DPA_Clone(HDPA hdpa, HDPA hdpaNew); // ;internal
  2472. WINCOMMCTRLAPI LPVOID WINAPI DPA_GetPtr(HDPA hdpa, int i); // ;internal
  2473. WINCOMMCTRLAPI int WINAPI DPA_GetPtrIndex(HDPA hdpa, LPVOID p); // ;internal
  2474. WINCOMMCTRLAPI BOOL WINAPI DPA_Grow(HDPA pdpa, int cp); // ;internal
  2475. WINCOMMCTRLAPI BOOL WINAPI DPA_SetPtr(HDPA hdpa, int i, LPVOID p); // ;internal
  2476. WINCOMMCTRLAPI int WINAPI DPA_InsertPtr(HDPA hdpa, int i, LPVOID p); // ;internal
  2477. WINCOMMCTRLAPI LPVOID WINAPI DPA_DeletePtr(HDPA hdpa, int i); // ;internal
  2478. WINCOMMCTRLAPI BOOL WINAPI DPA_DeleteAllPtrs(HDPA hdpa); // ;internal
  2479. #define DPA_GetPtrCount(hdpa) (*(int FAR*)(hdpa)) // ;internal
  2480. #define DPA_GetPtrPtr(hdpa) (*((LPVOID FAR* FAR*)((BYTE FAR*)(hdpa) + sizeof(int)))) // ;internal
  2481. #define DPA_FastGetPtr(hdpa, i) (DPA_GetPtrPtr(hdpa)[i]) // ;internal
  2482. typedef int (CALLBACK *PFNDPACOMPARE)(LPVOID p1, LPVOID p2, LPARAM lParam); // ;internal
  2483. WINCOMMCTRLAPI BOOL WINAPI DPA_Sort(HDPA hdpa, PFNDPACOMPARE pfnCompare, LPARAM lParam); // ;internal
  2484. // Search array. If DPAS_SORTED, then array is assumed to be sorted // ;internal
  2485. // according to pfnCompare, and binary search algorithm is used. // ;internal
  2486. // Otherwise, linear search is used. // ;internal
  2487. // // ;internal
  2488. // Searching starts at iStart (-1 to start search at beginning). // ;internal
  2489. // // ;internal
  2490. // DPAS_INSERTBEFORE/AFTER govern what happens if an exact match is not // ;internal
  2491. // found. If neither are specified, this function returns -1 if no exact // ;internal
  2492. // match is found. Otherwise, the index of the item before or after the // ;internal
  2493. // closest (including exact) match is returned. // ;internal
  2494. // // ;internal
  2495. // Search option flags // ;internal
  2496. // // ;internal
  2497. #define DPAS_SORTED 0x0001 // ;internal
  2498. #define DPAS_INSERTBEFORE 0x0002 // ;internal
  2499. #define DPAS_INSERTAFTER 0x0004 // ;internal
  2500. WINCOMMCTRLAPI int WINAPI DPA_Search(HDPA hdpa, LPVOID pFind, int iStart, // ;internal
  2501. PFNDPACOMPARE pfnCompare, // ;internal
  2502. LPARAM lParam, UINT options); // ;internal
  2503. //====================================================================== // ;internal
  2504. // String management helper routines // ;internal
  2505. WINCOMMCTRLAPI int WINAPI Str_GetPtrA(LPCSTR psz, LPSTR pszBuf, int cchBuf); // ;internal
  2506. WINCOMMCTRLAPI int WINAPI Str_GetPtrW(LPCWSTR psz, LPWSTR pszBuf, int cchBuf); // ;internal
  2507. WINCOMMCTRLAPI BOOL WINAPI Str_SetPtrA(CHAR FAR* UNALIGNED * ppsz, LPCSTR psz); // ;internal
  2508. WINCOMMCTRLAPI BOOL WINAPI Str_SetPtrW(WCHAR FAR* UNALIGNED * ppsz, LPCWSTR psz); // ;internal
  2509. #ifdef UNICODE // ;internal
  2510. #define Str_GetPtr Str_GetPtrW // ;internal
  2511. #define Str_SetPtr Str_SetPtrW // ;internal
  2512. #else // ;internal
  2513. #define Str_GetPtr Str_GetPtrA // ;internal
  2514. #define Str_SetPtr Str_SetPtrA // ;internal
  2515. #endif // ;internal
  2516. #endif // NO_COMMCTRL_DA // ;internal
  2517. #ifndef NO_COMMCTRL_ALLOCFCNS // ;internal
  2518. //====== Memory allocation functions =================== // ;internal
  2519. #ifdef _WIN32 // ;internal
  2520. #define _huge // ;internal
  2521. #endif // ;internal
  2522. WINCOMMCTRLAPI void _huge* WINAPI Alloc(long cb); // ;internal
  2523. WINCOMMCTRLAPI void _huge* WINAPI ReAlloc(void _huge* pb, long cb); // ;internal
  2524. WINCOMMCTRLAPI BOOL WINAPI Free(void _huge* pb); // ;internal
  2525. WINCOMMCTRLAPI DWORD WINAPI GetSize(void _huge* pb); // ;internal
  2526. #endif // ;internal
  2527. #ifndef NO_COMMCTRL_STRFCNS // ;internal
  2528. // BUGBUG: move some place else // ;internal
  2529. //=============== string routines =================================== // ;internal
  2530. // DBCS ready string routines... // ;internal
  2531. // these would be WINAPI but that conflicts with some private users of // ;internal
  2532. // these routines, and we don't need to load DS anyway // ;internal
  2533. WINCOMMCTRLAPI LPSTR FAR PASCAL StrChrA(LPCSTR lpStart, WORD wMatch); // ;internal
  2534. WINCOMMCTRLAPI LPWSTR FAR PASCAL StrChrW(LPCWSTR lpStart, WORD wMatch); // ;internal
  2535. WINCOMMCTRLAPI LPSTR FAR PASCAL StrRChrA(LPCSTR lpStart, LPCSTR lpEnd, WORD wMatch); // ;internal
  2536. WINCOMMCTRLAPI LPWSTR FAR PASCAL StrRChrW(LPCWSTR lpStart, LPCWSTR lpEnd, WORD wMatch); // ;internal
  2537. WINCOMMCTRLAPI LPSTR FAR PASCAL StrChrIA(LPCSTR lpStart, WORD wMatch); // ;internal
  2538. WINCOMMCTRLAPI LPWSTR FAR PASCAL StrChrIW(LPCWSTR lpStart, WORD wMatch); // ;internal
  2539. WINCOMMCTRLAPI LPSTR FAR PASCAL StrRChrIA(LPCSTR lpStart, LPCSTR lpEnd, WORD wMatch); // ;internal
  2540. WINCOMMCTRLAPI LPWSTR FAR PASCAL StrRChrIW(LPCWSTR lpStart, LPCWSTR lpEnd, WORD wMatch); // ;internal
  2541. WINCOMMCTRLAPI int FAR PASCAL StrCmpNA(LPCSTR lpStr1, LPCSTR lpStr2, int nChar); // ;internal
  2542. WINCOMMCTRLAPI int FAR PASCAL StrCmpNW(LPCWSTR lpStr1, LPCWSTR lpStr2, int nChar); // ;internal
  2543. WINCOMMCTRLAPI int FAR PASCAL StrCmpNIA(LPCSTR lpStr1, LPCSTR lpStr2, int nChar); // ;internal
  2544. WINCOMMCTRLAPI int FAR PASCAL StrCmpNIW(LPCWSTR lpStr1, LPCWSTR lpStr2, int nChar); // ;internal
  2545. WINCOMMCTRLAPI LPSTR FAR PASCAL StrStrA(LPCSTR lpFirst, LPCSTR lpSrch); // ;internal
  2546. WINCOMMCTRLAPI LPWSTR FAR PASCAL StrStrW(LPCWSTR lpFirst, LPCWSTR lpSrch); // ;internal
  2547. WINCOMMCTRLAPI LPSTR FAR PASCAL StrRStr(LPCSTR lpSource, LPCSTR lpLast, LPCSTR lpSrch); // ;internal
  2548. WINCOMMCTRLAPI LPSTR FAR PASCAL StrStrIA(LPCSTR lpFirst, LPCSTR lpSrch); // ;internal
  2549. WINCOMMCTRLAPI LPWSTR FAR PASCAL StrStrIW(LPCWSTR lpFirst, LPCWSTR lpSrch); // ;internal
  2550. WINCOMMCTRLAPI LPSTR FAR PASCAL StrRStrIA(LPCSTR lpSource, LPCSTR lpLast, LPCSTR lpSrch); // ;internal
  2551. WINCOMMCTRLAPI LPWSTR FAR PASCAL StrRStrIW(LPCWSTR lpSource, LPCWSTR lpLast, LPCWSTR lpSrch); // ;internal
  2552. WINCOMMCTRLAPI int FAR PASCAL StrCSpnA(LPCSTR lpStr, LPCSTR lpSet); // ;internal
  2553. WINCOMMCTRLAPI int FAR PASCAL StrCSpnW(LPCWSTR lpStr, LPCWSTR lpSet); // ;internal
  2554. WINCOMMCTRLAPI int FAR PASCAL StrCSpnIA(LPCSTR lpStr, LPCSTR lpSet); // ;internal
  2555. WINCOMMCTRLAPI int FAR PASCAL StrCSpnIW(LPCWSTR lpStr, LPCWSTR lpSet); // ;internal
  2556. WINCOMMCTRLAPI int WINAPI StrToIntA(LPCSTR lpSrc); // ;internal
  2557. WINCOMMCTRLAPI int WINAPI StrToIntW(LPCWSTR lpSrc); // ;internal
  2558. #ifdef UNICODE // ;internal
  2559. #define StrToInt StrToIntW // ;internal
  2560. #define StrChr StrChrW // ;internal
  2561. #define StrRChr StrRChrW // ;internal
  2562. #define StrChrI StrChrIW // ;internal
  2563. #define StrRChrI StrRChrIW // ;internal
  2564. #define StrCSpn StrCSpnW // ;internal
  2565. #define StrCSpnI StrCSpnIW // ;internal
  2566. #define StrCmpN StrCmpNW // ;internal
  2567. #define StrCmpNI StrCmpNIW // ;internal
  2568. #define StrStr StrStrW // ;internal
  2569. #define StrStrI StrStrIW // ;internal
  2570. #define StrRStrI StrRStrIW // ;internal
  2571. #else // ;internal
  2572. #define StrToInt StrToIntA // ;internal
  2573. #define StrChr StrChrA // ;internal
  2574. #define StrRChr StrRChrA // ;internal
  2575. #define StrChrI StrChrIA // ;internal
  2576. #define StrRChrI StrRChrIA // ;internal
  2577. #define StrCSpn StrCSpnA // ;internal
  2578. #define StrCSpnI StrCSpnIA // ;internal
  2579. #define StrCmpN StrCmpNA // ;internal
  2580. #define StrCmpNI StrCmpNIA // ;internal
  2581. #define StrStr StrStrA // ;internal
  2582. #define StrStrI StrStrIA // ;internal
  2583. #define StrRStrI StrRStrIA // ;internal
  2584. #endif // ;internal
  2585. #define StrToLong StrToInt // ;internal
  2586. #define StrNCmp StrCmpN // ;internal
  2587. #define StrNCmpI StrCmpNI // ;internal
  2588. #define StrNCpy lstrcpyn // ;internal
  2589. #define StrCpyN lstrcpyn // ;internal
  2590. #endif // NO_COMMCTRL_STRFCNS // ;internal
  2591. #ifndef _SIZE_T_DEFINED // ;internal
  2592. #define _SIZE_T_DEFINED // ;internal
  2593. typedef unsigned int size_t; // ;internal
  2594. #endif // ;internal
  2595. #ifdef _WIN32 // ;internal
  2596. // BUGBUG: move some place else // ;internal
  2597. //=================================================================== // ;internal
  2598. typedef int (CALLBACK *MRUCMPPROCA)(LPCSTR, LPCSTR); // ;internal
  2599. typedef int (CALLBACK *MRUCMPPROCW)(LPCWSTR, LPCWSTR); // ;internal
  2600. #ifdef UNICODE // ;internal
  2601. #define MRUCMPPROC MRUCMPPROCW // ;internal
  2602. #else // ;internal
  2603. #define MRUCMPPROC MRUCMPPROCA // ;internal
  2604. #endif // ;internal
  2605. // NB This is cdecl - to be compatible with the crts. // ;internal
  2606. typedef int (cdecl FAR *MRUCMPDATAPROC)(const void FAR *, const void FAR *, // ;internal
  2607. size_t); // ;internal
  2608. typedef struct _MRUINFOA { // ;internal
  2609. DWORD cbSize; // ;internal
  2610. UINT uMax; // ;internal
  2611. UINT fFlags; // ;internal
  2612. HKEY hKey; // ;internal
  2613. LPCSTR lpszSubKey; // ;internal
  2614. MRUCMPPROCA lpfnCompare; // ;internal
  2615. } MRUINFOA, FAR *LPMRUINFOA; // ;internal
  2616. typedef struct _MRUINFOW { // ;internal
  2617. DWORD cbSize; // ;internal
  2618. UINT uMax; // ;internal
  2619. UINT fFlags; // ;internal
  2620. HKEY hKey; // ;internal
  2621. LPCWSTR lpszSubKey; // ;internal
  2622. MRUCMPPROCW lpfnCompare; // ;internal
  2623. } MRUINFOW, FAR *LPMRUINFOW; // ;internal
  2624. typedef struct _MRUDATAINFOA { // ;internal
  2625. DWORD cbSize; // ;internal
  2626. UINT uMax; // ;internal
  2627. UINT fFlags; // ;internal
  2628. HKEY hKey; // ;internal
  2629. LPCSTR lpszSubKey; // ;internal
  2630. MRUCMPDATAPROC lpfnCompare; // ;internal
  2631. } MRUDATAINFOA, FAR *LPMRUDATAINFOA; // ;internal
  2632. typedef struct _MRUDATAINFOW { // ;internal
  2633. DWORD cbSize; // ;internal
  2634. UINT uMax; // ;internal
  2635. UINT fFlags; // ;internal
  2636. HKEY hKey; // ;internal
  2637. LPCWSTR lpszSubKey; // ;internal
  2638. MRUCMPDATAPROC lpfnCompare; // ;internal
  2639. } MRUDATAINFOW, FAR *LPMRUDATAINFOW; // ;internal
  2640. #ifdef UNICODE // ;internal
  2641. #define MRUINFO MRUINFOW // ;internal
  2642. #define LPMRUINFO LPMRUINFOW // ;internal
  2643. #define MRUDATAINFO MRUDATAINFOW // ;internal
  2644. #define LPMRUDATAINFO LPMRUDATAINFOW // ;internal
  2645. #else // ;internal
  2646. #define MRUINFO MRUINFOA // ;internal
  2647. #define LPMRUINFO LPMRUINFOA // ;internal
  2648. #define MRUDATAINFO MRUDATAINFOA // ;internal
  2649. #define LPMRUDATAINFO LPMRUDATAINFOA // ;internal
  2650. #endif // ;internal
  2651. #define MRU_BINARY 0x0001 // ;internal
  2652. #define MRU_CACHEWRITE 0x0002 // ;internal
  2653. #define MRU_ANSI 0x0004 // ;Internal
  2654. WINCOMMCTRLAPI HANDLE WINAPI CreateMRUListA(LPMRUINFOA lpmi); // ;internal
  2655. WINCOMMCTRLAPI HANDLE WINAPI CreateMRUListW(LPMRUINFOW lpmi); // ;internal
  2656. WINCOMMCTRLAPI void WINAPI FreeMRUList(HANDLE hMRU); // ;internal
  2657. WINCOMMCTRLAPI int WINAPI AddMRUStringA(HANDLE hMRU, LPCSTR szString); // ;internal
  2658. WINCOMMCTRLAPI int WINAPI AddMRUStringW(HANDLE hMRU, LPCWSTR szString); // ;internal
  2659. WINCOMMCTRLAPI int WINAPI DelMRUString(HANDLE hMRU, int nItem); // ;internal
  2660. WINCOMMCTRLAPI int WINAPI FindMRUStringA(HANDLE hMRU, LPCSTR szString, LPINT lpiSlot); // ;internal
  2661. WINCOMMCTRLAPI int WINAPI FindMRUStringW(HANDLE hMRU, LPCWSTR szString, LPINT lpiSlot); // ;internal
  2662. WINCOMMCTRLAPI int WINAPI EnumMRUListA(HANDLE hMRU, int nItem, LPVOID lpData, UINT uLen); // ;internal
  2663. WINCOMMCTRLAPI int WINAPI EnumMRUListW(HANDLE hMRU, int nItem, LPVOID lpData, UINT uLen); // ;internal
  2664. WINCOMMCTRLAPI int WINAPI AddMRUData(HANDLE hMRU, const void FAR *lpData, UINT cbData); // ;internal
  2665. WINCOMMCTRLAPI int WINAPI FindMRUData(HANDLE hMRU, const void FAR *lpData, UINT cbData, // ;internal
  2666. LPINT lpiSlot); // ;internal
  2667. #ifdef UNICODE // ;internal
  2668. #define CreateMRUList CreateMRUListW // ;internal
  2669. #define AddMRUString AddMRUStringW // ;internal
  2670. #define FindMRUString FindMRUStringW // ;internal
  2671. #define EnumMRUList EnumMRUListW // ;internal
  2672. #else // ;internal
  2673. #define CreateMRUList CreateMRUListA // ;internal
  2674. #define AddMRUString AddMRUStringA // ;internal
  2675. #define FindMRUString FindMRUStringA // ;internal
  2676. #define EnumMRUList EnumMRUListA // ;internal
  2677. #endif // ;internal
  2678. #endif // ;internal
  2679. //========================================================================= // ;internal
  2680. // for people that just gota use GetProcAddress() // ;internal
  2681. #ifdef _WIN32 // ;internal
  2682. #define DPA_CreateORD 328 // ;internal
  2683. #define DPA_DestroyORD 329 // ;internal
  2684. #define DPA_GrowORD 330 // ;internal
  2685. #define DPA_CloneORD 331 // ;internal
  2686. #define DPA_GetPtrORD 332 // ;internal
  2687. #define DPA_GetPtrIndexORD 333 // ;internal
  2688. #define DPA_InsertPtrORD 334 // ;internal
  2689. #define DPA_SetPtrORD 335 // ;internal
  2690. #define DPA_DeletePtrORD 336 // ;internal
  2691. #define DPA_DeleteAllPtrsORD 337 // ;internal
  2692. #define DPA_SortORD 338 // ;internal
  2693. #define DPA_SearchORD 339 // ;internal
  2694. #define DPA_CreateExORD 340 // ;internal
  2695. #define SendNotifyORD 341 // ;internal
  2696. #define CreatePageORD 163 // ;Internal
  2697. #define CreateProxyPageORD 164 // ;Internal
  2698. #endif // ;internal
  2699. #ifdef __cplusplus
  2700. }
  2701. #endif
  2702. #ifdef _WIN32
  2703. #include <poppack.h>
  2704. #endif
  2705. #endif
  2706. #endif // _INC_COMMCTRLP // ;internal
  2707. #endif // _INC_COMMCTRL