~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Wine Cross Reference
wine/include/commctrl.h

Version: ~ [ wine-1.0-rc1 ] ~ [ wine-0.9.61 ] ~ [ wine-0.9.60 ] ~ [ wine-0.9.59 ] ~ [ wine-0.9.58 ] ~ [ wine-0.9.57 ] ~ [ wine-0.9.56 ] ~ [ wine-0.9.55 ] ~ [ wine-0.9.54 ] ~ [ wine-0.9.53 ] ~ [ wine-0.9.52 ] ~ [ wine-0.9.51 ] ~ [ wine-0.9.50 ] ~ [ wine-0.9.49 ] ~ [ wine-0.9.48 ] ~ [ wine-0.9.47 ] ~ [ wine-0.9.46 ] ~ [ wine-0.9.45 ] ~ [ wine-0.9.44 ] ~ [ wine-0.9.43 ] ~ [ wine-0.9.42 ] ~ [ wine-0.9.41 ] ~ [ wine-0.9.40 ] ~ [ wine-0.9.39 ] ~ [ wine-0.9.38 ] ~ [ wine-0.9.37 ] ~ [ wine-0.9.36 ] ~ [ wine-0.9.35 ] ~ [ wine-0.9.34 ] ~ [ wine-0.9.33 ] ~ [ wine-0.9.32 ] ~ [ wine-0.9.31 ] ~ [ wine-0.9.30 ] ~ [ wine-0.9.29 ] ~ [ wine-0.9.28 ] ~ [ wine-0.9.27 ] ~ [ wine-0.9.26 ] ~ [ wine-0.9.25 ] ~ [ wine-0.9.24 ] ~ [ wine-0.9.23 ] ~ [ wine-0.9.22 ] ~ [ wine-0.9.21 ] ~ [ wine-0.9.20 ] ~ [ wine-0.9.19 ] ~ [ wine-0.9.18 ] ~ [ wine-0.9.17 ] ~ [ wine-0.9.16 ] ~ [ wine-0.9.15 ] ~ [ wine-0.9.14 ] ~ [ wine-0.9.13 ] ~ [ wine-0.9.12 ] ~ [ wine-0.9.11 ] ~ [ wine-0.9.10 ] ~ [ wine-0.9.9 ] ~ [ wine-0.9.8 ] ~ [ wine-0.9.7 ] ~ [ wine-0.9.6 ] ~ [ wine-0.9.5 ] ~ [ wine-0.9.4 ] ~ [ wine-0.9.3 ] ~ [ wine-0.9.2 ] ~ [ wine-0.9.1 ] ~ [ wine-0.9 ] ~ [ wine20050930 ] ~ [ wine20050830 ] ~ [ wine20050725 ] ~ [ wine20050628 ] ~ [ wine20050524 ] ~ [ wine20050419 ] ~ [ wine20050310 ] ~ [ wine20050211 ] ~ [ wine20050111 ] ~ [ wine20041201 ] ~ [ wine20041019 ] ~ [ wine20040914 ] ~ [ wine20040813 ] ~ [ wine20040716 ] ~ [ wine20040615 ] ~ [ wine20040505 ] ~ [ wine20040408 ] ~ [ wine20040309 ] ~ [ wine20040213 ] ~ [ wine20040121 ] ~ [ wine20031212 ] ~ [ wine20031118 ] ~ [ wine20031016 ] ~ [ wine20030911 ] ~ [ wine20030813 ] ~ [ wine20030709 ] ~ [ wine20030618 ] ~ [ wine20030508 ] ~ [ wine20030408 ] ~ [ wine20030318 ] ~ [ wine20030219 ] ~ [ wine20030115 ] ~ [ wine20021219 ] ~ [ wine20021125 ] ~ [ wine20021031 ] ~ [ wine20021007 ] ~ [ wine20020904 ] ~ [ wine20020804 ] ~ [ wine20020710 ] ~ [ wine20020605 ] ~ [ wine20020509 ] ~ [ wine20020411 ] ~ [ wine20020310 ] ~ [ wine20020228 ] ~ [ wine20011226 ] ~ [ wine20011108 ] ~ [ wine20011004 ] ~ [ wine20010824 ] ~ [ wine20010731 ] ~ [ wine20010629 ] ~ [ wine20010510 ] ~ [ wine20010418 ] ~ [ wine20010326 ] ~ [ wine20010305 ] ~ [ wine20010216 ] ~ [ wine20010112 ] ~ [ wine20001222 ] ~ [ wine20001202 ] ~ [ wine20001026 ] ~ [ wine20001002 ] ~ [ wine20000909 ] ~ [ wine20000821 ] ~ [ wine20000801 ] ~ [ wine20000716 ] ~ [ wine20000326 ] ~ [ wine20000227 ] ~ [ wine20000130 ] ~ [ wine20000109 ] ~

  1 /*
  2  * Common controls definitions
  3  *
  4  * Copyright (C) the Wine project
  5  *
  6  * This library is free software; you can redistribute it and/or
  7  * modify it under the terms of the GNU Lesser General Public
  8  * License as published by the Free Software Foundation; either
  9  * version 2.1 of the License, or (at your option) any later version.
 10  *
 11  * This library is distributed in the hope that it will be useful,
 12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 14  * Lesser General Public License for more details.
 15  *
 16  * You should have received a copy of the GNU Lesser General Public
 17  * License along with this library; if not, write to the Free Software
 18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 19  */
 20 
 21 #ifndef __WINE_COMMCTRL_H
 22 #define __WINE_COMMCTRL_H
 23 
 24 #include <prsht.h>
 25 
 26 #ifdef __cplusplus
 27 extern "C" {
 28 #endif
 29 
 30 BOOL WINAPI ShowHideMenuCtl (HWND, UINT_PTR, LPINT);
 31 VOID WINAPI GetEffectiveClientRect (HWND, LPRECT, const INT*);
 32 VOID WINAPI InitCommonControls (VOID);
 33 
 34 typedef struct tagINITCOMMONCONTROLSEX {
 35     DWORD dwSize;
 36     DWORD dwICC;
 37 } INITCOMMONCONTROLSEX, *LPINITCOMMONCONTROLSEX;
 38 
 39 BOOL WINAPI InitCommonControlsEx (const INITCOMMONCONTROLSEX*);
 40 
 41 LANGID WINAPI GetMUILanguage (VOID);
 42 VOID WINAPI InitMUILanguage (LANGID uiLang);
 43 
 44 
 45 #define COMCTL32_VERSION                5  /* dll version */
 46 
 47 #ifndef _WIN32_IE
 48 #define _WIN32_IE 0x0400
 49 #endif
 50 
 51 #define ICC_LISTVIEW_CLASSES   0x00000001  /* listview, header */
 52 #define ICC_TREEVIEW_CLASSES   0x00000002  /* treeview, tooltips */
 53 #define ICC_BAR_CLASSES        0x00000004  /* toolbar, statusbar, trackbar, tooltips */
 54 #define ICC_TAB_CLASSES        0x00000008  /* tab, tooltips */
 55 #define ICC_UPDOWN_CLASS       0x00000010  /* updown */
 56 #define ICC_PROGRESS_CLASS     0x00000020  /* progress */
 57 #define ICC_HOTKEY_CLASS       0x00000040  /* hotkey */
 58 #define ICC_ANIMATE_CLASS      0x00000080  /* animate */
 59 #define ICC_WIN95_CLASSES      0x000000FF
 60 #define ICC_DATE_CLASSES       0x00000100  /* month picker, date picker, time picker, updown */
 61 #define ICC_USEREX_CLASSES     0x00000200  /* comboex */
 62 #define ICC_COOL_CLASSES       0x00000400  /* rebar (coolbar) */
 63 #define ICC_INTERNET_CLASSES   0x00000800  /* IP address, ... */
 64 #define ICC_PAGESCROLLER_CLASS 0x00001000  /* page scroller */
 65 #define ICC_NATIVEFNTCTL_CLASS 0x00002000  /* native font control ???*/
 66 #define ICC_STANDARD_CLASSES   0x00004000
 67 #define ICC_LINK_CLASS         0x00008000
 68 
 69 
 70 /* common control styles */
 71 #define CCS_TOP             0x00000001L
 72 #define CCS_NOMOVEY         0x00000002L
 73 #define CCS_BOTTOM          0x00000003L
 74 #define CCS_NORESIZE        0x00000004L
 75 #define CCS_NOPARENTALIGN   0x00000008L
 76 #define CCS_ADJUSTABLE      0x00000020L
 77 #define CCS_NODIVIDER       0x00000040L
 78 #define CCS_VERT            0x00000080L
 79 #define CCS_LEFT            (CCS_VERT|CCS_TOP)
 80 #define CCS_RIGHT           (CCS_VERT|CCS_BOTTOM)
 81 #define CCS_NOMOVEX         (CCS_VERT|CCS_NOMOVEY)
 82 
 83 
 84 /* common control shared messages */
 85 #define CCM_FIRST            0x2000
 86 
 87 #define CCM_SETBKCOLOR       (CCM_FIRST+0x1)     /* lParam = bkColor */
 88 #define CCM_SETCOLORSCHEME   (CCM_FIRST+0x2)     /* lParam = COLORSCHEME struct ptr */
 89 #define CCM_GETCOLORSCHEME   (CCM_FIRST+0x3)     /* lParam = COLORSCHEME struct ptr */
 90 #define CCM_GETDROPTARGET    (CCM_FIRST+0x4)
 91 #define CCM_SETUNICODEFORMAT (CCM_FIRST+0x5)
 92 #define CCM_GETUNICODEFORMAT (CCM_FIRST+0x6)
 93 #define CCM_SETVERSION       (CCM_FIRST+0x7)
 94 #define CCM_GETVERSION       (CCM_FIRST+0x8)
 95 #define CCM_SETNOTIFYWINDOW  (CCM_FIRST+0x9)     /* wParam = hwndParent */
 96 #define CCM_SETWINDOWTHEME   (CCM_FIRST+0xb)
 97 #define CCM_DPISCALE         (CCM_FIRST+0xc)
 98 
 99 
100 /* common notification codes (WM_NOTIFY)*/
101 #define NM_FIRST                (0U-  0U)
102 #define NM_LAST                 (0U- 99U)
103 #define NM_OUTOFMEMORY          (NM_FIRST-1)
104 #define NM_CLICK                (NM_FIRST-2)
105 #define NM_DBLCLK               (NM_FIRST-3)
106 #define NM_RETURN               (NM_FIRST-4)
107 #define NM_RCLICK               (NM_FIRST-5)
108 #define NM_RDBLCLK              (NM_FIRST-6)
109 #define NM_SETFOCUS             (NM_FIRST-7)
110 #define NM_KILLFOCUS            (NM_FIRST-8)
111 #define NM_CUSTOMDRAW           (NM_FIRST-12)
112 #define NM_HOVER                (NM_FIRST-13)
113 #define NM_NCHITTEST            (NM_FIRST-14)
114 #define NM_KEYDOWN              (NM_FIRST-15)
115 #define NM_RELEASEDCAPTURE      (NM_FIRST-16)
116 #define NM_SETCURSOR            (NM_FIRST-17)
117 #define NM_CHAR                 (NM_FIRST-18)
118 #define NM_TOOLTIPSCREATED      (NM_FIRST-19)
119 #define NM_LDOWN                (NM_FIRST-20)
120 #define NM_RDOWN                (NM_FIRST-21)
121 #define NM_THEMECHANGED         (NM_FIRST-22)
122 #define NM_FONTCHANGED          (NM_FIRST-23)
123 #define NM_CUSTOMTEXT           (NM_FIRST-24)
124 #define NM_TVSTATEIMAGECHANGING (NM_FIRST-24)
125 
126 #define HANDLE_WM_NOTIFY(hwnd, wParam, lParam, fn) \
127     (fn)((hwnd), (int)(wParam), (NMHDR*)(lParam))
128 #define FORWARD_WM_NOTIFY(hwnd, idFrom, pnmhdr, fn) \
129     (LRESULT)(fn)((hwnd), WM_NOTIFY, (WPARAM)(int)(idFrom), (LPARAM)(NMHDR*)(pnmhdr))
130 
131 
132 /* callback constants */
133 #define LPSTR_TEXTCALLBACKA    ((LPSTR)-1L)
134 #define LPSTR_TEXTCALLBACKW    ((LPWSTR)-1L)
135 #define LPSTR_TEXTCALLBACK WINELIB_NAME_AW(LPSTR_TEXTCALLBACK)
136 
137 #define I_IMAGECALLBACK          (-1)
138 #define I_IMAGENONE              (-2)
139 #define I_INDENTCALLBACK         (-1)
140 #define I_CHILDRENCALLBACK       (-1)
141 #define I_GROUPIDCALLBACK        (-1)
142 #define I_GROUPIDNONE            (-2)
143 #define I_COLUMNSCALLBACK        ((UINT)-1)
144 
145 /* owner drawn types */
146 #define ODT_HEADER      100
147 #define ODT_TAB         101
148 #define ODT_LISTVIEW    102
149 
150 /* common notification structures */
151 typedef struct tagNMTOOLTIPSCREATED
152 {
153     NMHDR  hdr;
154     HWND hwndToolTips;
155 } NMTOOLTIPSCREATED, *LPNMTOOLTIPSCREATED;
156 
157 typedef struct tagNMMOUSE
158 {
159     NMHDR   hdr;
160     DWORD_PTR   dwItemSpec;
161     DWORD_PTR   dwItemData;
162     POINT   pt;
163     DWORD   dwHitInfo;   /* info where on item or control the mouse is */
164 } NMMOUSE, *LPNMMOUSE;
165 
166 typedef struct tagNMOBJECTNOTIFY
167 {
168     NMHDR   hdr;
169     int     iItem;
170 #ifdef __IID_DEFINED__
171     const IID *piid;
172 #else
173     const void *piid;
174 #endif
175     void    *pObject;
176     HRESULT hResult;
177     DWORD   dwFlags;
178 } NMOBJECTNOTIFY, *LPNMOBJECTNOTIFY;
179 
180 typedef struct tagNMKEY
181 {
182     NMHDR   hdr;
183     UINT    nVKey;
184     UINT    uFlags;
185 } NMKEY, *LPNMKEY;
186 
187 typedef struct tagNMCHAR
188 {
189     NMHDR   hdr;
190     UINT    ch;
191     DWORD   dwItemPrev;           /* Item previously selected */
192     DWORD   dwItemNext;           /* Item to be selected */
193 } NMCHAR, *LPNMCHAR;
194 
195 #ifndef CCSIZEOF_STRUCT
196 #define CCSIZEOF_STRUCT(name, member) \
197     (((INT)((LPBYTE)(&((name*)0)->member)-((LPBYTE)((name*)0))))+ \
198     sizeof(((name*)0)->member))
199 #endif
200 
201 
202 /* This is only for Winelib applications. DON't use it wine itself!!! */
203 #ifndef SNDMSG
204 #ifdef __cplusplus
205 #define SNDMSG ::SendMessage
206 #else   /* __cplusplus */
207 #define SNDMSG SendMessage
208 #endif  /* __cplusplus */
209 #endif  /* SNDMSG */
210 
211 
212 #ifdef __cplusplus
213 #define SNDMSGA ::SendMessageA
214 #define SNDMSGW ::SendMessageW
215 #else
216 #define SNDMSGA SendMessageA
217 #define SNDMSGW SendMessageW
218 #endif
219 
220 /* Custom Draw messages */
221 
222 #define CDRF_DODEFAULT          0x0
223 #define CDRF_NEWFONT            0x00000002
224 #define CDRF_SKIPDEFAULT        0x00000004
225 #define CDRF_NOTIFYPOSTPAINT    0x00000010
226 #define CDRF_NOTIFYITEMDRAW     0x00000020
227 #define CDRF_NOTIFYSUBITEMDRAW  0x00000020
228 #define CDRF_NOTIFYPOSTERASE    0x00000040
229 #define CDRF_NOTIFYITEMERASE    0x00000080      /*  obsolete ??? */
230 
231 
232 /* drawstage flags */
233 
234 #define CDDS_PREPAINT           1
235 #define CDDS_POSTPAINT          2
236 #define CDDS_PREERASE           3
237 #define CDDS_POSTERASE          4
238 
239 #define CDDS_ITEM               0x00010000
240 #define CDDS_ITEMPREPAINT       (CDDS_ITEM | CDDS_PREPAINT)
241 #define CDDS_ITEMPOSTPAINT      (CDDS_ITEM | CDDS_POSTPAINT)
242 #define CDDS_ITEMPREERASE       (CDDS_ITEM | CDDS_PREERASE)
243 #define CDDS_ITEMPOSTERASE      (CDDS_ITEM | CDDS_POSTERASE)
244 #define CDDS_SUBITEM            0x00020000
245 
246 /* itemState flags */
247 
248 #define CDIS_SELECTED           0x0001
249 #define CDIS_GRAYED             0x0002
250 #define CDIS_DISABLED           0x0004
251 #define CDIS_CHECKED            0x0008
252 #define CDIS_FOCUS              0x0010
253 #define CDIS_DEFAULT            0x0020
254 #define CDIS_HOT                0x0040
255 #define CDIS_MARKED             0x0080
256 #define CDIS_INDETERMINATE      0x0100
257 #define CDIS_SHOWKEYBOARDCUES   0x0200
258 #define CDIS_NEARHOT            0x0400
259 #define CDIS_OTHERSIDEHOT       0x0800
260 #define CDIS_DROPHILITED        0x1000
261 
262 
263 typedef struct tagNMCUSTOMDRAWINFO
264 {
265         NMHDR   hdr;
266         DWORD   dwDrawStage;
267         HDC     hdc;
268         RECT    rc;
269         DWORD_PTR dwItemSpec;
270         UINT    uItemState;
271         LPARAM  lItemlParam;
272 } NMCUSTOMDRAW, *LPNMCUSTOMDRAW;
273 
274 typedef struct tagNMTTCUSTOMDRAW
275 {
276     NMCUSTOMDRAW nmcd;
277     UINT       uDrawFlags;
278 } NMTTCUSTOMDRAW, *LPNMTTCUSTOMDRAW;
279 
280 
281 
282 
283 /* StatusWindow */
284 
285 #define STATUSCLASSNAMEA        "msctls_statusbar32"
286 #if defined(__GNUC__)
287 # define STATUSCLASSNAMEW (const WCHAR []){ 'm','s','c','t','l','s','_', \
288   's','t','a','t','u','s','b','a','r','3','2',0 }
289 #elif defined(_MSC_VER)
290 # define STATUSCLASSNAMEW       L"msctls_statusbar32"
291 #else
292 static const WCHAR STATUSCLASSNAMEW[] = { 'm','s','c','t','l','s','_',
293   's','t','a','t','u','s','b','a','r','3','2',0 };
294 #endif
295 #define STATUSCLASSNAME         WINELIB_NAME_AW(STATUSCLASSNAME)
296 
297 #define SBT_NOBORDERS           0x0100
298 #define SBT_POPOUT              0x0200
299 #define SBT_RTLREADING          0x0400  /* not supported */
300 #define SBT_TOOLTIPS            0x0800
301 #define SBT_OWNERDRAW           0x1000
302 
303 #define SBARS_SIZEGRIP          0x0100
304 
305 #define SB_SIMPLEID             0x00ff
306 
307 #define SB_SETTEXTA             (WM_USER+1)
308 #define SB_SETTEXTW             (WM_USER+11)
309 #define SB_SETTEXT              WINELIB_NAME_AW(SB_SETTEXT)
310 #define SB_GETTEXTA             (WM_USER+2)
311 #define SB_GETTEXTW             (WM_USER+13)
312 #define SB_GETTEXT              WINELIB_NAME_AW(SB_GETTEXT)
313 #define SB_GETTEXTLENGTHA       (WM_USER+3)
314 #define SB_GETTEXTLENGTHW       (WM_USER+12)
315 #define SB_GETTEXTLENGTH        WINELIB_NAME_AW(SB_GETTEXTLENGTH)
316 #define SB_SETPARTS             (WM_USER+4)
317 #define SB_SETBORDERS           (WM_USER+5)
318 #define SB_GETPARTS             (WM_USER+6)
319 #define SB_GETBORDERS           (WM_USER+7)
320 #define SB_SETMINHEIGHT         (WM_USER+8)
321 #define SB_SIMPLE               (WM_USER+9)
322 #define SB_GETRECT              (WM_USER+10)
323 #define SB_ISSIMPLE             (WM_USER+14)
324 #define SB_SETICON              (WM_USER+15)
325 #define SB_SETTIPTEXTA          (WM_USER+16)
326 #define SB_SETTIPTEXTW          (WM_USER+17)
327 #define SB_SETTIPTEXT           WINELIB_NAME_AW(SB_SETTIPTEXT)
328 #define SB_GETTIPTEXTA          (WM_USER+18)
329 #define SB_GETTIPTEXTW          (WM_USER+19)
330 #define SB_GETTIPTEXT           WINELIB_NAME_AW(SB_GETTIPTEXT)
331 #define SB_GETICON              (WM_USER+20)
332 #define SB_SETBKCOLOR           CCM_SETBKCOLOR   /* lParam = bkColor */
333 #define SB_GETUNICODEFORMAT     CCM_GETUNICODEFORMAT
334 #define SB_SETUNICODEFORMAT     CCM_SETUNICODEFORMAT
335 
336 #define SBN_FIRST               (0U-880U)
337 #define SBN_LAST                (0U-899U)
338 #define SBN_SIMPLEMODECHANGE    (SBN_FIRST-0)
339 
340 HWND WINAPI CreateStatusWindowA (LONG, LPCSTR, HWND, UINT);
341 HWND WINAPI CreateStatusWindowW (LONG, LPCWSTR, HWND, UINT);
342 #define CreateStatusWindow WINELIB_NAME_AW(CreateStatusWindow)
343 VOID WINAPI DrawStatusTextA (HDC, LPCRECT, LPCSTR, UINT);
344 VOID WINAPI DrawStatusTextW (HDC, LPCRECT, LPCWSTR, UINT);
345 #define DrawStatusText WINELIB_NAME_AW(DrawStatusText)
346 VOID WINAPI MenuHelp (UINT, WPARAM, LPARAM, HMENU,
347                       HINSTANCE, HWND, UINT*);
348 
349 typedef struct tagCOLORSCHEME
350 {
351    DWORD            dwSize;
352    COLORREF         clrBtnHighlight;       /* highlight color */
353    COLORREF         clrBtnShadow;          /* shadow color */
354 } COLORSCHEME, *LPCOLORSCHEME;
355 
356 /**************************************************************************
357  *  Drag List control
358  */
359 
360 typedef struct tagDRAGLISTINFO
361 {
362     UINT  uNotification;
363     HWND  hWnd;
364     POINT ptCursor;
365 } DRAGLISTINFO, *LPDRAGLISTINFO;
366 
367 #define DL_BEGINDRAG            (WM_USER+133)
368 #define DL_DRAGGING             (WM_USER+134)
369 #define DL_DROPPED              (WM_USER+135)
370 #define DL_CANCELDRAG           (WM_USER+136)
371 
372 #define DL_CURSORSET            0
373 #define DL_STOPCURSOR           1
374 #define DL_COPYCURSOR           2
375 #define DL_MOVECURSOR           3
376 
377 #define DRAGLISTMSGSTRINGA      "commctrl_DragListMsg"
378 #if defined(__GNUC__)
379 # define DRAGLISTMSGSTRINGW (const WCHAR []){ 'c','o','m','m','c','t','r','l', \
380   '_','D','r','a','g','L','i','s','t','M','s','g',0 }
381 #elif defined(_MSC_VER)
382 # define DRAGLISTMSGSTRINGW     L"commctrl_DragListMsg"
383 #else
384 static const WCHAR DRAGLISTMSGSTRINGW[] = { 'c','o','m','m','c','t','r','l',
385   '_','D','r','a','g','L','i','s','t','M','s','g',0 };
386 #endif
387 #define DRAGLISTMSGSTRING       WINELIB_NAME_AW(DRAGLISTMSGSTRING)
388 
389 BOOL WINAPI MakeDragList (HWND);
390 VOID   WINAPI DrawInsert (HWND, HWND, INT);
391 INT  WINAPI LBItemFromPt (HWND, POINT, BOOL);
392 
393 
394 /* UpDown */
395 
396 #define UPDOWN_CLASSA           "msctls_updown32"
397 #if defined(__GNUC__)
398 # define UPDOWN_CLASSW (const WCHAR []){ 'm','s','c','t','l','s','_', \
399   'u','p','d','o','w','n','3','2',0 }
400 #elif defined(_MSC_VER)
401 # define UPDOWN_CLASSW          L"msctls_updown32"
402 #else
403 static const WCHAR UPDOWN_CLASSW[] = { 'm','s','c','t','l','s','_',
404   'u','p','d','o','w','n','3','2',0 };
405 #endif
406 #define UPDOWN_CLASS            WINELIB_NAME_AW(UPDOWN_CLASS)
407 
408 typedef struct _UDACCEL
409 {
410     UINT nSec;
411     UINT nInc;
412 } UDACCEL, *LPUDACCEL;
413 
414 #define UD_MAXVAL          0x7fff
415 #define UD_MINVAL          0x8001
416 
417 #define UDS_WRAP           0x0001
418 #define UDS_SETBUDDYINT    0x0002
419 #define UDS_ALIGNRIGHT     0x0004
420 #define UDS_ALIGNLEFT      0x0008
421 #define UDS_AUTOBUDDY      0x0010
422 #define UDS_ARROWKEYS      0x0020
423 #define UDS_HORZ           0x0040
424 #define UDS_NOTHOUSANDS    0x0080
425 #define UDS_HOTTRACK       0x0100
426 
427 #define UDN_FIRST          (0U-721)
428 #define UDN_LAST           (0U-740)
429 #define UDN_DELTAPOS       (UDN_FIRST-1)
430 
431 #define UDM_SETRANGE       (WM_USER+101)
432 #define UDM_GETRANGE       (WM_USER+102)
433 #define UDM_SETPOS         (WM_USER+103)
434 #define UDM_GETPOS         (WM_USER+104)
435 #define UDM_SETBUDDY       (WM_USER+105)
436 #define UDM_GETBUDDY       (WM_USER+106)
437 #define UDM_SETACCEL       (WM_USER+107)
438 #define UDM_GETACCEL       (WM_USER+108)
439 #define UDM_SETBASE        (WM_USER+109)
440 #define UDM_GETBASE        (WM_USER+110)
441 #define UDM_SETRANGE32     (WM_USER+111)
442 #define UDM_GETRANGE32     (WM_USER+112)
443 #define UDM_SETUNICODEFORMAT    CCM_SETUNICODEFORMAT
444 #define UDM_GETUNICODEFORMAT    CCM_GETUNICODEFORMAT
445 #define UDM_SETPOS32       (WM_USER+113)
446 #define UDM_GETPOS32       (WM_USER+114)
447 
448 
449 #define NMUPDOWN    NM_UPDOWN
450 #define LPNMUPDOWN  LPNM_UPDOWN
451 
452 typedef struct tagNM_UPDOWN
453 {
454   NMHDR hdr;
455   int iPos;
456   int iDelta;
457 } NM_UPDOWN, *LPNM_UPDOWN;
458 
459 HWND WINAPI CreateUpDownControl (DWORD, INT, INT, INT, INT,
460                                    HWND, INT, HINSTANCE, HWND,
461                                    INT, INT, INT);
462 
463 /* Progress Bar */
464 
465 #define PROGRESS_CLASSA   "msctls_progress32"
466 #if defined(__GNUC__)
467 # define PROGRESS_CLASSW (const WCHAR []){ 'm','s','c','t','l','s','_', \
468   'p','r','o','g','r','e','s','s','3','2',0 }
469 #elif defined(_MSC_VER)
470 # define PROGRESS_CLASSW  L"msctls_progress32"
471 #else
472 static const WCHAR PROGRESS_CLASSW[] = { 'm','s','c','t','l','s','_',
473   'p','r','o','g','r','e','s','s','3','2',0 };
474 #endif
475 #define PROGRESS_CLASS      WINELIB_NAME_AW(PROGRESS_CLASS)
476 
477 #define PBM_SETRANGE        (WM_USER+1)
478 #define PBM_SETPOS          (WM_USER+2)
479 #define PBM_DELTAPOS        (WM_USER+3)
480 #define PBM_SETSTEP         (WM_USER+4)
481 #define PBM_STEPIT          (WM_USER+5)
482 #define PBM_SETRANGE32      (WM_USER+6)
483 #define PBM_GETRANGE        (WM_USER+7)
484 #define PBM_GETPOS          (WM_USER+8)
485 #define PBM_SETBARCOLOR     (WM_USER+9)
486 #define PBM_SETMARQUEE      (WM_USER+10)
487 #define PBM_SETBKCOLOR      CCM_SETBKCOLOR
488 
489 #define PBS_SMOOTH          0x01
490 #define PBS_VERTICAL        0x04
491 #define PBS_MARQUEE         0x08
492 
493 typedef struct
494 {
495     INT iLow;
496     INT iHigh;
497 } PBRANGE, *PPBRANGE;
498 
499 
500 /* ImageList */
501 
502 struct _IMAGELIST;
503 typedef struct _IMAGELIST *HIMAGELIST;
504 
505 #define CLR_NONE         0xFFFFFFFF
506 #define CLR_DEFAULT      0xFF000000
507 #define CLR_HILIGHT      CLR_DEFAULT
508 
509 #define ILC_MASK          0x0001
510 #define ILC_COLOR         0x0000
511 #define ILC_COLORDDB      0x00FE
512 #define ILC_COLOR4        0x0004
513 #define ILC_COLOR8        0x0008
514 #define ILC_COLOR16       0x0010
515 #define ILC_COLOR24       0x0018
516 #define ILC_COLOR32       0x0020
517 #define ILC_PALETTE       0x0800  /* no longer supported by M$ */
518 #define ILC_MIRROR        0x2000
519 #define ILC_PERITEMMIRROR 0x8000
520 
521 #define ILD_NORMAL        0x0000
522 #define ILD_TRANSPARENT   0x0001
523 #define ILD_BLEND25       0x0002
524 #define ILD_BLEND50       0x0004
525 #define ILD_MASK          0x0010
526 #define ILD_IMAGE         0x0020
527 #define ILD_ROP           0x0040
528 #define ILD_OVERLAYMASK   0x0F00
529 #define ILD_PRESERVEALPHA 0x1000
530 #define ILD_SCALE         0x2000
531 #define ILD_DPISCALE      0x4000
532 #define ILD_ASYNC         0x8000
533 
534 #define ILD_SELECTED     ILD_BLEND50
535 #define ILD_FOCUS        ILD_BLEND25
536 #define ILD_BLEND        ILD_BLEND50
537 
538 #define INDEXTOOVERLAYMASK(i)  ((i)<<8)
539 #define INDEXTOSTATEIMAGEMASK(i) ((i)<<12)
540 
541 #define ILCF_MOVE        (0x00000000)
542 #define ILCF_SWAP        (0x00000001)
543 
544 #define ILGT_NORMAL     0x0000
545 #define ILGT_ASYNC      0x0001
546 
547 #define ILS_NORMAL      0x0000
548 #define ILS_GLOW        0x0001
549 #define ILS_SHADOW      0x0002
550 #define ILS_SATURATE    0x0004
551 #define ILS_ALPHA       0x0008
552 
553 typedef struct _IMAGEINFO
554 {
555     HBITMAP hbmImage;
556     HBITMAP hbmMask;
557     INT     Unused1;
558     INT     Unused2;
559     RECT    rcImage;
560 } IMAGEINFO, *LPIMAGEINFO;
561 
562 
563 typedef struct _IMAGELISTDRAWPARAMS
564 {
565     DWORD       cbSize;
566     HIMAGELIST  himl;
567     INT         i;
568     HDC         hdcDst;
569     INT         x;
570     INT         y;
571     INT         cx;
572     INT         cy;
573     INT         xBitmap;  /* x offest from the upperleft of bitmap */
574     INT         yBitmap;  /* y offset from the upperleft of bitmap */
575     COLORREF    rgbBk;
576     COLORREF    rgbFg;
577     UINT        fStyle;
578     DWORD       dwRop;
579     DWORD       fState;
580     DWORD       Frame;
581     DWORD       crEffect;
582 } IMAGELISTDRAWPARAMS, *LPIMAGELISTDRAWPARAMS;
583 
584 
585 INT      WINAPI ImageList_Add(HIMAGELIST,HBITMAP,HBITMAP);
586 INT      WINAPI ImageList_AddMasked(HIMAGELIST,HBITMAP,COLORREF);
587 BOOL     WINAPI ImageList_BeginDrag(HIMAGELIST,INT,INT,INT);
588 BOOL     WINAPI ImageList_Copy(HIMAGELIST,INT,HIMAGELIST,INT,UINT);
589 HIMAGELIST WINAPI ImageList_Create(INT,INT,UINT,INT,INT);
590 BOOL     WINAPI ImageList_Destroy(HIMAGELIST);
591 BOOL     WINAPI ImageList_DragEnter(HWND,INT,INT);
592 BOOL     WINAPI ImageList_DragLeave(HWND);
593 BOOL     WINAPI ImageList_DragMove(INT,INT);
594 BOOL     WINAPI ImageList_DragShowNolock (BOOL);
595 BOOL     WINAPI ImageList_Draw(HIMAGELIST,INT,HDC,INT,INT,UINT);
596 BOOL     WINAPI ImageList_DrawEx(HIMAGELIST,INT,HDC,INT,INT,INT,
597                                    INT,COLORREF,COLORREF,UINT);
598 BOOL     WINAPI ImageList_DrawIndirect(IMAGELISTDRAWPARAMS*);
599 HIMAGELIST WINAPI ImageList_Duplicate(HIMAGELIST);
600 VOID     WINAPI ImageList_EndDrag(VOID);
601 COLORREF   WINAPI ImageList_GetBkColor(HIMAGELIST);
602 HIMAGELIST WINAPI ImageList_GetDragImage(POINT*,POINT*);
603 HICON    WINAPI ImageList_GetIcon(HIMAGELIST,INT,UINT);
604 BOOL     WINAPI ImageList_GetIconSize(HIMAGELIST,INT*,INT*);
605 INT      WINAPI ImageList_GetImageCount(HIMAGELIST);
606 BOOL     WINAPI ImageList_GetImageInfo(HIMAGELIST,INT,IMAGEINFO*);
607 BOOL     WINAPI ImageList_GetImageRect(HIMAGELIST,INT,LPRECT);
608 HIMAGELIST WINAPI ImageList_LoadImageA(HINSTANCE,LPCSTR,INT,INT,
609                                          COLORREF,UINT,UINT);
610 HIMAGELIST WINAPI ImageList_LoadImageW(HINSTANCE,LPCWSTR,INT,INT,
611                                          COLORREF,UINT,UINT);
612 #define    ImageList_LoadImage WINELIB_NAME_AW(ImageList_LoadImage)
613 HIMAGELIST WINAPI ImageList_Merge(HIMAGELIST,INT,HIMAGELIST,INT,INT,INT);
614 BOOL     WINAPI ImageList_Remove(HIMAGELIST,INT);
615 BOOL     WINAPI ImageList_Replace(HIMAGELIST,INT,HBITMAP,HBITMAP);
616 INT      WINAPI ImageList_ReplaceIcon(HIMAGELIST,INT,HICON);
617 COLORREF   WINAPI ImageList_SetBkColor(HIMAGELIST,COLORREF);
618 BOOL     WINAPI ImageList_SetDragCursorImage(HIMAGELIST,INT,INT,INT);
619 
620 BOOL     WINAPI ImageList_SetIconSize(HIMAGELIST,INT,INT);
621 BOOL     WINAPI ImageList_SetImageCount(HIMAGELIST,UINT);
622 BOOL     WINAPI ImageList_SetOverlayImage(HIMAGELIST,INT,INT);
623 
624 #ifdef __IStream_INTERFACE_DEFINED__
625 HIMAGELIST WINAPI ImageList_Read(LPSTREAM);
626 BOOL     WINAPI ImageList_Write(HIMAGELIST, LPSTREAM);
627 #endif
628 
629 #define ImageList_AddIcon(himl,hicon) ImageList_ReplaceIcon(himl,-1,hicon)
630 #define ImageList_ExtractIcon(hi,himl,i) ImageList_GetIcon(himl,i,0)
631 #define ImageList_LoadBitmap(hi,lpbmp,cx,cGrow,crMask) \
632   ImageList_LoadImage(hi,lpbmp,cx,cGrow,crMask,IMAGE_BITMAP,0)
633 #define ImageList_RemoveAll(himl) ImageList_Remove(himl,-1)
634 
635 
636 #ifndef WM_MOUSEHOVER
637 #define WM_MOUSEHOVER                   0x02A1
638 #define WM_MOUSELEAVE                   0x02A3
639 #endif
640 
641 #ifndef TME_HOVER
642 
643 #define TME_HOVER       0x00000001
644 #define TME_LEAVE       0x00000002
645 #define TME_NONCLIENT   0x00000010
646 #define TME_QUERY       0x40000000
647 #define TME_CANCEL      0x80000000
648 
649 
650 #define HOVER_DEFAULT   0xFFFFFFFF
651 
652 typedef struct tagTRACKMOUSEEVENT {
653     DWORD cbSize;
654     DWORD dwFlags;
655     HWND  hwndTrack;
656     DWORD dwHoverTime;
657 } TRACKMOUSEEVENT, *LPTRACKMOUSEEVENT;
658 
659 #endif
660 
661 BOOL WINAPI _TrackMouseEvent(LPTRACKMOUSEEVENT lpEventTrack);
662 
663 /* Flat Scrollbar control */
664 
665 #define FLATSB_CLASSA         "flatsb_class32"
666 #if defined(__GNUC__)
667 # define FLATSB_CLASSW (const WCHAR []){ 'f','l','a','t','s','b','_', \
668   'c','l','a','s','s','3','2',0 }
669 #elif defined(_MSC_VER)
670 # define FLATSB_CLASSW        L"flatsb_class32"
671 #else
672 static const WCHAR FLATSB_CLASSW[] = { 'f','l','a','t','s','b','_',
673   'c','l','a','s','s','3','2',0 };
674 #endif
675 #define FLATSB_CLASS          WINELIB_NAME_AW(FLATSB_CLASS)
676 
677 #define WSB_PROP_CYVSCROLL     0x00000001L
678 #define WSB_PROP_CXHSCROLL     0x00000002L
679 #define WSB_PROP_CYHSCROLL     0x00000004L
680 #define WSB_PROP_CXVSCROLL     0x00000008L
681 #define WSB_PROP_CXHTHUMB      0x00000010L
682 #define WSB_PROP_CYVTHUMB      0x00000020L
683 #define WSB_PROP_VBKGCOLOR     0x00000040L
684 #define WSB_PROP_HBKGCOLOR     0x00000080L
685 #define WSB_PROP_VSTYLE        0x00000100L
686 #define WSB_PROP_HSTYLE        0x00000200L
687 #define WSB_PROP_WINSTYLE      0x00000400L
688 #define WSB_PROP_PALETTE       0x00000800L
689 #define WSB_PROP_MASK          0x00000FFFL
690 
691 #define FSB_REGULAR_MODE       0
692 #define FSB_ENCARTA_MODE       1
693 #define FSB_FLAT_MODE          2
694 
695 
696 BOOL  WINAPI FlatSB_EnableScrollBar(HWND, INT, UINT);
697 BOOL  WINAPI FlatSB_ShowScrollBar(HWND, INT, BOOL);
698 BOOL  WINAPI FlatSB_GetScrollRange(HWND, INT, LPINT, LPINT);
699 BOOL  WINAPI FlatSB_GetScrollInfo(HWND, INT, LPSCROLLINFO);
700 INT   WINAPI FlatSB_GetScrollPos(HWND, INT);
701 BOOL  WINAPI FlatSB_GetScrollProp(HWND, INT, LPINT);
702 INT   WINAPI FlatSB_SetScrollPos(HWND, INT, INT, BOOL);
703 INT   WINAPI FlatSB_SetScrollInfo(HWND, INT, LPSCROLLINFO, BOOL);
704 INT   WINAPI FlatSB_SetScrollRange(HWND, INT, INT, INT, BOOL);
705 BOOL  WINAPI FlatSB_SetScrollProp(HWND, UINT, INT, BOOL);
706 BOOL  WINAPI InitializeFlatSB(HWND);
707 HRESULT WINAPI UninitializeFlatSB(HWND);
708 
709 /* Subclassing stuff */
710 typedef LRESULT (CALLBACK *SUBCLASSPROC)(HWND, UINT, WPARAM, LPARAM, UINT_PTR, DWORD_PTR);
711 BOOL WINAPI SetWindowSubclass(HWND, SUBCLASSPROC, UINT_PTR, DWORD_PTR);
712 BOOL WINAPI GetWindowSubclass(HWND, SUBCLASSPROC, UINT_PTR, DWORD_PTR*);
713 BOOL WINAPI RemoveWindowSubclass(HWND, SUBCLASSPROC, UINT_PTR);
714 LRESULT WINAPI DefSubclassProc(HWND, UINT, WPARAM, LPARAM);
715 
716 int WINAPI DrawShadowText(HDC, LPCWSTR, UINT, RECT*, DWORD, COLORREF, COLORREF, int, int);
717 
718 /* Header control */
719 
720 #define WC_HEADERA              "SysHeader32"
721 #if defined(__GNUC__)
722 # define WC_HEADERW (const WCHAR []){ 'S','y','s','H','e','a','d','e','r','3','2',0 }
723 #elif defined(_MSC_VER)
724 # define WC_HEADERW             L"SysHeader32"
725 #else
726 static const WCHAR WC_HEADERW[] = { 'S','y','s','H','e','a','d','e','r','3','2',0 };
727 #endif
728 #define WC_HEADER               WINELIB_NAME_AW(WC_HEADER)
729 
730 #define HDS_HORZ                0x0000
731 #define HDS_BUTTONS             0x0002
732 #define HDS_HOTTRACK            0x0004
733 #define HDS_HIDDEN              0x0008
734 #define HDS_DRAGDROP            0x0040
735 #define HDS_FULLDRAG            0x0080
736 #define HDS_FILTERBAR           0x0100
737 #define HDS_FLAT                0x0200
738 #define HDS_CHECKBOXES          0x0400
739 
740 #define HDI_WIDTH               0x0001
741 #define HDI_HEIGHT              HDI_WIDTH
742 #define HDI_TEXT                0x0002
743 #define HDI_FORMAT              0x0004
744 #define HDI_LPARAM              0x0008
745 #define HDI_BITMAP              0x0010
746 #define HDI_IMAGE               0x0020
747 #define HDI_DI_SETITEM          0x0040
748 #define HDI_ORDER               0x0080
749 #define HDI_FILTER              0x0100
750 
751 #define HDF_LEFT                0x0000
752 #define HDF_RIGHT               0x0001
753 #define HDF_CENTER              0x0002
754 #define HDF_JUSTIFYMASK         0x0003
755 #define HDF_RTLREADING          0x0004
756 #define HDF_CHECKBOX            0x0040
757 #define HDF_CHECKED             0x0080
758 #define HDF_FIXEDWIDTH          0x0100
759 #define HDF_SORTDOWN            0x0200
760 #define HDF_SORTUP              0x0400
761 #define HDF_IMAGE               0x0800
762 #define HDF_BITMAP_ON_RIGHT     0x1000
763 #define HDF_BITMAP              0x2000
764 #define HDF_STRING              0x4000
765 #define HDF_OWNERDRAW           0x8000
766 
767 #define HHT_NOWHERE             0x0001
768 #define HHT_ONHEADER            0x0002
769 #define HHT_ONDIVIDER           0x0004
770 #define HHT_ONDIVOPEN           0x0008
771 #define HHT_ONFILTER            0x0010
772 #define HHT_ONFILTERBUTTON      0x0020
773 #define HHT_ABOVE               0x0100
774 #define HHT_BELOW               0x0200
775 #define HHT_TORIGHT             0x0400
776 #define HHT_TOLEFT              0x0800
777 #define HHT_ONITEMSTATEICON     0x1000
778 
779 #define HDM_FIRST               0x1200
780 #define HDM_GETITEMCOUNT        (HDM_FIRST+0)
781 #define HDM_INSERTITEMA         (HDM_FIRST+1)
782 #define HDM_INSERTITEMW         (HDM_FIRST+10)
783 #define HDM_INSERTITEM          WINELIB_NAME_AW(HDM_INSERTITEM)
784 #define HDM_DELETEITEM          (HDM_FIRST+2)
785 #define HDM_GETITEMA            (HDM_FIRST+3)
786 #define HDM_GETITEMW            (HDM_FIRST+11)
787 #define HDM_GETITEM             WINELIB_NAME_AW(HDM_GETITEM)
788 #define HDM_SETITEMA            (HDM_FIRST+4)
789 #define HDM_SETITEMW            (HDM_FIRST+12)
790 #define HDM_SETITEM             WINELIB_NAME_AW(HDM_SETITEM)
791 #define HDM_LAYOUT              (HDM_FIRST+5)
792 #define HDM_HITTEST             (HDM_FIRST+6)
793 #define HDM_GETITEMRECT         (HDM_FIRST+7)
794 #define HDM_SETIMAGELIST        (HDM_FIRST+8)
795 #define HDM_GETIMAGELIST        (HDM_FIRST+9)
796 
797 #define HDM_ORDERTOINDEX        (HDM_FIRST+15)
798 #define HDM_CREATEDRAGIMAGE     (HDM_FIRST+16)
799 #define HDM_GETORDERARRAY       (HDM_FIRST+17)
800 #define HDM_SETORDERARRAY       (HDM_FIRST+18)
801 #define HDM_SETHOTDIVIDER       (HDM_FIRST+19)
802 #define HDM_SETBITMAPMARGIN     (HDM_FIRST+20)
803 #define HDM_GETBITMAPMARGIN     (HDM_FIRST+21)
804 #define HDM_SETFILTERCHANGETIMEOUT (HDM_FIRST+22)
805 #define HDM_EDITFILTER          (HDM_FIRST+23)
806 #define HDM_CLEARFILTER         (HDM_FIRST+24)
807 #define HDM_GETUNICODEFORMAT    CCM_GETUNICODEFORMAT
808 #define HDM_SETUNICODEFORMAT    CCM_SETUNICODEFORMAT
809 
810 #define HDN_FIRST               (0U-300U)
811 #define HDN_LAST                (0U-399U)
812 #define HDN_ITEMCHANGINGA       (HDN_FIRST-0)
813 #define HDN_ITEMCHANGINGW       (HDN_FIRST-20)
814 #define HDN_ITEMCHANGING        WINELIB_NAME_AW(HDN_ITEMCHANGING)
815 #define HDN_ITEMCHANGEDA        (HDN_FIRST-1)
816 #define HDN_ITEMCHANGEDW        (HDN_FIRST-21)
817 #define HDN_ITEMCHANGED         WINELIB_NAME_AW(HDN_ITEMCHANGED)
818 #define HDN_ITEMCLICKA          (HDN_FIRST-2)
819 #define HDN_ITEMCLICKW          (HDN_FIRST-22)
820 #define HDN_ITEMCLICK           WINELIB_NAME_AW(HDN_ITEMCLICK)
821 #define HDN_ITEMDBLCLICKA       (HDN_FIRST-3)
822 #define HDN_ITEMDBLCLICKW       (HDN_FIRST-23)
823 #define HDN_ITEMDBLCLICK        WINELIB_NAME_AW(HDN_ITEMDBLCLICK)
824 #define HDN_DIVIDERDBLCLICKA    (HDN_FIRST-5)
825 #define HDN_DIVIDERDBLCLICKW    (HDN_FIRST-25)
826 #define HDN_DIVIDERDBLCLICK     WINELIB_NAME_AW(HDN_DIVIDERDBLCLICK)
827 #define HDN_BEGINTRACKA         (HDN_FIRST-6)
828 #define HDN_BEGINTRACKW         (HDN_FIRST-26)
829 #define HDN_BEGINTRACK          WINELIB_NAME_AW(HDN_BEGINTRACK)
830 #define HDN_ENDTRACKA           (HDN_FIRST-7)
831 #define HDN_ENDTRACKW           (HDN_FIRST-27)
832 #define HDN_ENDTRACK            WINELIB_NAME_AW(HDN_ENDTRACK)
833 #define HDN_TRACKA              (HDN_FIRST-8)
834 #define HDN_TRACKW              (HDN_FIRST-28)
835 #define HDN_TRACK               WINELIB_NAME_AW(HDN_TRACK)
836 #define HDN_GETDISPINFOA        (HDN_FIRST-9)
837 #define HDN_GETDISPINFOW        (HDN_FIRST-29)
838 #define HDN_GETDISPINFO         WINELIB_NAME_AW(HDN_GETDISPINFO)
839 #define HDN_BEGINDRAG           (HDN_FIRST-10)
840 #define HDN_ENDDRAG             (HDN_FIRST-11)
841 #define HDN_FILTERCHANGE        (HDN_FIRST-12)
842 #define HDN_FILTERBTNCLICK      (HDN_FIRST-13)
843 #define HDN_BEGINFILTEREDIT     (HDN_FIRST-14)
844 #define HDN_ENDFILTEREDIT       (HDN_FIRST-15)
845 #define HDN_ITEMSTATEICONCLICK  (HDN_FIRST-16)
846 #define HDN_ITEMKEYDOWN         (HDN_FIRST-17)
847 
848 typedef struct _HD_LAYOUT
849 {
850     RECT      *prc;
851     WINDOWPOS *pwpos;
852 } HDLAYOUT, *LPHDLAYOUT;
853 
854 #define HD_LAYOUT   HDLAYOUT
855 
856 typedef struct _HD_ITEMA
857 {
858     UINT    mask;
859     INT     cxy;
860     LPSTR     pszText;
861     HBITMAP hbm;
862     INT     cchTextMax;
863     INT     fmt;
864     LPARAM    lParam;
865     INT     iImage;
866     INT     iOrder;
867     UINT    type;