Home | History | Annotate | Download | only in include
      1 /**
      2  * This file is part of the mingw-w64 runtime package.
      3  * No warranty is given; refer to the file DISCLAIMER within this package.
      4  */
      5 
      6 #include <winapifamily.h>
      7 
      8 #ifndef _INC_COMMCTRL
      9 #define _INC_COMMCTRL
     10 
     11 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
     12 
     13 #include <_mingw_unicode.h>
     14 
     15 #ifndef _WINRESRC_
     16 #ifndef _WIN32_IE
     17 #define _WIN32_IE 0x0501
     18 #endif
     19 #endif
     20 
     21 #ifndef _HRESULT_DEFINED
     22 #define _HRESULT_DEFINED
     23 typedef LONG HRESULT;
     24 #endif
     25 
     26 #ifndef NOUSER
     27 #ifndef WINCOMMCTRLAPI
     28 #ifndef _COMCTL32_
     29 #define WINCOMMCTRLAPI DECLSPEC_IMPORT
     30 #else
     31 #define WINCOMMCTRLAPI
     32 #endif
     33 #endif
     34 
     35 #ifdef __cplusplus
     36 extern "C" {
     37 #endif
     38 
     39 #include <prsht.h>
     40 
     41 #ifndef SNDMSG
     42 #ifdef __cplusplus
     43 #define SNDMSG ::SendMessage
     44 #else
     45 #define SNDMSG SendMessage
     46 #endif
     47 #endif
     48 
     49   WINCOMMCTRLAPI void WINAPI InitCommonControls(void);
     50 
     51   typedef struct tagINITCOMMONCONTROLSEX {
     52     DWORD dwSize;
     53     DWORD dwICC;
     54   } INITCOMMONCONTROLSEX,*LPINITCOMMONCONTROLSEX;
     55 
     56 #define ICC_LISTVIEW_CLASSES 0x1
     57 #define ICC_TREEVIEW_CLASSES 0x2
     58 #define ICC_BAR_CLASSES 0x4
     59 #define ICC_TAB_CLASSES 0x8
     60 #define ICC_UPDOWN_CLASS 0x10
     61 #define ICC_PROGRESS_CLASS 0x20
     62 #define ICC_HOTKEY_CLASS 0x40
     63 #define ICC_ANIMATE_CLASS 0x80
     64 #define ICC_WIN95_CLASSES 0xff
     65 #define ICC_DATE_CLASSES 0x100
     66 #define ICC_USEREX_CLASSES 0x200
     67 #define ICC_COOL_CLASSES 0x400
     68 #define ICC_INTERNET_CLASSES 0x800
     69 #define ICC_PAGESCROLLER_CLASS 0x1000
     70 #define ICC_NATIVEFNTCTL_CLASS 0x2000
     71 #define ICC_STANDARD_CLASSES 0x4000
     72 #define ICC_LINK_CLASS 0x8000
     73 
     74   WINCOMMCTRLAPI WINBOOL WINAPI InitCommonControlsEx(const INITCOMMONCONTROLSEX *);
     75 
     76 #define ODT_HEADER 100
     77 #define ODT_TAB 101
     78 #define ODT_LISTVIEW 102
     79 
     80 #define LVM_FIRST 0x1000
     81 #define TV_FIRST 0x1100
     82 #define HDM_FIRST 0x1200
     83 #define TCM_FIRST 0x1300
     84 #define PGM_FIRST 0x1400
     85 #define ECM_FIRST 0x1500
     86 #define BCM_FIRST 0x1600
     87 #define CBM_FIRST 0x1700
     88 
     89 #define CCM_FIRST 0x2000
     90 #define CCM_LAST (CCM_FIRST+0x200)
     91 #define CCM_SETBKCOLOR (CCM_FIRST+1)
     92 #define CCM_SETCOLORSCHEME (CCM_FIRST+2)
     93 #define CCM_GETCOLORSCHEME (CCM_FIRST+3)
     94 #define CCM_GETDROPTARGET (CCM_FIRST+4)
     95 #define CCM_SETUNICODEFORMAT (CCM_FIRST+5)
     96 #define CCM_GETUNICODEFORMAT (CCM_FIRST+6)
     97 #define CCM_SETVERSION (CCM_FIRST+0x7)
     98 #define CCM_GETVERSION (CCM_FIRST+0x8)
     99 #define CCM_SETNOTIFYWINDOW (CCM_FIRST+0x9)
    100 #define CCM_SETWINDOWTHEME (CCM_FIRST+0xb)
    101 #define CCM_DPISCALE (CCM_FIRST+0xc)
    102 
    103 #define COMCTL32_VERSION 6
    104 
    105   typedef struct tagCOLORSCHEME {
    106     DWORD dwSize;
    107     COLORREF clrBtnHighlight;
    108     COLORREF clrBtnShadow;
    109   } COLORSCHEME,*LPCOLORSCHEME;
    110 
    111 #define INFOTIPSIZE 1024
    112 
    113 #define HANDLE_WM_NOTIFY(hwnd,wParam,lParam,fn) (fn)((hwnd),(int)(wParam),(NMHDR *)(lParam))
    114 #define FORWARD_WM_NOTIFY(hwnd,idFrom,pnmhdr,fn) (LRESULT)(fn)((hwnd),WM_NOTIFY,(WPARAM)(int)(idFrom),(LPARAM)(NMHDR *)(pnmhdr))
    115 
    116 #define NM_OUTOFMEMORY (NM_FIRST-1)
    117 #define NM_CLICK (NM_FIRST-2)
    118 #define NM_DBLCLK (NM_FIRST-3)
    119 #define NM_RETURN (NM_FIRST-4)
    120 #define NM_RCLICK (NM_FIRST-5)
    121 #define NM_RDBLCLK (NM_FIRST-6)
    122 #define NM_SETFOCUS (NM_FIRST-7)
    123 #define NM_KILLFOCUS (NM_FIRST-8)
    124 #define NM_CUSTOMDRAW (NM_FIRST-12)
    125 #define NM_HOVER (NM_FIRST-13)
    126 #define NM_NCHITTEST (NM_FIRST-14)
    127 #define NM_KEYDOWN (NM_FIRST-15)
    128 #define NM_RELEASEDCAPTURE (NM_FIRST-16)
    129 #define NM_SETCURSOR (NM_FIRST-17)
    130 #define NM_CHAR (NM_FIRST-18)
    131 #define NM_TOOLTIPSCREATED (NM_FIRST-19)
    132 #define NM_LDOWN (NM_FIRST-20)
    133 #define NM_RDOWN (NM_FIRST-21)
    134 #define NM_THEMECHANGED (NM_FIRST-22)
    135 #if NTDDI_VERSION >= 0x06000000
    136 #define NM_FONTCHANGED (NM_FIRST-23)
    137 #define NM_CUSTOMTEXT (NM_FIRST-24)
    138 #define NM_TVSTATEIMAGECHANGING (NM_FIRST-24)
    139 #endif
    140 
    141 #ifndef CCSIZEOF_STRUCT
    142 #define CCSIZEOF_STRUCT(structname,member) (((int)((LPBYTE)(&((structname*)0)->member) - ((LPBYTE)((structname*)0))))+sizeof(((structname*)0)->member))
    143 #endif
    144 
    145   typedef struct tagNMTOOLTIPSCREATED {
    146     NMHDR hdr;
    147     HWND hwndToolTips;
    148   } NMTOOLTIPSCREATED,*LPNMTOOLTIPSCREATED;
    149 
    150   typedef struct tagNMMOUSE {
    151     NMHDR hdr;
    152     DWORD_PTR dwItemSpec;
    153     DWORD_PTR dwItemData;
    154     POINT pt;
    155     LPARAM dwHitInfo;
    156   } NMMOUSE,*LPNMMOUSE;
    157 
    158   typedef NMMOUSE NMCLICK;
    159   typedef LPNMMOUSE LPNMCLICK;
    160 
    161   typedef struct tagNMOBJECTNOTIFY {
    162     NMHDR hdr;
    163     int iItem;
    164 #ifdef __IID_DEFINED__
    165     const IID *piid;
    166 #else
    167     const void *piid;
    168 #endif
    169     void *pObject;
    170     HRESULT hResult;
    171     DWORD dwFlags;
    172   } NMOBJECTNOTIFY,*LPNMOBJECTNOTIFY;
    173 
    174   typedef struct tagNMKEY {
    175     NMHDR hdr;
    176     UINT nVKey;
    177     UINT uFlags;
    178   } NMKEY,*LPNMKEY;
    179 
    180   typedef struct tagNMCHAR {
    181     NMHDR hdr;
    182     UINT ch;
    183     DWORD dwItemPrev;
    184     DWORD dwItemNext;
    185   } NMCHAR,*LPNMCHAR;
    186 
    187 #if _WIN32_IE >= 0x0600
    188   typedef struct tagNMCUSTOMTEXT {
    189     NMHDR hdr;
    190     HDC hDC;
    191     LPCWSTR lpString;
    192     int nCount;
    193     LPRECT lpRect;
    194     UINT uFormat;
    195     WINBOOL fLink;
    196   } NMCUSTOMTEXT,*LPNMCUSTOMTEXT;
    197 #endif
    198 
    199 #define NM_FIRST (0U- 0U)
    200 #define NM_LAST (0U- 99U)
    201 
    202 #define LVN_FIRST (0U-100U)
    203 #define LVN_LAST (0U-199U)
    204 
    205 #define HDN_FIRST (0U-300U)
    206 #define HDN_LAST (0U-399U)
    207 
    208 #define TVN_FIRST (0U-400U)
    209 #define TVN_LAST (0U-499U)
    210 
    211 #define TTN_FIRST (0U-520U)
    212 #define TTN_LAST (0U-549U)
    213 
    214 #define TCN_FIRST (0U-550U)
    215 #define TCN_LAST (0U-580U)
    216 
    217 #ifndef CDN_FIRST
    218 #define CDN_FIRST (0U-601U)
    219 #define CDN_LAST (0U-699U)
    220 #endif
    221 
    222 #define TBN_FIRST (0U-700U)
    223 #define TBN_LAST (0U-720U)
    224 
    225 #define UDN_FIRST (0U-721)
    226 #define UDN_LAST (0U-729U)
    227 #define DTN_FIRST (0U-740U)
    228 #define DTN_LAST (0U-745U)
    229 
    230 #define MCN_FIRST (0U-746U)
    231 #define MCN_LAST (0U-752U)
    232 
    233 #define DTN_FIRST2 (0U-753U)
    234 #define DTN_LAST2 (0U-799U)
    235 
    236 #define CBEN_FIRST (0U-800U)
    237 #define CBEN_LAST (0U-830U)
    238 #define RBN_FIRST (0U-831U)
    239 #define RBN_LAST (0U-859U)
    240 
    241 #define IPN_FIRST (0U-860U)
    242 #define IPN_LAST (0U-879U)
    243 #define SBN_FIRST (0U-880U)
    244 #define SBN_LAST (0U-899U)
    245 #define PGN_FIRST (0U-900U)
    246 #define PGN_LAST (0U-950U)
    247 
    248 #ifndef WMN_FIRST
    249 #define WMN_FIRST (0U-1000U)
    250 #define WMN_LAST (0U-1200U)
    251 #endif
    252 
    253 #define BCN_FIRST (0U-1250U)
    254 #define BCN_LAST (0U-1350U)
    255 
    256 #if NTDDI_VERSION >= 0x06000000
    257 #define TRBN_FIRST (0U-1501U)
    258 #define TRBN_LAST (0U-1519U)
    259 #endif
    260 
    261 #define MSGF_COMMCTRL_BEGINDRAG 0x4200
    262 #define MSGF_COMMCTRL_SIZEHEADER 0x4201
    263 #define MSGF_COMMCTRL_DRAGSELECT 0x4202
    264 #define MSGF_COMMCTRL_TOOLBARCUST 0x4203
    265 
    266 #define CDRF_DODEFAULT 0x0
    267 #define CDRF_NEWFONT 0x2
    268 #define CDRF_SKIPDEFAULT 0x4
    269 #define CDRF_DOERASE 0x8
    270 #define CDRF_SKIPPOSTPAINT 0x100
    271 
    272 #define CDRF_NOTIFYPOSTPAINT 0x10
    273 #define CDRF_NOTIFYITEMDRAW 0x20
    274 #define CDRF_NOTIFYSUBITEMDRAW 0x20
    275 #define CDRF_NOTIFYPOSTERASE 0x40
    276 
    277 #define CDDS_PREPAINT 0x1
    278 #define CDDS_POSTPAINT 0x2
    279 #define CDDS_PREERASE 0x3
    280 #define CDDS_POSTERASE 0x4
    281 #define CDDS_ITEM 0x10000
    282 #define CDDS_ITEMPREPAINT (CDDS_ITEM | CDDS_PREPAINT)
    283 #define CDDS_ITEMPOSTPAINT (CDDS_ITEM | CDDS_POSTPAINT)
    284 #define CDDS_ITEMPREERASE (CDDS_ITEM | CDDS_PREERASE)
    285 #define CDDS_ITEMPOSTERASE (CDDS_ITEM | CDDS_POSTERASE)
    286 #define CDDS_SUBITEM 0x20000
    287 
    288 #define CDIS_SELECTED 0x1
    289 #define CDIS_GRAYED 0x2
    290 #define CDIS_DISABLED 0x4
    291 #define CDIS_CHECKED 0x8
    292 #define CDIS_FOCUS 0x10
    293 #define CDIS_DEFAULT 0x20
    294 #define CDIS_HOT 0x40
    295 #define CDIS_MARKED 0x80
    296 #define CDIS_INDETERMINATE 0x100
    297 #define CDIS_SHOWKEYBOARDCUES 0x200
    298 #if NTDDI_VERSION >= 0x06000000
    299 #define CDIS_NEARHOT 0x0400
    300 #define CDIS_OTHERSIDEHOT 0x0800
    301 #define CDIS_DROPHILITED 0x1000
    302 #endif
    303 
    304   typedef struct tagNMCUSTOMDRAWINFO {
    305     NMHDR hdr;
    306     DWORD dwDrawStage;
    307     HDC hdc;
    308     RECT rc;
    309     DWORD_PTR dwItemSpec;
    310     UINT uItemState;
    311     LPARAM lItemlParam;
    312   } NMCUSTOMDRAW,*LPNMCUSTOMDRAW;
    313 
    314   typedef struct tagNMTTCUSTOMDRAW {
    315     NMCUSTOMDRAW nmcd;
    316     UINT uDrawFlags;
    317   } NMTTCUSTOMDRAW,*LPNMTTCUSTOMDRAW;
    318 
    319   typedef struct tagNMCUSTOMSPLITRECTINFO {
    320     NMHDR hdr;
    321     RECT rcClient;
    322     RECT rcButton;
    323     RECT rcSplit;
    324   } NMCUSTOMSPLITRECTINFO,*LPNMCUSTOMSPLITRECTINFO;
    325 
    326 #define NM_GETCUSTOMSPLITRECT (BCN_FIRST + 0x0003)
    327 
    328 #ifndef NOIMAGEAPIS
    329 
    330 #define CLR_NONE __MSABI_LONG(0xffffffff)
    331 #define CLR_DEFAULT __MSABI_LONG(0xff000000)
    332 
    333 #ifndef HIMAGELIST
    334   struct _IMAGELIST;
    335   typedef struct _IMAGELIST *HIMAGELIST;
    336 #endif
    337 
    338 #ifndef IMAGELISTDRAWPARAMS
    339   typedef struct _IMAGELISTDRAWPARAMS {
    340     DWORD cbSize;
    341     HIMAGELIST himl;
    342     int i;
    343     HDC hdcDst;
    344     int x;
    345     int y;
    346     int cx;
    347     int cy;
    348     int xBitmap;
    349     int yBitmap;
    350     COLORREF rgbBk;
    351     COLORREF rgbFg;
    352     UINT fStyle;
    353     DWORD dwRop;
    354     DWORD fState;
    355     DWORD Frame;
    356     COLORREF crEffect;
    357   } IMAGELISTDRAWPARAMS,*LPIMAGELISTDRAWPARAMS;
    358 
    359 #define IMAGELISTDRAWPARAMS_V3_SIZE CCSIZEOF_STRUCT(IMAGELISTDRAWPARAMS,dwRop)
    360 #endif
    361 
    362 #define ILC_MASK 0x1
    363 #define ILC_COLOR 0x0
    364 #define ILC_COLORDDB 0xfe
    365 #define ILC_COLOR4 0x4
    366 #define ILC_COLOR8 0x8
    367 #define ILC_COLOR16 0x10
    368 #define ILC_COLOR24 0x18
    369 #define ILC_COLOR32 0x20
    370 #define ILC_PALETTE 0x800
    371 #define ILC_MIRROR 0x2000
    372 #define ILC_PERITEMMIRROR 0x8000
    373 #if NTDDI_VERSION >= 0x06000000
    374 #define ILC_ORIGINALSIZE 0x00010000
    375 #define ILC_HIGHQUALITYSCALE 0x00020000
    376 #endif
    377 
    378   WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_Create(int cx,int cy,UINT flags,int cInitial,int cGrow);
    379   WINCOMMCTRLAPI WINBOOL WINAPI ImageList_Destroy(HIMAGELIST himl);
    380   WINCOMMCTRLAPI int WINAPI ImageList_GetImageCount(HIMAGELIST himl);
    381   WINCOMMCTRLAPI WINBOOL WINAPI ImageList_SetImageCount(HIMAGELIST himl,UINT uNewCount);
    382   WINCOMMCTRLAPI int WINAPI ImageList_Add(HIMAGELIST himl,HBITMAP hbmImage,HBITMAP hbmMask);
    383   WINCOMMCTRLAPI int WINAPI ImageList_ReplaceIcon(HIMAGELIST himl,int i,HICON hicon);
    384   WINCOMMCTRLAPI COLORREF WINAPI ImageList_SetBkColor(HIMAGELIST himl,COLORREF clrBk);
    385   WINCOMMCTRLAPI COLORREF WINAPI ImageList_GetBkColor(HIMAGELIST himl);
    386   WINCOMMCTRLAPI WINBOOL WINAPI ImageList_SetOverlayImage(HIMAGELIST himl,int iImage,int iOverlay);
    387 #define ImageList_AddIcon(himl,hicon) ImageList_ReplaceIcon(himl,-1,hicon)
    388 
    389 #define ILD_NORMAL 0x0
    390 #define ILD_TRANSPARENT 0x1
    391 #define ILD_MASK 0x10
    392 #define ILD_IMAGE 0x20
    393 #define ILD_ROP 0x40
    394 #define ILD_BLEND25 0x2
    395 #define ILD_BLEND50 0x4
    396 #define ILD_OVERLAYMASK 0xf00
    397 #define INDEXTOOVERLAYMASK(i) ((i) << 8)
    398 #define ILD_PRESERVEALPHA 0x1000
    399 #define ILD_SCALE 0x2000
    400 #define ILD_DPISCALE 0x4000
    401 #if NTDDI_VERSION >= 0x06000000
    402 #define ILD_ASYNC 0x8000
    403 #endif
    404 
    405 #define ILD_SELECTED ILD_BLEND50
    406 #define ILD_FOCUS ILD_BLEND25
    407 #define ILD_BLEND ILD_BLEND50
    408 #define CLR_HILIGHT CLR_DEFAULT
    409 
    410 #define ILS_NORMAL 0x0
    411 #define ILS_GLOW 0x1
    412 #define ILS_SHADOW 0x2
    413 #define ILS_SATURATE 0x4
    414 #define ILS_ALPHA 0x8
    415 
    416 #if NTDDI_VERSION >= 0x06000000
    417 #define ILGT_NORMAL 0x0
    418 #define ILGT_ASYNC 0x1
    419 
    420 #define HBITMAP_CALLBACK ((HBITMAP)-1)
    421 #endif
    422 
    423   WINCOMMCTRLAPI WINBOOL WINAPI ImageList_Draw(HIMAGELIST himl,int i,HDC hdcDst,int x,int y,UINT fStyle);
    424   WINCOMMCTRLAPI WINBOOL WINAPI ImageList_Replace(HIMAGELIST himl,int i,HBITMAP hbmImage,HBITMAP hbmMask);
    425   WINCOMMCTRLAPI int WINAPI ImageList_AddMasked(HIMAGELIST himl,HBITMAP hbmImage,COLORREF crMask);
    426   WINCOMMCTRLAPI WINBOOL WINAPI ImageList_DrawEx(HIMAGELIST himl,int i,HDC hdcDst,int x,int y,int dx,int dy,COLORREF rgbBk,COLORREF rgbFg,UINT fStyle);
    427   WINCOMMCTRLAPI WINBOOL WINAPI ImageList_DrawIndirect(IMAGELISTDRAWPARAMS *pimldp);
    428   WINCOMMCTRLAPI WINBOOL WINAPI ImageList_Remove(HIMAGELIST himl,int i);
    429   WINCOMMCTRLAPI HICON WINAPI ImageList_GetIcon(HIMAGELIST himl,int i,UINT flags);
    430   WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_LoadImageA(HINSTANCE hi,LPCSTR lpbmp,int cx,int cGrow,COLORREF crMask,UINT uType,UINT uFlags);
    431   WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_LoadImageW(HINSTANCE hi,LPCWSTR lpbmp,int cx,int cGrow,COLORREF crMask,UINT uType,UINT uFlags);
    432 
    433 #define ImageList_LoadImage __MINGW_NAME_AW(ImageList_LoadImage)
    434 
    435 #define ILCF_MOVE 0x0
    436 #define ILCF_SWAP 0x1
    437   WINCOMMCTRLAPI WINBOOL WINAPI ImageList_Copy(HIMAGELIST himlDst,int iDst,HIMAGELIST himlSrc,int iSrc,UINT uFlags);
    438   WINCOMMCTRLAPI WINBOOL WINAPI ImageList_BeginDrag(HIMAGELIST himlTrack,int iTrack,int dxHotspot,int dyHotspot);
    439   WINCOMMCTRLAPI void WINAPI ImageList_EndDrag();
    440   WINCOMMCTRLAPI WINBOOL WINAPI ImageList_DragEnter(HWND hwndLock,int x,int y);
    441   WINCOMMCTRLAPI WINBOOL WINAPI ImageList_DragLeave(HWND hwndLock);
    442   WINCOMMCTRLAPI WINBOOL WINAPI ImageList_DragMove(int x,int y);
    443   WINCOMMCTRLAPI WINBOOL WINAPI ImageList_SetDragCursorImage(HIMAGELIST himlDrag,int iDrag,int dxHotspot,int dyHotspot);
    444   WINCOMMCTRLAPI WINBOOL WINAPI ImageList_DragShowNolock(WINBOOL fShow);
    445   WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_GetDragImage(POINT *ppt,POINT *pptHotspot);
    446 #define ImageList_RemoveAll(himl) ImageList_Remove(himl,-1)
    447 #define ImageList_ExtractIcon(hi,himl,i) ImageList_GetIcon(himl,i,0)
    448 #define ImageList_LoadBitmap(hi,lpbmp,cx,cGrow,crMask) ImageList_LoadImage(hi,lpbmp,cx,cGrow,crMask,IMAGE_BITMAP,0)
    449 
    450 #ifdef __IStream_INTERFACE_DEFINED__
    451   WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_Read(LPSTREAM pstm);
    452   WINCOMMCTRLAPI WINBOOL WINAPI ImageList_Write(HIMAGELIST himl,LPSTREAM pstm);
    453 #define ILP_NORMAL 0
    454 #define ILP_DOWNLEVEL 1
    455   WINCOMMCTRLAPI HRESULT WINAPI ImageList_ReadEx(DWORD dwFlags,LPSTREAM pstm,REFIID riid,PVOID *ppv);
    456   WINCOMMCTRLAPI HRESULT WINAPI ImageList_WriteEx(HIMAGELIST himl,DWORD dwFlags,LPSTREAM pstm);
    457 #endif
    458 
    459 #ifndef IMAGEINFO
    460   typedef struct _IMAGEINFO {
    461     HBITMAP hbmImage;
    462     HBITMAP hbmMask;
    463     int Unused1;
    464     int Unused2;
    465     RECT rcImage;
    466   } IMAGEINFO,*LPIMAGEINFO;
    467 #endif
    468 
    469   WINCOMMCTRLAPI WINBOOL WINAPI ImageList_GetIconSize(HIMAGELIST himl,int *cx,int *cy);
    470   WINCOMMCTRLAPI WINBOOL WINAPI ImageList_SetIconSize(HIMAGELIST himl,int cx,int cy);
    471   WINCOMMCTRLAPI WINBOOL WINAPI ImageList_GetImageInfo(HIMAGELIST himl,int i,IMAGEINFO *pImageInfo);
    472   WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_Merge(HIMAGELIST himl1,int i1,HIMAGELIST himl2,int i2,int dx,int dy);
    473   WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_Duplicate(HIMAGELIST himl);
    474 
    475   WINCOMMCTRLAPI HRESULT WINAPI HIMAGELIST_QueryInterface (HIMAGELIST himl, REFIID riid, void **ppv);
    476 
    477 #ifdef __cplusplus
    478   FORCEINLINE HIMAGELIST IImageListToHIMAGELIST (struct IImageList *il) {
    479     return reinterpret_cast<HIMAGELIST> (il);
    480   }
    481 #else
    482 #define IImageListToHIMAGELIST(IL) ((HIMAGELIST) (IL))
    483 #endif
    484 #endif
    485 
    486 #ifndef NOHEADER
    487 
    488 #define WC_HEADERA "SysHeader32"
    489 #define WC_HEADERW L"SysHeader32"
    490 
    491 #define WC_HEADER __MINGW_NAME_AW(WC_HEADER)
    492 
    493 #define HDS_HORZ 0x0
    494 #define HDS_BUTTONS 0x2
    495 #define HDS_HOTTRACK 0x4
    496 #define HDS_HIDDEN 0x8
    497 #define HDS_DRAGDROP 0x40
    498 #define HDS_FULLDRAG 0x80
    499 #define HDS_FILTERBAR 0x100
    500 #define HDS_FLAT 0x200
    501 #if (_WIN32_WINNT >= 0x0600)
    502 #define HDS_CHECKBOXES 0x400
    503 #define HDS_NOSIZING 0x800
    504 #define HDS_OVERFLOW 0x1000
    505 #endif
    506 
    507 #define HDFT_ISSTRING 0x0
    508 #define HDFT_ISNUMBER 0x1
    509 #define HDFT_ISDATE 0x2
    510 
    511 #define HDFT_HASNOVALUE 0x8000
    512 
    513 #define HD_TEXTFILTER __MINGW_NAME_AW(HD_TEXTFILTER)
    514 #define HDTEXTFILTER __MINGW_NAME_AW(HD_TEXTFILTER)
    515 #define LPHD_TEXTFILTER __MINGW_NAME_AW(LPHD_TEXTFILTER)
    516 #define LPHDTEXTFILTER __MINGW_NAME_AW(LPHD_TEXTFILTER)
    517 
    518   typedef struct _HD_TEXTFILTERA {
    519     LPSTR pszText;
    520     INT cchTextMax;
    521   } HD_TEXTFILTERA,*LPHD_TEXTFILTERA;
    522 
    523   typedef struct _HD_TEXTFILTERW {
    524     LPWSTR pszText;
    525     INT cchTextMax;
    526   } HD_TEXTFILTERW,*LPHD_TEXTFILTERW;
    527 
    528 #define HD_ITEMA HDITEMA
    529 #define HD_ITEMW HDITEMW
    530 #define HD_ITEM HDITEM
    531 
    532   typedef struct _HD_ITEMA {
    533     UINT mask;
    534     int cxy;
    535     LPSTR pszText;
    536     HBITMAP hbm;
    537     int cchTextMax;
    538     int fmt;
    539     LPARAM lParam;
    540     int iImage;
    541     int iOrder;
    542     UINT type;
    543     void  *pvFilter;
    544 #if NTDDI_VERSION >= 0x06000000
    545     UINT state;
    546 #endif
    547   } HDITEMA,*LPHDITEMA;
    548 
    549 #define HDITEMA_V1_SIZE CCSIZEOF_STRUCT(HDITEMA,lParam)
    550 #define HDITEMW_V1_SIZE CCSIZEOF_STRUCT(HDITEMW,lParam)
    551 
    552   typedef struct _HD_ITEMW {
    553     UINT mask;
    554     int cxy;
    555     LPWSTR pszText;
    556     HBITMAP hbm;
    557     int cchTextMax;
    558     int fmt;
    559     LPARAM lParam;
    560     int iImage;
    561     int iOrder;
    562     UINT type;
    563     void *pvFilter;
    564 #if NTDDI_VERSION >= 0x06000000
    565     UINT state;
    566 #endif
    567   } HDITEMW,*LPHDITEMW;
    568 
    569 #define HDITEM __MINGW_NAME_AW(HDITEM)
    570 #define LPHDITEM __MINGW_NAME_AW(LPHDITEM)
    571 #define HDITEM_V1_SIZE __MINGW_NAME_AW_EXT(HDITEM,_V1_SIZE)
    572 
    573 #define HDI_WIDTH 0x1
    574 #define HDI_HEIGHT HDI_WIDTH
    575 #define HDI_TEXT 0x2
    576 #define HDI_FORMAT 0x4
    577 #define HDI_LPARAM 0x8
    578 #define HDI_BITMAP 0x10
    579 #define HDI_IMAGE 0x20
    580 #define HDI_DI_SETITEM 0x40
    581 #define HDI_ORDER 0x80
    582 #define HDI_FILTER 0x100
    583 #if NTDDI_VERSION >= 0x06000000
    584 #define HDI_STATE 0x0200
    585 #endif
    586 
    587 #define HDF_LEFT 0x0
    588 #define HDF_RIGHT 0x1
    589 #define HDF_CENTER 0x2
    590 #define HDF_JUSTIFYMASK 0x3
    591 #define HDF_RTLREADING 0x4
    592 
    593 #define HDF_OWNERDRAW 0x8000
    594 #define HDF_STRING 0x4000
    595 #define HDF_BITMAP 0x2000
    596 #define HDF_BITMAP_ON_RIGHT 0x1000
    597 #define HDF_IMAGE 0x800
    598 #define HDF_SORTUP 0x400
    599 #define HDF_SORTDOWN 0x200
    600 #if NTDDI_VERSION >= 0x06000000
    601 #define HDF_CHECKBOX 0x40
    602 #define HDF_CHECKED 0x80
    603 #define HDF_FIXEDWIDTH 0x100
    604 #define HDF_SPLITBUTTON 0x1000000
    605 
    606 #define HDIS_FOCUSED 0x1
    607 #endif
    608 
    609 #define HDM_GETITEMCOUNT (HDM_FIRST+0)
    610 #define Header_GetItemCount(hwndHD) (int)SNDMSG((hwndHD),HDM_GETITEMCOUNT,(WPARAM)0,(LPARAM)0)
    611 
    612 #define HDM_INSERTITEMA (HDM_FIRST+1)
    613 #define HDM_INSERTITEMW (HDM_FIRST+10)
    614 
    615 #define HDM_INSERTITEM __MINGW_NAME_AW(HDM_INSERTITEM)
    616 
    617 #define Header_InsertItem(hwndHD,i,phdi) (int)SNDMSG((hwndHD),HDM_INSERTITEM,(WPARAM)(int)(i),(LPARAM)(const HD_ITEM *)(phdi))
    618 
    619 #define HDM_DELETEITEM (HDM_FIRST+2)
    620 #define Header_DeleteItem(hwndHD,i) (WINBOOL)SNDMSG((hwndHD),HDM_DELETEITEM,(WPARAM)(int)(i),(LPARAM)0)
    621 
    622 #define HDM_GETITEMA (HDM_FIRST+3)
    623 #define HDM_GETITEMW (HDM_FIRST+11)
    624 
    625 #define HDM_GETITEM __MINGW_NAME_AW(HDM_GETITEM)
    626 
    627 #define Header_GetItem(hwndHD,i,phdi) (WINBOOL)SNDMSG((hwndHD),HDM_GETITEM,(WPARAM)(int)(i),(LPARAM)(HD_ITEM *)(phdi))
    628 
    629 #define HDM_SETITEMA (HDM_FIRST+4)
    630 #define HDM_SETITEMW (HDM_FIRST+12)
    631 
    632 #define HDM_SETITEM __MINGW_NAME_AW(HDM_SETITEM)
    633 
    634 #define Header_SetItem(hwndHD,i,phdi) (WINBOOL)SNDMSG((hwndHD),HDM_SETITEM,(WPARAM)(int)(i),(LPARAM)(const HD_ITEM *)(phdi))
    635 
    636 #define HD_LAYOUT HDLAYOUT
    637 
    638   typedef struct _HD_LAYOUT {
    639     RECT *prc;
    640     WINDOWPOS *pwpos;
    641   } HDLAYOUT,*LPHDLAYOUT;
    642 
    643 #define HDM_LAYOUT (HDM_FIRST+5)
    644 #define Header_Layout(hwndHD,playout) (WINBOOL)SNDMSG((hwndHD),HDM_LAYOUT,0,(LPARAM)(HD_LAYOUT *)(playout))
    645 
    646 #define HHT_NOWHERE 0x1
    647 #define HHT_ONHEADER 0x2
    648 #define HHT_ONDIVIDER 0x4
    649 #define HHT_ONDIVOPEN 0x8
    650 #define HHT_ONFILTER 0x10
    651 #define HHT_ONFILTERBUTTON 0x20
    652 #define HHT_ABOVE 0x100
    653 #define HHT_BELOW 0x200
    654 #define HHT_TORIGHT 0x400
    655 #define HHT_TOLEFT 0x800
    656 #if NTDDI_VERSION >= 0x06000000
    657 #define HHT_ONITEMSTATEICON 0x1000
    658 #define HHT_ONDROPDOWN 0x2000
    659 #define HHT_ONOVERFLOW 0x4000
    660 #endif
    661 
    662 #define HD_HITTESTINFO HDHITTESTINFO
    663 
    664   typedef struct _HD_HITTESTINFO {
    665     POINT pt;
    666     UINT flags;
    667     int iItem;
    668   } HDHITTESTINFO,*LPHDHITTESTINFO;
    669 
    670 #define HDSIL_NORMAL 0
    671 #define HDSIL_STATE 1
    672 
    673 #define HDM_HITTEST (HDM_FIRST+6)
    674 
    675 #define HDM_GETITEMRECT (HDM_FIRST+7)
    676 #define Header_GetItemRect(hwnd,iItem,lprc) (WINBOOL)SNDMSG((hwnd),HDM_GETITEMRECT,(WPARAM)(iItem),(LPARAM)(lprc))
    677 
    678 #define HDM_SETIMAGELIST (HDM_FIRST+8)
    679 #define Header_SetImageList(hwnd,himl) (HIMAGELIST)SNDMSG((hwnd),HDM_SETIMAGELIST,0,(LPARAM)(himl))
    680 
    681 #define HDM_GETIMAGELIST (HDM_FIRST+9)
    682 #define Header_GetImageList(hwnd) (HIMAGELIST)SNDMSG((hwnd),HDM_GETIMAGELIST,0,0)
    683 
    684 #define HDM_ORDERTOINDEX (HDM_FIRST+15)
    685 #define Header_OrderToIndex(hwnd,i) (int)SNDMSG((hwnd),HDM_ORDERTOINDEX,(WPARAM)(i),0)
    686 
    687 #define HDM_CREATEDRAGIMAGE (HDM_FIRST+16)
    688 #define Header_CreateDragImage(hwnd,i) (HIMAGELIST)SNDMSG((hwnd),HDM_CREATEDRAGIMAGE,(WPARAM)(i),0)
    689 
    690 #define HDM_GETORDERARRAY (HDM_FIRST+17)
    691 #define Header_GetOrderArray(hwnd,iCount,lpi) (WINBOOL)SNDMSG((hwnd),HDM_GETORDERARRAY,(WPARAM)(iCount),(LPARAM)(lpi))
    692 
    693 #define HDM_SETORDERARRAY (HDM_FIRST+18)
    694 #define Header_SetOrderArray(hwnd,iCount,lpi) (WINBOOL)SNDMSG((hwnd),HDM_SETORDERARRAY,(WPARAM)(iCount),(LPARAM)(lpi))
    695 
    696 #define HDM_SETHOTDIVIDER (HDM_FIRST+19)
    697 #define Header_SetHotDivider(hwnd,fPos,dw) (int)SNDMSG((hwnd),HDM_SETHOTDIVIDER,(WPARAM)(fPos),(LPARAM)(dw))
    698 
    699 #define HDM_SETBITMAPMARGIN (HDM_FIRST+20)
    700 #define Header_SetBitmapMargin(hwnd,iWidth) (int)SNDMSG((hwnd),HDM_SETBITMAPMARGIN,(WPARAM)(iWidth),0)
    701 
    702 #define HDM_GETBITMAPMARGIN (HDM_FIRST+21)
    703 #define Header_GetBitmapMargin(hwnd) (int)SNDMSG((hwnd),HDM_GETBITMAPMARGIN,0,0)
    704 
    705 #define HDM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
    706 #define Header_SetUnicodeFormat(hwnd,fUnicode) (WINBOOL)SNDMSG((hwnd),HDM_SETUNICODEFORMAT,(WPARAM)(fUnicode),0)
    707 
    708 #define HDM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
    709 #define Header_GetUnicodeFormat(hwnd) (WINBOOL)SNDMSG((hwnd),HDM_GETUNICODEFORMAT,0,0)
    710 
    711 #define HDM_SETFILTERCHANGETIMEOUT (HDM_FIRST+22)
    712 #define Header_SetFilterChangeTimeout(hwnd,i) (int)SNDMSG((hwnd),HDM_SETFILTERCHANGETIMEOUT,0,(LPARAM)(i))
    713 
    714 #define HDM_EDITFILTER (HDM_FIRST+23)
    715 #define Header_EditFilter(hwnd,i,fDiscardChanges) (int)SNDMSG((hwnd),HDM_EDITFILTER,(WPARAM)(i),MAKELPARAM(fDiscardChanges,0))
    716 
    717 #if _WIN32_IE >= 0x0600
    718 #define HDM_TRANSLATEACCELERATOR CCM_TRANSLATEACCELERATOR
    719 #endif
    720 
    721 #define HDM_CLEARFILTER (HDM_FIRST+24)
    722 #define Header_ClearFilter(hwnd,i) (int)SNDMSG((hwnd),HDM_CLEARFILTER,(WPARAM)(i),0)
    723 #define Header_ClearAllFilters(hwnd) (int)SNDMSG((hwnd),HDM_CLEARFILTER,(WPARAM)-1,0)
    724 
    725 #if NTDDI_VERSION >= 0x06000000
    726 #define HDM_GETITEMDROPDOWNRECT (HDM_FIRST+25)
    727 #define Header_GetItemDropDownRect(hwnd, iItem, lprc) (WINBOOL)SNDMSG ((hwnd), HDM_GETITEMDROPDOWNRECT,(WPARAM) (iItem),(LPARAM) (lprc))
    728 
    729 #define HDM_GETOVERFLOWRECT (HDM_FIRST+26)
    730 #define Header_GetOverflowRect(hwnd, lprc) (WINBOOL)SNDMSG ((hwnd), HDM_GETOVERFLOWRECT, 0,(LPARAM) (lprc))
    731 
    732 #define HDM_GETFOCUSEDITEM (HDM_FIRST+27)
    733 #define Header_GetFocusedItem(hwnd) (int)SNDMSG ((hwnd), HDM_GETFOCUSEDITEM,(WPARAM) 0,(LPARAM) 0)
    734 
    735 #define HDM_SETFOCUSEDITEM (HDM_FIRST+28)
    736 #define Header_SetFocusedItem(hwnd, iItem) (WINBOOL)SNDMSG ((hwnd), HDM_SETFOCUSEDITEM,(WPARAM) 0,(LPARAM) (iItem))
    737 #endif
    738 
    739 #define HDN_ITEMCHANGINGA (HDN_FIRST-0)
    740 #define HDN_ITEMCHANGINGW (HDN_FIRST-20)
    741 #define HDN_ITEMCHANGEDA (HDN_FIRST-1)
    742 #define HDN_ITEMCHANGEDW (HDN_FIRST-21)
    743 #define HDN_ITEMCLICKA (HDN_FIRST-2)
    744 #define HDN_ITEMCLICKW (HDN_FIRST-22)
    745 #define HDN_ITEMDBLCLICKA (HDN_FIRST-3)
    746 #define HDN_ITEMDBLCLICKW (HDN_FIRST-23)
    747 #define HDN_DIVIDERDBLCLICKA (HDN_FIRST-5)
    748 #define HDN_DIVIDERDBLCLICKW (HDN_FIRST-25)
    749 #define HDN_BEGINTRACKA (HDN_FIRST-6)
    750 #define HDN_BEGINTRACKW (HDN_FIRST-26)
    751 #define HDN_ENDTRACKA (HDN_FIRST-7)
    752 #define HDN_ENDTRACKW (HDN_FIRST-27)
    753 #define HDN_TRACKA (HDN_FIRST-8)
    754 #define HDN_TRACKW (HDN_FIRST-28)
    755 #define HDN_GETDISPINFOA (HDN_FIRST-9)
    756 #define HDN_GETDISPINFOW (HDN_FIRST-29)
    757 #define HDN_BEGINDRAG (HDN_FIRST-10)
    758 #define HDN_ENDDRAG (HDN_FIRST-11)
    759 #define HDN_FILTERCHANGE (HDN_FIRST-12)
    760 #define HDN_FILTERBTNCLICK (HDN_FIRST-13)
    761 #if _WIN32_IE >= 0x0600
    762 #define HDN_BEGINFILTEREDIT (HDN_FIRST-14)
    763 #define HDN_ENDFILTEREDIT (HDN_FIRST-15)
    764 #endif
    765 #if NTDDI_VERSION >= 0x06000000
    766 #define HDN_ITEMSTATEICONCLICK (HDN_FIRST-16)
    767 #define HDN_ITEMKEYDOWN (HDN_FIRST-17)
    768 #define HDN_DROPDOWN (HDN_FIRST-18)
    769 #define HDN_OVERFLOWCLICK (HDN_FIRST-19)
    770 #endif
    771 
    772 #define HDN_ITEMCHANGING __MINGW_NAME_AW(HDN_ITEMCHANGING)
    773 #define HDN_ITEMCHANGED __MINGW_NAME_AW(HDN_ITEMCHANGED)
    774 #define HDN_ITEMCLICK __MINGW_NAME_AW(HDN_ITEMCLICK)
    775 #define HDN_ITEMDBLCLICK __MINGW_NAME_AW(HDN_ITEMDBLCLICK)
    776 #define HDN_DIVIDERDBLCLICK __MINGW_NAME_AW(HDN_DIVIDERDBLCLICK)
    777 #define HDN_BEGINTRACK __MINGW_NAME_AW(HDN_BEGINTRACK)
    778 #define HDN_ENDTRACK __MINGW_NAME_AW(HDN_ENDTRACK)
    779 #define HDN_TRACK __MINGW_NAME_AW(HDN_TRACK)
    780 #define HDN_GETDISPINFO __MINGW_NAME_AW(HDN_GETDISPINFO)
    781 
    782 #define HD_NOTIFYA NMHEADERA
    783 #define HD_NOTIFYW NMHEADERW
    784 #define HD_NOTIFY NMHEADER
    785 
    786   typedef struct tagNMHEADERA {
    787     NMHDR hdr;
    788     int iItem;
    789     int iButton;
    790     HDITEMA *pitem;
    791   } NMHEADERA,*LPNMHEADERA;
    792 
    793   typedef struct tagNMHEADERW {
    794     NMHDR hdr;
    795     int iItem;
    796     int iButton;
    797     HDITEMW *pitem;
    798   } NMHEADERW,*LPNMHEADERW;
    799 
    800 #define NMHEADER __MINGW_NAME_AW(NMHEADER)
    801 #define LPNMHEADER __MINGW_NAME_AW(LPNMHEADER)
    802 
    803   typedef struct tagNMHDDISPINFOW {
    804     NMHDR hdr;
    805     int iItem;
    806     UINT mask;
    807     LPWSTR pszText;
    808     int cchTextMax;
    809     int iImage;
    810     LPARAM lParam;
    811   } NMHDDISPINFOW,*LPNMHDDISPINFOW;
    812 
    813   typedef struct tagNMHDDISPINFOA {
    814     NMHDR hdr;
    815     int iItem;
    816     UINT mask;
    817     LPSTR pszText;
    818     int cchTextMax;
    819     int iImage;
    820     LPARAM lParam;
    821   } NMHDDISPINFOA,*LPNMHDDISPINFOA;
    822 
    823 #define NMHDDISPINFO __MINGW_NAME_AW(NMHDDISPINFO)
    824 #define LPNMHDDISPINFO __MINGW_NAME_AW(LPNMHDDISPINFO)
    825 
    826   typedef struct tagNMHDFILTERBTNCLICK {
    827     NMHDR hdr;
    828     INT iItem;
    829     RECT rc;
    830   } NMHDFILTERBTNCLICK,*LPNMHDFILTERBTNCLICK;
    831 #endif
    832 
    833 #ifndef NOTOOLBAR
    834 
    835 #define TOOLBARCLASSNAMEW L"ToolbarWindow32"
    836 #define TOOLBARCLASSNAMEA "ToolbarWindow32"
    837 
    838 #define TOOLBARCLASSNAME __MINGW_NAME_AW(TOOLBARCLASSNAME)
    839 
    840   typedef struct _TBBUTTON {
    841     int iBitmap;
    842     int idCommand;
    843     BYTE fsState;
    844     BYTE fsStyle;
    845 #ifdef _WIN64
    846     BYTE bReserved[6];
    847 #else
    848     BYTE bReserved[2];
    849 #endif
    850     DWORD_PTR dwData;
    851     INT_PTR iString;
    852   } TBBUTTON,NEAR *PTBBUTTON,*LPTBBUTTON;
    853   typedef const TBBUTTON *LPCTBBUTTON;
    854 
    855   typedef struct _COLORMAP {
    856     COLORREF from;
    857     COLORREF to;
    858   } COLORMAP,*LPCOLORMAP;
    859 
    860   WINCOMMCTRLAPI HWND WINAPI CreateToolbarEx(HWND hwnd,DWORD ws,UINT wID,int nBitmaps,HINSTANCE hBMInst,UINT_PTR wBMID,LPCTBBUTTON lpButtons,int iNumButtons,int dxButton,int dyButton,int dxBitmap,int dyBitmap,UINT uStructSize);
    861   WINCOMMCTRLAPI HBITMAP WINAPI CreateMappedBitmap(HINSTANCE hInstance,INT_PTR idBitmap,UINT wFlags,LPCOLORMAP lpColorMap,int iNumMaps);
    862 
    863 #define CMB_MASKED 0x2
    864 #define TBSTATE_CHECKED 0x1
    865 #define TBSTATE_PRESSED 0x2
    866 #define TBSTATE_ENABLED 0x4
    867 #define TBSTATE_HIDDEN 0x8
    868 #define TBSTATE_INDETERMINATE 0x10
    869 #define TBSTATE_WRAP 0x20
    870 #define TBSTATE_ELLIPSES 0x40
    871 #define TBSTATE_MARKED 0x80
    872 
    873 #define TBSTYLE_BUTTON 0x0
    874 #define TBSTYLE_SEP 0x1
    875 #define TBSTYLE_CHECK 0x2
    876 #define TBSTYLE_GROUP 0x4
    877 #define TBSTYLE_CHECKGROUP (TBSTYLE_GROUP | TBSTYLE_CHECK)
    878 #define TBSTYLE_DROPDOWN 0x8
    879 #define TBSTYLE_AUTOSIZE 0x10
    880 #define TBSTYLE_NOPREFIX 0x20
    881 #define TBSTYLE_TOOLTIPS 0x100
    882 #define TBSTYLE_WRAPABLE 0x200
    883 #define TBSTYLE_ALTDRAG 0x400
    884 #define TBSTYLE_FLAT 0x800
    885 #define TBSTYLE_LIST 0x1000
    886 #define TBSTYLE_CUSTOMERASE 0x2000
    887 #define TBSTYLE_REGISTERDROP 0x4000
    888 #define TBSTYLE_TRANSPARENT 0x8000
    889 #define TBSTYLE_EX_DRAWDDARROWS 0x1
    890 
    891 #define BTNS_BUTTON TBSTYLE_BUTTON
    892 #define BTNS_SEP TBSTYLE_SEP
    893 #define BTNS_CHECK TBSTYLE_CHECK
    894 #define BTNS_GROUP TBSTYLE_GROUP
    895 #define BTNS_CHECKGROUP TBSTYLE_CHECKGROUP
    896 #define BTNS_DROPDOWN TBSTYLE_DROPDOWN
    897 #define BTNS_AUTOSIZE TBSTYLE_AUTOSIZE
    898 #define BTNS_NOPREFIX TBSTYLE_NOPREFIX
    899 #define BTNS_SHOWTEXT 0x40
    900 #define BTNS_WHOLEDROPDOWN 0x80
    901 
    902 #define TBSTYLE_EX_MULTICOLUMN 0x2
    903 #define TBSTYLE_EX_VERTICAL 0x4
    904 #define TBSTYLE_EX_MIXEDBUTTONS 0x8
    905 #define TBSTYLE_EX_HIDECLIPPEDBUTTONS 0x10
    906 #define TBSTYLE_EX_DOUBLEBUFFER 0x80
    907 
    908   typedef struct _NMTBCUSTOMDRAW {
    909     NMCUSTOMDRAW nmcd;
    910     HBRUSH hbrMonoDither;
    911     HBRUSH hbrLines;
    912     HPEN hpenLines;
    913     COLORREF clrText;
    914     COLORREF clrMark;
    915     COLORREF clrTextHighlight;
    916     COLORREF clrBtnFace;
    917     COLORREF clrBtnHighlight;
    918     COLORREF clrHighlightHotTrack;
    919     RECT rcText;
    920     int nStringBkMode;
    921     int nHLStringBkMode;
    922     int iListGap;
    923   } NMTBCUSTOMDRAW,*LPNMTBCUSTOMDRAW;
    924 
    925 #define TBCDRF_NOEDGES 0x10000
    926 #define TBCDRF_HILITEHOTTRACK 0x20000
    927 #define TBCDRF_NOOFFSET 0x40000
    928 #define TBCDRF_NOMARK 0x80000
    929 #define TBCDRF_NOETCHEDEFFECT 0x100000
    930 
    931 #define TBCDRF_BLENDICON 0x200000
    932 #define TBCDRF_NOBACKGROUND 0x400000
    933 #if NTDDI_VERSION >= 0x06000000
    934 #define TBCDRF_USECDCOLORS 0x00800000
    935 #endif
    936 
    937 #define TB_ENABLEBUTTON (WM_USER+1)
    938 #define TB_CHECKBUTTON (WM_USER+2)
    939 #define TB_PRESSBUTTON (WM_USER+3)
    940 #define TB_HIDEBUTTON (WM_USER+4)
    941 #define TB_INDETERMINATE (WM_USER+5)
    942 #define TB_MARKBUTTON (WM_USER+6)
    943 #define TB_ISBUTTONENABLED (WM_USER+9)
    944 #define TB_ISBUTTONCHECKED (WM_USER+10)
    945 #define TB_ISBUTTONPRESSED (WM_USER+11)
    946 #define TB_ISBUTTONHIDDEN (WM_USER+12)
    947 #define TB_ISBUTTONINDETERMINATE (WM_USER+13)
    948 #define TB_ISBUTTONHIGHLIGHTED (WM_USER+14)
    949 #define TB_SETSTATE (WM_USER+17)
    950 #define TB_GETSTATE (WM_USER+18)
    951 #define TB_ADDBITMAP (WM_USER+19)
    952 
    953   typedef struct tagTBADDBITMAP {
    954     HINSTANCE hInst;
    955     UINT_PTR nID;
    956   } TBADDBITMAP,*LPTBADDBITMAP;
    957 
    958 #define HINST_COMMCTRL ((HINSTANCE)-1)
    959 #define IDB_STD_SMALL_COLOR 0
    960 #define IDB_STD_LARGE_COLOR 1
    961 #define IDB_VIEW_SMALL_COLOR 4
    962 #define IDB_VIEW_LARGE_COLOR 5
    963 #define IDB_HIST_SMALL_COLOR 8
    964 #define IDB_HIST_LARGE_COLOR 9
    965 #if NTDDI_VERSION >= 0x06000000
    966 #define IDB_HIST_NORMAL 12
    967 #define IDB_HIST_HOT 13
    968 #define IDB_HIST_DISABLED 14
    969 #define IDB_HIST_PRESSED 15
    970 #endif
    971 
    972 #define STD_CUT 0
    973 #define STD_COPY 1
    974 #define STD_PASTE 2
    975 #define STD_UNDO 3
    976 #define STD_REDOW 4
    977 #define STD_DELETE 5
    978 #define STD_FILENEW 6
    979 #define STD_FILEOPEN 7
    980 #define STD_FILESAVE 8
    981 #define STD_PRINTPRE 9
    982 #define STD_PROPERTIES 10
    983 #define STD_HELP 11
    984 #define STD_FIND 12
    985 #define STD_REPLACE 13
    986 #define STD_PRINT 14
    987 
    988 #define VIEW_LARGEICONS 0
    989 #define VIEW_SMALLICONS 1
    990 #define VIEW_LIST 2
    991 #define VIEW_DETAILS 3
    992 #define VIEW_SORTNAME 4
    993 #define VIEW_SORTSIZE 5
    994 #define VIEW_SORTDATE 6
    995 #define VIEW_SORTTYPE 7
    996 #define VIEW_PARENTFOLDER 8
    997 #define VIEW_NETCONNECT 9
    998 #define VIEW_NETDISCONNECT 10
    999 #define VIEW_NEWFOLDER 11
   1000 #define VIEW_VIEWMENU 12
   1001 #define HIST_BACK 0
   1002 #define HIST_FORWARD 1
   1003 #define HIST_FAVORITES 2
   1004 #define HIST_ADDTOFAVORITES 3
   1005 #define HIST_VIEWTREE 4
   1006 
   1007 #define TB_ADDBUTTONSA (WM_USER+20)
   1008 #define TB_INSERTBUTTONA (WM_USER+21)
   1009 #define TB_DELETEBUTTON (WM_USER+22)
   1010 #define TB_GETBUTTON (WM_USER+23)
   1011 #define TB_BUTTONCOUNT (WM_USER+24)
   1012 #define TB_COMMANDTOINDEX (WM_USER+25)
   1013 
   1014   typedef struct tagTBSAVEPARAMSA {
   1015     HKEY hkr;
   1016     LPCSTR pszSubKey;
   1017     LPCSTR pszValueName;
   1018   } TBSAVEPARAMSA,*LPTBSAVEPARAMSA;
   1019 
   1020   typedef struct tagTBSAVEPARAMSW {
   1021     HKEY hkr;
   1022     LPCWSTR pszSubKey;
   1023     LPCWSTR pszValueName;
   1024   } TBSAVEPARAMSW,*LPTBSAVEPARAMW;
   1025 
   1026 #define TBSAVEPARAMS __MINGW_NAME_AW(TBSAVEPARAMS)
   1027 #define LPTBSAVEPARAMS __MINGW_NAME_AW(LPTBSAVEPARAMS)
   1028 
   1029 #define TB_SAVERESTOREA (WM_USER+26)
   1030 #define TB_SAVERESTOREW (WM_USER+76)
   1031 #define TB_CUSTOMIZE (WM_USER+27)
   1032 #define TB_ADDSTRINGA (WM_USER+28)
   1033 #define TB_ADDSTRINGW (WM_USER+77)
   1034 #define TB_GETITEMRECT (WM_USER+29)
   1035 #define TB_BUTTONSTRUCTSIZE (WM_USER+30)
   1036 #define TB_SETBUTTONSIZE (WM_USER+31)
   1037 #define TB_SETBITMAPSIZE (WM_USER+32)
   1038 #define TB_AUTOSIZE (WM_USER+33)
   1039 #define TB_GETTOOLTIPS (WM_USER+35)
   1040 #define TB_SETTOOLTIPS (WM_USER+36)
   1041 #define TB_SETPARENT (WM_USER+37)
   1042 #define TB_SETROWS (WM_USER+39)
   1043 #define TB_GETROWS (WM_USER+40)
   1044 #define TB_SETCMDID (WM_USER+42)
   1045 #define TB_CHANGEBITMAP (WM_USER+43)
   1046 #define TB_GETBITMAP (WM_USER+44)
   1047 #define TB_GETBUTTONTEXTA (WM_USER+45)
   1048 #define TB_GETBUTTONTEXTW (WM_USER+75)
   1049 #define TB_REPLACEBITMAP (WM_USER+46)
   1050 #define TB_SETINDENT (WM_USER+47)
   1051 #define TB_SETIMAGELIST (WM_USER+48)
   1052 #define TB_GETIMAGELIST (WM_USER+49)
   1053 #define TB_LOADIMAGES (WM_USER+50)
   1054 #define TB_GETRECT (WM_USER+51)
   1055 #define TB_SETHOTIMAGELIST (WM_USER+52)
   1056 #define TB_GETHOTIMAGELIST (WM_USER+53)
   1057 #define TB_SETDISABLEDIMAGELIST (WM_USER+54)
   1058 #define TB_GETDISABLEDIMAGELIST (WM_USER+55)
   1059 #define TB_SETSTYLE (WM_USER+56)
   1060 #define TB_GETSTYLE (WM_USER+57)
   1061 #define TB_GETBUTTONSIZE (WM_USER+58)
   1062 #define TB_SETBUTTONWIDTH (WM_USER+59)
   1063 #define TB_SETMAXTEXTROWS (WM_USER+60)
   1064 #define TB_GETTEXTROWS (WM_USER+61)
   1065 
   1066 #define TB_GETBUTTONTEXT __MINGW_NAME_AW(TB_GETBUTTONTEXT)
   1067 #define TB_SAVERESTORE __MINGW_NAME_AW(TB_SAVERESTORE)
   1068 #define TB_ADDSTRING __MINGW_NAME_AW(TB_ADDSTRING)
   1069 
   1070 #define TB_GETOBJECT (WM_USER+62)
   1071 #define TB_GETHOTITEM (WM_USER+71)
   1072 #define TB_SETHOTITEM (WM_USER+72)
   1073 #define TB_SETANCHORHIGHLIGHT (WM_USER+73)
   1074 #define TB_GETANCHORHIGHLIGHT (WM_USER+74)
   1075 #define TB_MAPACCELERATORA (WM_USER+78)
   1076 
   1077   typedef struct {
   1078     int iButton;
   1079     DWORD dwFlags;
   1080   } TBINSERTMARK,*LPTBINSERTMARK;
   1081 #define TBIMHT_AFTER 0x1
   1082 #define TBIMHT_BACKGROUND 0x2
   1083 
   1084 #define TB_GETINSERTMARK (WM_USER+79)
   1085 #define TB_SETINSERTMARK (WM_USER+80)
   1086 #define TB_INSERTMARKHITTEST (WM_USER+81)
   1087 #define TB_MOVEBUTTON (WM_USER+82)
   1088 #define TB_GETMAXSIZE (WM_USER+83)
   1089 #define TB_SETEXTENDEDSTYLE (WM_USER+84)
   1090 #define TB_GETEXTENDEDSTYLE (WM_USER+85)
   1091 #define TB_GETPADDING (WM_USER+86)
   1092 #define TB_SETPADDING (WM_USER+87)
   1093 #define TB_SETINSERTMARKCOLOR (WM_USER+88)
   1094 #define TB_GETINSERTMARKCOLOR (WM_USER+89)
   1095 
   1096 #define TB_SETCOLORSCHEME CCM_SETCOLORSCHEME
   1097 #define TB_GETCOLORSCHEME CCM_GETCOLORSCHEME
   1098 
   1099 #define TB_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
   1100 #define TB_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
   1101 
   1102 #define TB_MAPACCELERATORW (WM_USER+90)
   1103 
   1104 #define TB_MAPACCELERATOR __MINGW_NAME_AW(TB_MAPACCELERATOR)
   1105 
   1106   typedef struct {
   1107     HINSTANCE hInstOld;
   1108     UINT_PTR nIDOld;
   1109     HINSTANCE hInstNew;
   1110     UINT_PTR nIDNew;
   1111     int nButtons;
   1112   } TBREPLACEBITMAP,*LPTBREPLACEBITMAP;
   1113 
   1114 #define TBBF_LARGE 0x1
   1115 
   1116 #define TB_GETBITMAPFLAGS (WM_USER+41)
   1117 
   1118 #define TBIF_IMAGE 0x1
   1119 #define TBIF_TEXT 0x2
   1120 #define TBIF_STATE 0x4
   1121 #define TBIF_STYLE 0x8
   1122 #define TBIF_LPARAM 0x10
   1123 #define TBIF_COMMAND 0x20
   1124 #define TBIF_SIZE 0x40
   1125 #define TBIF_BYINDEX 0x80000000
   1126 
   1127   typedef struct {
   1128     UINT cbSize;
   1129     DWORD dwMask;
   1130     int idCommand;
   1131     int iImage;
   1132     BYTE fsState;
   1133     BYTE fsStyle;
   1134     WORD cx;
   1135     DWORD_PTR lParam;
   1136     LPSTR pszText;
   1137     int cchText;
   1138   } TBBUTTONINFOA,*LPTBBUTTONINFOA;
   1139 
   1140   typedef struct {
   1141     UINT cbSize;
   1142     DWORD dwMask;
   1143     int idCommand;
   1144     int iImage;
   1145     BYTE fsState;
   1146     BYTE fsStyle;
   1147     WORD cx;
   1148     DWORD_PTR lParam;
   1149     LPWSTR pszText;
   1150     int cchText;
   1151   } TBBUTTONINFOW,*LPTBBUTTONINFOW;
   1152 
   1153 #define TBBUTTONINFO __MINGW_NAME_AW(TBBUTTONINFO)
   1154 #define LPTBBUTTONINFO __MINGW_NAME_AW(LPTBBUTTONINFO)
   1155 
   1156 #define TB_GETBUTTONINFOW (WM_USER+63)
   1157 #define TB_SETBUTTONINFOW (WM_USER+64)
   1158 #define TB_GETBUTTONINFOA (WM_USER+65)
   1159 #define TB_SETBUTTONINFOA (WM_USER+66)
   1160 
   1161 #define TB_GETBUTTONINFO __MINGW_NAME_AW(TB_GETBUTTONINFO)
   1162 #define TB_SETBUTTONINFO __MINGW_NAME_AW(TB_SETBUTTONINFO)
   1163 
   1164 #define TB_INSERTBUTTONW (WM_USER+67)
   1165 #define TB_ADDBUTTONSW (WM_USER+68)
   1166 #define TB_HITTEST (WM_USER+69)
   1167 
   1168 #define TB_INSERTBUTTON __MINGW_NAME_AW(TB_INSERTBUTTON)
   1169 #define TB_ADDBUTTONS __MINGW_NAME_AW(TB_ADDBUTTONS)
   1170 
   1171 #define TB_SETDRAWTEXTFLAGS (WM_USER+70)
   1172 
   1173 #define TB_GETSTRINGW (WM_USER+91)
   1174 #define TB_GETSTRINGA (WM_USER+92)
   1175 
   1176 #define TB_GETSTRING __MINGW_NAME_AW(TB_GETSTRING)
   1177 
   1178 #define TB_SETBOUNDINGSIZE (WM_USER+93)
   1179 #define TB_SETHOTITEM2 (WM_USER+94)
   1180 #define TB_HASACCELERATOR (WM_USER+95)
   1181 #define TB_SETLISTGAP (WM_USER+96)
   1182 #define TB_GETIMAGELISTCOUNT (WM_USER+98)
   1183 #define TB_GETIDEALSIZE (WM_USER+99)
   1184 #define TB_TRANSLATEACCELERATOR CCM_TRANSLATEACCELERATOR
   1185 
   1186 #define TBMF_PAD 0x1
   1187 #define TBMF_BARPAD 0x2
   1188 #define TBMF_BUTTONSPACING 0x4
   1189 
   1190   typedef struct {
   1191     UINT cbSize;
   1192     DWORD dwMask;
   1193     int cxPad;
   1194     int cyPad;
   1195     int cxBarPad;
   1196     int cyBarPad;
   1197     int cxButtonSpacing;
   1198     int cyButtonSpacing;
   1199   } TBMETRICS,*LPTBMETRICS;
   1200 
   1201 #define TB_GETMETRICS (WM_USER+101)
   1202 #define TB_SETMETRICS (WM_USER+102)
   1203 #if NTDDI_VERSION >= 0x0600000
   1204 #define TB_GETITEMDROPDOWNRECT (WM_USER + 103)
   1205 #define TB_SETPRESSEDIMAGELIST (WM_USER + 104)
   1206 #define TB_GETPRESSEDIMAGELIST (WM_USER + 105)
   1207 #endif
   1208 #define TB_SETWINDOWTHEME CCM_SETWINDOWTHEME
   1209 
   1210 #define TBN_GETBUTTONINFOA (TBN_FIRST-0)
   1211 #define TBN_BEGINDRAG (TBN_FIRST-1)
   1212 #define TBN_ENDDRAG (TBN_FIRST-2)
   1213 #define TBN_BEGINADJUST (TBN_FIRST-3)
   1214 #define TBN_ENDADJUST (TBN_FIRST-4)
   1215 #define TBN_RESET (TBN_FIRST-5)
   1216 #define TBN_QUERYINSERT (TBN_FIRST-6)
   1217 #define TBN_QUERYDELETE (TBN_FIRST-7)
   1218 #define TBN_TOOLBARCHANGE (TBN_FIRST-8)
   1219 #define TBN_CUSTHELP (TBN_FIRST-9)
   1220 #define TBN_DROPDOWN (TBN_FIRST - 10)
   1221 #define TBN_GETOBJECT (TBN_FIRST - 12)
   1222   typedef struct tagNMTBHOTITEM {
   1223     NMHDR hdr;
   1224     int idOld;
   1225     int idNew;
   1226     DWORD dwFlags;
   1227   } NMTBHOTITEM,*LPNMTBHOTITEM;
   1228 
   1229 #define HICF_OTHER 0x0
   1230 #define HICF_MOUSE 0x1
   1231 #define HICF_ARROWKEYS 0x2
   1232 #define HICF_ACCELERATOR 0x4
   1233 #define HICF_DUPACCEL 0x8
   1234 #define HICF_ENTERING 0x10
   1235 #define HICF_LEAVING 0x20
   1236 #define HICF_RESELECT 0x40
   1237 #define HICF_LMOUSE 0x80
   1238 #define HICF_TOGGLEDROPDOWN 0x100
   1239 
   1240 #define TBN_HOTITEMCHANGE (TBN_FIRST - 13)
   1241 #define TBN_DRAGOUT (TBN_FIRST - 14)
   1242 #define TBN_DELETINGBUTTON (TBN_FIRST - 15)
   1243 #define TBN_GETDISPINFOA (TBN_FIRST - 16)
   1244 #define TBN_GETDISPINFOW (TBN_FIRST - 17)
   1245 #define TBN_GETINFOTIPA (TBN_FIRST - 18)
   1246 #define TBN_GETINFOTIPW (TBN_FIRST - 19)
   1247 #define TBN_GETBUTTONINFOW (TBN_FIRST - 20)
   1248 #define TBN_RESTORE (TBN_FIRST - 21)
   1249 #define TBN_SAVE (TBN_FIRST - 22)
   1250 #define TBN_INITCUSTOMIZE (TBN_FIRST - 23)
   1251 
   1252 #define TBNRF_HIDEHELP 0x1
   1253 #define TBNRF_ENDCUSTOMIZE 0x2
   1254 
   1255 #define TBN_WRAPHOTITEM (TBN_FIRST - 24)
   1256 #define TBN_DUPACCELERATOR (TBN_FIRST - 25)
   1257 #define TBN_WRAPACCELERATOR (TBN_FIRST - 26)
   1258 #define TBN_DRAGOVER (TBN_FIRST - 27)
   1259 #define TBN_MAPACCELERATOR (TBN_FIRST - 28)
   1260 #define TBNRF_HIDEHELP 0x1
   1261 #define TBNRF_ENDCUSTOMIZE 0x2
   1262 
   1263   typedef struct tagNMTBSAVE {
   1264     NMHDR hdr;
   1265     DWORD *pData;
   1266     DWORD *pCurrent;
   1267     UINT cbData;
   1268     int iItem;
   1269     int cButtons;
   1270     TBBUTTON tbButton;
   1271   } NMTBSAVE,*LPNMTBSAVE;
   1272 
   1273   typedef struct tagNMTBRESTORE {
   1274     NMHDR hdr;
   1275     DWORD *pData;
   1276     DWORD *pCurrent;
   1277     UINT cbData;
   1278     int iItem;
   1279     int cButtons;
   1280     int cbBytesPerRecord;
   1281     TBBUTTON tbButton;
   1282   } NMTBRESTORE,*LPNMTBRESTORE;
   1283 
   1284   typedef struct tagNMTBGETINFOTIPA {
   1285     NMHDR hdr;
   1286     LPSTR pszText;
   1287     int cchTextMax;
   1288     int iItem;
   1289     LPARAM lParam;
   1290   } NMTBGETINFOTIPA,*LPNMTBGETINFOTIPA;
   1291 
   1292   typedef struct tagNMTBGETINFOTIPW {
   1293     NMHDR hdr;
   1294     LPWSTR pszText;
   1295     int cchTextMax;
   1296     int iItem;
   1297     LPARAM lParam;
   1298   } NMTBGETINFOTIPW,*LPNMTBGETINFOTIPW;
   1299 
   1300 #define TBN_GETINFOTIP __MINGW_NAME_AW(TBN_GETINFOTIP)
   1301 #define NMTBGETINFOTIP __MINGW_NAME_AW(NMTBGETINFOTIP)
   1302 #define LPNMTBGETINFOTIP __MINGW_NAME_AW(LPNMTBGETINFOTIP)
   1303 
   1304 #define TBNF_IMAGE 0x1
   1305 #define TBNF_TEXT 0x2
   1306 #define TBNF_DI_SETITEM 0x10000000
   1307 
   1308   typedef struct {
   1309     NMHDR hdr;
   1310     DWORD dwMask;
   1311     int idCommand;
   1312     DWORD_PTR lParam;
   1313     int iImage;
   1314     LPSTR pszText;
   1315     int cchText;
   1316   } NMTBDISPINFOA,*LPNMTBDISPINFOA;
   1317 
   1318   typedef struct {
   1319     NMHDR hdr;
   1320     DWORD dwMask;
   1321     int idCommand;
   1322     DWORD_PTR lParam;
   1323     int iImage;
   1324     LPWSTR pszText;
   1325     int cchText;
   1326   } NMTBDISPINFOW,*LPNMTBDISPINFOW;
   1327 
   1328 #define TBN_GETDISPINFO __MINGW_NAME_AW(TBN_GETDISPINFO)
   1329 #define NMTBDISPINFO __MINGW_NAME_AW(NMTBDISPINFO)
   1330 #define LPNMTBDISPINFO __MINGW_NAME_AW(LPNMTBDISPINFO)
   1331 
   1332 #define TBDDRET_DEFAULT 0
   1333 #define TBDDRET_NODEFAULT 1
   1334 #define TBDDRET_TREATPRESSED 2
   1335 
   1336 #define TBN_GETBUTTONINFO __MINGW_NAME_AW(TBN_GETBUTTONINFO)
   1337 
   1338 #define TBNOTIFYA NMTOOLBARA
   1339 #define TBNOTIFYW NMTOOLBARW
   1340 #define LPTBNOTIFYA LPNMTOOLBARA
   1341 #define LPTBNOTIFYW LPNMTOOLBARW
   1342 
   1343 #define TBNOTIFY NMTOOLBAR
   1344 #define LPTBNOTIFY LPNMTOOLBAR
   1345 
   1346   typedef struct tagNMTOOLBARA {
   1347     NMHDR hdr;
   1348     int iItem;
   1349     TBBUTTON tbButton;
   1350     int cchText;
   1351     LPSTR pszText;
   1352     RECT rcButton;
   1353   } NMTOOLBARA,*LPNMTOOLBARA;
   1354 
   1355   typedef struct tagNMTOOLBARW {
   1356     NMHDR hdr;
   1357     int iItem;
   1358     TBBUTTON tbButton;
   1359     int cchText;
   1360     LPWSTR pszText;
   1361     RECT rcButton;
   1362   } NMTOOLBARW,*LPNMTOOLBARW;
   1363 
   1364 #define NMTOOLBAR __MINGW_NAME_AW(NMTOOLBAR)
   1365 #define LPNMTOOLBAR __MINGW_NAME_AW(LPNMTOOLBAR)
   1366 
   1367 #endif
   1368 
   1369 #ifndef NOREBAR
   1370 
   1371 #define REBARCLASSNAMEW L"ReBarWindow32"
   1372 #define REBARCLASSNAMEA "ReBarWindow32"
   1373 
   1374 #define REBARCLASSNAME __MINGW_NAME_AW(REBARCLASSNAME)
   1375 
   1376 #define RBIM_IMAGELIST 0x1
   1377 
   1378 #define RBS_TOOLTIPS 0x100
   1379 #define RBS_VARHEIGHT 0x200
   1380 #define RBS_BANDBORDERS 0x400
   1381 #define RBS_FIXEDORDER 0x800
   1382 #define RBS_REGISTERDROP 0x1000
   1383 #define RBS_AUTOSIZE 0x2000
   1384 #define RBS_VERTICALGRIPPER 0x4000
   1385 #define RBS_DBLCLKTOGGLE 0x8000
   1386 
   1387   typedef struct tagREBARINFO {
   1388     UINT cbSize;
   1389     UINT fMask;
   1390 #ifndef NOIMAGEAPIS
   1391     HIMAGELIST himl;
   1392 #else
   1393     HANDLE himl;
   1394 #endif
   1395   } REBARINFO,*LPREBARINFO;
   1396 
   1397 #define RBBS_BREAK 0x1
   1398 #define RBBS_FIXEDSIZE 0x2
   1399 #define RBBS_CHILDEDGE 0x4
   1400 #define RBBS_HIDDEN 0x8
   1401 #define RBBS_NOVERT 0x10
   1402 #define RBBS_FIXEDBMP 0x20
   1403 #define RBBS_VARIABLEHEIGHT 0x40
   1404 #define RBBS_GRIPPERALWAYS 0x80
   1405 #define RBBS_NOGRIPPER 0x100
   1406 #define RBBS_USECHEVRON 0x200
   1407 #define RBBS_HIDETITLE 0x400
   1408 #define RBBS_TOPALIGN 0x800
   1409 
   1410 #define RBBIM_STYLE 0x1
   1411 #define RBBIM_COLORS 0x2
   1412 #define RBBIM_TEXT 0x4
   1413 #define RBBIM_IMAGE 0x8
   1414 #define RBBIM_CHILD 0x10
   1415 #define RBBIM_CHILDSIZE 0x20
   1416 #define RBBIM_SIZE 0x40
   1417 #define RBBIM_BACKGROUND 0x80
   1418 #define RBBIM_ID 0x100
   1419 #define RBBIM_IDEALSIZE 0x200
   1420 #define RBBIM_LPARAM 0x400
   1421 #define RBBIM_HEADERSIZE 0x800
   1422 #if NTDDI_VERSION >= 0x06000000
   1423 #define RBBIM_CHEVRONLOCATION 0x00001000
   1424 #define RBBIM_CHEVRONSTATE 0x00002000
   1425 #endif
   1426 
   1427   typedef struct tagREBARBANDINFOA {
   1428     UINT cbSize;
   1429     UINT fMask;
   1430     UINT fStyle;
   1431     COLORREF clrFore;
   1432     COLORREF clrBack;
   1433     LPSTR lpText;
   1434     UINT cch;
   1435     int iImage;
   1436     HWND hwndChild;
   1437     UINT cxMinChild;
   1438     UINT cyMinChild;
   1439     UINT cx;
   1440     HBITMAP hbmBack;
   1441     UINT wID;
   1442     UINT cyChild;
   1443     UINT cyMaxChild;
   1444     UINT cyIntegral;
   1445     UINT cxIdeal;
   1446     LPARAM lParam;
   1447     UINT cxHeader;
   1448 #if NTDDI_VERSION >= 0x06000000
   1449     RECT rcChevronLocation;
   1450     UINT uChevronState;
   1451 #endif
   1452   } REBARBANDINFOA,*LPREBARBANDINFOA;
   1453   typedef REBARBANDINFOA CONST *LPCREBARBANDINFOA;
   1454 
   1455 #define REBARBANDINFOA_V3_SIZE CCSIZEOF_STRUCT(REBARBANDINFOA,wID)
   1456 #define REBARBANDINFOW_V3_SIZE CCSIZEOF_STRUCT(REBARBANDINFOW,wID)
   1457 #define REBARBANDINFOA_V6_SIZE CCSIZEOF_STRUCT(REBARBANDINFOA,cxHeader)
   1458 #define REBARBANDINFOW_V6_SIZE CCSIZEOF_STRUCT(REBARBANDINFOW,cxHeader)
   1459 
   1460   typedef struct tagREBARBANDINFOW {
   1461     UINT cbSize;
   1462     UINT fMask;
   1463     UINT fStyle;
   1464     COLORREF clrFore;
   1465     COLORREF clrBack;
   1466     LPWSTR lpText;
   1467     UINT cch;
   1468     int iImage;
   1469     HWND hwndChild;
   1470     UINT cxMinChild;
   1471     UINT cyMinChild;
   1472     UINT cx;
   1473     HBITMAP hbmBack;
   1474     UINT wID;
   1475     UINT cyChild;
   1476     UINT cyMaxChild;
   1477     UINT cyIntegral;
   1478     UINT cxIdeal;
   1479     LPARAM lParam;
   1480     UINT cxHeader;
   1481 #if NTDDI_VERSION >= 0x06000000
   1482     RECT rcChevronLocation;
   1483     UINT uChevronState;
   1484 #endif
   1485   } REBARBANDINFOW,*LPREBARBANDINFOW;
   1486 
   1487   typedef REBARBANDINFOW CONST *LPCREBARBANDINFOW;
   1488 
   1489 #define REBARBANDINFO __MINGW_NAME_AW(REBARBANDINFO)
   1490 #define LPREBARBANDINFO __MINGW_NAME_AW(LPREBARBANDINFO)
   1491 #define LPCREBARBANDINFO __MINGW_NAME_AW(LPCREBARBANDINFO)
   1492 
   1493 #define REBARBANDINFO_V3_SIZE __MINGW_NAME_AW_EXT(REBARBANDINFO,_V3_SIZE)
   1494 #define REBARBANDINFO_V6_SIZE __MINGW_NAME_AW_EXT(REBARBANDINFO,_V6_SIZE)
   1495 
   1496 #define RB_INSERTBANDA (WM_USER+1)
   1497 #define RB_DELETEBAND (WM_USER+2)
   1498 #define RB_GETBARINFO (WM_USER+3)
   1499 #define RB_SETBARINFO (WM_USER+4)
   1500 #define RB_SETBANDINFOA (WM_USER+6)
   1501 #define RB_SETPARENT (WM_USER+7)
   1502 #define RB_HITTEST (WM_USER+8)
   1503 #define RB_GETRECT (WM_USER+9)
   1504 #define RB_INSERTBANDW (WM_USER+10)
   1505 #define RB_SETBANDINFOW (WM_USER+11)
   1506 #define RB_GETBANDCOUNT (WM_USER+12)
   1507 #define RB_GETROWCOUNT (WM_USER+13)
   1508 #define RB_GETROWHEIGHT (WM_USER+14)
   1509 #define RB_IDTOINDEX (WM_USER+16)
   1510 #define RB_GETTOOLTIPS (WM_USER+17)
   1511 #define RB_SETTOOLTIPS (WM_USER+18)
   1512 #define RB_SETBKCOLOR (WM_USER+19)
   1513 #define RB_GETBKCOLOR (WM_USER+20)
   1514 #define RB_SETTEXTCOLOR (WM_USER+21)
   1515 #define RB_GETTEXTCOLOR (WM_USER+22)
   1516 
   1517 #define RBSTR_CHANGERECT 0x1
   1518 
   1519 #define RB_SIZETORECT (WM_USER+23)
   1520 #define RB_SETCOLORSCHEME CCM_SETCOLORSCHEME
   1521 #define RB_GETCOLORSCHEME CCM_GETCOLORSCHEME
   1522 
   1523 #define RB_INSERTBAND __MINGW_NAME_AW(RB_INSERTBAND)
   1524 #define RB_SETBANDINFO __MINGW_NAME_AW(RB_SETBANDINFO)
   1525 
   1526 #define RB_BEGINDRAG (WM_USER+24)
   1527 #define RB_ENDDRAG (WM_USER+25)
   1528 #define RB_DRAGMOVE (WM_USER+26)
   1529 #define RB_GETBARHEIGHT (WM_USER+27)
   1530 #define RB_GETBANDINFOW (WM_USER+28)
   1531 #define RB_GETBANDINFOA (WM_USER+29)
   1532 
   1533 #define RB_GETBANDINFO __MINGW_NAME_AW(RB_GETBANDINFO)
   1534 
   1535 #define RB_MINIMIZEBAND (WM_USER+30)
   1536 #define RB_MAXIMIZEBAND (WM_USER+31)
   1537 #define RB_GETDROPTARGET (CCM_GETDROPTARGET)
   1538 #define RB_GETBANDBORDERS (WM_USER+34)
   1539 #define RB_SHOWBAND (WM_USER+35)
   1540 #define RB_SETPALETTE (WM_USER+37)
   1541 #define RB_GETPALETTE (WM_USER+38)
   1542 #define RB_MOVEBAND (WM_USER+39)
   1543 #define RB_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
   1544 #define RB_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
   1545 #define RB_GETBANDMARGINS (WM_USER+40)
   1546 #define RB_SETWINDOWTHEME CCM_SETWINDOWTHEME
   1547 #if _WIN32_IE >= 0x0600
   1548 #define RB_SETEXTENDEDSTYLE (WM_USER+41)
   1549 #define RB_GETEXTENDEDSTYLE (WM_USER+42)
   1550 #endif
   1551 #define RB_PUSHCHEVRON (WM_USER+43)
   1552 #if NTDDI_VERSION >= 0x06000000
   1553 #define RB_SETBANDWIDTH (WM_USER + 44)
   1554 #endif
   1555 
   1556 #define RBN_HEIGHTCHANGE (RBN_FIRST - 0)
   1557 #define RBN_GETOBJECT (RBN_FIRST - 1)
   1558 #define RBN_LAYOUTCHANGED (RBN_FIRST - 2)
   1559 #define RBN_AUTOSIZE (RBN_FIRST - 3)
   1560 #define RBN_BEGINDRAG (RBN_FIRST - 4)
   1561 #define RBN_ENDDRAG (RBN_FIRST - 5)
   1562 #define RBN_DELETINGBAND (RBN_FIRST - 6)
   1563 #define RBN_DELETEDBAND (RBN_FIRST - 7)
   1564 #define RBN_CHILDSIZE (RBN_FIRST - 8)
   1565 #define RBN_CHEVRONPUSHED (RBN_FIRST - 10)
   1566 #if _WIN32_IE >= 0x0600
   1567 #define RBN_SPLITTERDRAG (RBN_FIRST - 11)
   1568 #endif
   1569 #define RBN_MINMAX (RBN_FIRST - 21)
   1570 #define RBN_AUTOBREAK (RBN_FIRST - 22)
   1571 
   1572   typedef struct tagNMREBARCHILDSIZE {
   1573     NMHDR hdr;
   1574     UINT uBand;
   1575     UINT wID;
   1576     RECT rcChild;
   1577     RECT rcBand;
   1578   } NMREBARCHILDSIZE,*LPNMREBARCHILDSIZE;
   1579 
   1580   typedef struct tagNMREBAR {
   1581     NMHDR hdr;
   1582     DWORD dwMask;
   1583     UINT uBand;
   1584     UINT fStyle;
   1585     UINT wID;
   1586     LPARAM lParam;
   1587   } NMREBAR,*LPNMREBAR;
   1588 
   1589 #define RBNM_ID 0x1
   1590 #define RBNM_STYLE 0x2
   1591 #define RBNM_LPARAM 0x4
   1592 
   1593   typedef struct tagNMRBAUTOSIZE {
   1594     NMHDR hdr;
   1595     WINBOOL fChanged;
   1596     RECT rcTarget;
   1597     RECT rcActual;
   1598   } NMRBAUTOSIZE,*LPNMRBAUTOSIZE;
   1599 
   1600   typedef struct tagNMREBARCHEVRON {
   1601     NMHDR hdr;
   1602     UINT uBand;
   1603     UINT wID;
   1604     LPARAM lParam;
   1605     RECT rc;
   1606     LPARAM lParamNM;
   1607   } NMREBARCHEVRON,*LPNMREBARCHEVRON;
   1608 
   1609 #if _WIN32_IE >= 0x0600
   1610   typedef struct tagNMREBARSPLITTER {
   1611     NMHDR hdr;
   1612     RECT rcSizing;
   1613   } NMREBARSPLITTER,*LPNMREBARSPLITTER;
   1614 #endif
   1615 
   1616 #define RBAB_AUTOSIZE 0x1
   1617 #define RBAB_ADDBAND 0x2
   1618 
   1619   typedef struct tagNMREBARAUTOBREAK {
   1620     NMHDR hdr;
   1621     UINT uBand;
   1622     UINT wID;
   1623     LPARAM lParam;
   1624     UINT uMsg;
   1625     UINT fStyleCurrent;
   1626     WINBOOL fAutoBreak;
   1627   } NMREBARAUTOBREAK,*LPNMREBARAUTOBREAK;
   1628 
   1629 #define RBHT_NOWHERE 0x1
   1630 #define RBHT_CAPTION 0x2
   1631 #define RBHT_CLIENT 0x3
   1632 #define RBHT_GRABBER 0x4
   1633 #define RBHT_CHEVRON 0x8
   1634 #if _WIN32_IE >= 0x0600
   1635 #define RBHT_SPLITTER 0x10
   1636 #endif
   1637 
   1638   typedef struct _RB_HITTESTINFO {
   1639     POINT pt;
   1640     UINT flags;
   1641     int iBand;
   1642   } RBHITTESTINFO,*LPRBHITTESTINFO;
   1643 #endif
   1644 
   1645 #ifndef NOTOOLTIPS
   1646 
   1647 #define TOOLTIPS_CLASSW L"tooltips_class32"
   1648 #define TOOLTIPS_CLASSA "tooltips_class32"
   1649 
   1650 #define TOOLTIPS_CLASS __MINGW_NAME_AW(TOOLTIPS_CLASS)
   1651 
   1652 #define LPTOOLINFOA LPTTTOOLINFOA
   1653 #define LPTOOLINFOW LPTTTOOLINFOW
   1654 #define TOOLINFOA TTTOOLINFOA
   1655 #define TOOLINFOW TTTOOLINFOW
   1656 
   1657 #define LPTOOLINFO LPTTTOOLINFO
   1658 #define TOOLINFO TTTOOLINFO
   1659 
   1660 #define TTTOOLINFOA_V1_SIZE CCSIZEOF_STRUCT(TTTOOLINFOA,lpszText)
   1661 #define TTTOOLINFOW_V1_SIZE CCSIZEOF_STRUCT(TTTOOLINFOW,lpszText)
   1662 #define TTTOOLINFOA_V2_SIZE CCSIZEOF_STRUCT(TTTOOLINFOA,lParam)
   1663 #define TTTOOLINFOW_V2_SIZE CCSIZEOF_STRUCT(TTTOOLINFOW,lParam)
   1664 #define TTTOOLINFOA_V3_SIZE CCSIZEOF_STRUCT(TTTOOLINFOA,lpReserved)
   1665 #define TTTOOLINFOW_V3_SIZE CCSIZEOF_STRUCT(TTTOOLINFOW,lpReserved)
   1666 
   1667   typedef struct tagTOOLINFOA {
   1668     UINT cbSize;
   1669     UINT uFlags;
   1670     HWND hwnd;
   1671     UINT_PTR uId;
   1672     RECT rect;
   1673     HINSTANCE hinst;
   1674     LPSTR lpszText;
   1675     LPARAM lParam;
   1676     void *lpReserved;
   1677   } TTTOOLINFOA,NEAR *PTOOLINFOA,*LPTTTOOLINFOA;
   1678 
   1679   typedef struct tagTOOLINFOW {
   1680     UINT cbSize;
   1681     UINT uFlags;
   1682     HWND hwnd;
   1683     UINT_PTR uId;
   1684     RECT rect;
   1685     HINSTANCE hinst;
   1686     LPWSTR lpszText;
   1687     LPARAM lParam;
   1688     void *lpReserved;
   1689   } TTTOOLINFOW,NEAR *PTOOLINFOW,*LPTTTOOLINFOW;
   1690 
   1691 #define TTTOOLINFO __MINGW_NAME_AW(TTTOOLINFO)
   1692 #define PTOOLINFO __MINGW_NAME_AW(PTOOLINFO)
   1693 #define LPTTTOOLINFO __MINGW_NAME_AW(LPTTTOOLINFO)
   1694 
   1695 #define TTTOOLINFO_V1_SIZE __MINGW_NAME_AW_EXT(TTTOOLINFO,_V1_SIZE)
   1696 
   1697 #define TTS_ALWAYSTIP 0x1
   1698 #define TTS_NOPREFIX 0x2
   1699 #define TTS_NOANIMATE 0x10
   1700 #define TTS_NOFADE 0x20
   1701 #define TTS_BALLOON 0x40
   1702 #define TTS_CLOSE 0x80
   1703 #if NTDDI_VERSION >= 0x06000000
   1704 #define TTS_USEVISUALSTYLE 0x100
   1705 #endif
   1706 
   1707 #define TTF_IDISHWND 0x1
   1708 #define TTF_CENTERTIP 0x2
   1709 #define TTF_RTLREADING 0x4
   1710 #define TTF_SUBCLASS 0x10
   1711 #define TTF_TRACK 0x20
   1712 #define TTF_ABSOLUTE 0x80
   1713 #define TTF_TRANSPARENT 0x100
   1714 #define TTF_PARSELINKS 0x1000
   1715 #define TTF_DI_SETITEM 0x8000
   1716 
   1717 #define TTDT_AUTOMATIC 0
   1718 #define TTDT_RESHOW 1
   1719 #define TTDT_AUTOPOP 2
   1720 #define TTDT_INITIAL 3
   1721 
   1722 #define TTI_NONE 0
   1723 #define TTI_INFO 1
   1724 #define TTI_WARNING 2
   1725 #define TTI_ERROR 3
   1726 #if NTDDI_VERSION >= 0x06000000
   1727 #define TTI_INFO_LARGE 4
   1728 #define TTI_WARNING_LARGE 5
   1729 #define TTI_ERROR_LARGE 6
   1730 #endif
   1731 
   1732 #define TTM_ACTIVATE (WM_USER+1)
   1733 #define TTM_SETDELAYTIME (WM_USER+3)
   1734 #define TTM_ADDTOOLA (WM_USER+4)
   1735 #define TTM_ADDTOOLW (WM_USER+50)
   1736 #define TTM_DELTOOLA (WM_USER+5)
   1737 #define TTM_DELTOOLW (WM_USER+51)
   1738 #define TTM_NEWTOOLRECTA (WM_USER+6)
   1739 #define TTM_NEWTOOLRECTW (WM_USER+52)
   1740 #define TTM_RELAYEVENT (WM_USER+7)
   1741 
   1742 #define TTM_GETTOOLINFOA (WM_USER+8)
   1743 #define TTM_GETTOOLINFOW (WM_USER+53)
   1744 
   1745 #define TTM_SETTOOLINFOA (WM_USER+9)
   1746 #define TTM_SETTOOLINFOW (WM_USER+54)
   1747 
   1748 #define TTM_HITTESTA (WM_USER +10)
   1749 #define TTM_HITTESTW (WM_USER +55)
   1750 #define TTM_GETTEXTA (WM_USER +11)
   1751 #define TTM_GETTEXTW (WM_USER +56)
   1752 #define TTM_UPDATETIPTEXTA (WM_USER +12)
   1753 #define TTM_UPDATETIPTEXTW (WM_USER +57)
   1754 #define TTM_GETTOOLCOUNT (WM_USER +13)
   1755 #define TTM_ENUMTOOLSA (WM_USER +14)
   1756 #define TTM_ENUMTOOLSW (WM_USER +58)
   1757 #define TTM_GETCURRENTTOOLA (WM_USER+15)
   1758 #define TTM_GETCURRENTTOOLW (WM_USER+59)
   1759 #define TTM_WINDOWFROMPOINT (WM_USER+16)
   1760 #define TTM_TRACKACTIVATE (WM_USER+17)
   1761 #define TTM_TRACKPOSITION (WM_USER+18)
   1762 #define TTM_SETTIPBKCOLOR (WM_USER+19)
   1763 #define TTM_SETTIPTEXTCOLOR (WM_USER+20)
   1764 #define TTM_GETDELAYTIME (WM_USER+21)
   1765 #define TTM_GETTIPBKCOLOR (WM_USER+22)
   1766 #define TTM_GETTIPTEXTCOLOR (WM_USER+23)
   1767 #define TTM_SETMAXTIPWIDTH (WM_USER+24)
   1768 #define TTM_GETMAXTIPWIDTH (WM_USER+25)
   1769 #define TTM_SETMARGIN (WM_USER+26)
   1770 #define TTM_GETMARGIN (WM_USER+27)
   1771 #define TTM_POP (WM_USER+28)
   1772 #define TTM_UPDATE (WM_USER+29)
   1773 #define TTM_GETBUBBLESIZE (WM_USER+30)
   1774 #define TTM_ADJUSTRECT (WM_USER+31)
   1775 #define TTM_SETTITLEA (WM_USER+32)
   1776 #define TTM_SETTITLEW (WM_USER+33)
   1777 
   1778 #define TTM_POPUP (WM_USER+34)
   1779 #define TTM_GETTITLE (WM_USER+35)
   1780   typedef struct _TTGETTITLE {
   1781     DWORD dwSize;
   1782     UINT uTitleBitmap;
   1783     UINT cch;
   1784     WCHAR *pszTitle;
   1785   } TTGETTITLE,*PTTGETTITLE;
   1786 
   1787 #define TTM_ADDTOOL __MINGW_NAME_AW(TTM_ADDTOOL)
   1788 #define TTM_DELTOOL __MINGW_NAME_AW(TTM_DELTOOL)
   1789 #define TTM_NEWTOOLRECT __MINGW_NAME_AW(TTM_NEWTOOLRECT)
   1790 #define TTM_GETTOOLINFO __MINGW_NAME_AW(TTM_GETTOOLINFO)
   1791 #define TTM_SETTOOLINFO __MINGW_NAME_AW(TTM_SETTOOLINFO)
   1792 #define TTM_HITTEST __MINGW_NAME_AW(TTM_HITTEST)
   1793 #define TTM_GETTEXT __MINGW_NAME_AW(TTM_GETTEXT)
   1794 #define TTM_UPDATETIPTEXT __MINGW_NAME_AW(TTM_UPDATETIPTEXT)
   1795 #define TTM_ENUMTOOLS __MINGW_NAME_AW(TTM_ENUMTOOLS)
   1796 #define TTM_GETCURRENTTOOL __MINGW_NAME_AW(TTM_GETCURRENTTOOL)
   1797 #define TTM_SETTITLE __MINGW_NAME_AW(TTM_SETTITLE)
   1798 
   1799 #define TTM_SETWINDOWTHEME CCM_SETWINDOWTHEME
   1800 
   1801 #define LPHITTESTINFOW LPTTHITTESTINFOW
   1802 #define LPHITTESTINFOA LPTTHITTESTINFOA
   1803 #define LPHITTESTINFO LPTTHITTESTINFO
   1804 
   1805   typedef struct _TT_HITTESTINFOA {
   1806     HWND hwnd;
   1807     POINT pt;
   1808     TTTOOLINFOA ti;
   1809   } TTHITTESTINFOA,*LPTTHITTESTINFOA;
   1810 
   1811   typedef struct _TT_HITTESTINFOW {
   1812     HWND hwnd;
   1813     POINT pt;
   1814     TTTOOLINFOW ti;
   1815   } TTHITTESTINFOW,*LPTTHITTESTINFOW;
   1816 
   1817 #define TTHITTESTINFO __MINGW_NAME_AW(TTHITTESTINFO)
   1818 #define LPTTHITTESTINFO __MINGW_NAME_AW(LPTTHITTESTINFO)
   1819 
   1820 #define TTN_GETDISPINFOA (TTN_FIRST - 0)
   1821 #define TTN_GETDISPINFOW (TTN_FIRST - 10)
   1822 #define TTN_SHOW (TTN_FIRST - 1)
   1823 #define TTN_POP (TTN_FIRST - 2)
   1824 #define TTN_LINKCLICK (TTN_FIRST - 3)
   1825 
   1826 #define TTN_GETDISPINFO __MINGW_NAME_AW(TTN_GETDISPINFO)
   1827 
   1828 #define TTN_NEEDTEXT TTN_GETDISPINFO
   1829 #define TTN_NEEDTEXTA TTN_GETDISPINFOA
   1830 #define TTN_NEEDTEXTW TTN_GETDISPINFOW
   1831 
   1832 #define TOOLTIPTEXTW NMTTDISPINFOW
   1833 #define TOOLTIPTEXTA NMTTDISPINFOA
   1834 #define LPTOOLTIPTEXTA LPNMTTDISPINFOA
   1835 #define LPTOOLTIPTEXTW LPNMTTDISPINFOW
   1836 
   1837 #define TOOLTIPTEXT NMTTDISPINFO
   1838 #define LPTOOLTIPTEXT LPNMTTDISPINFO
   1839 
   1840 #define NMTTDISPINFOA_V1_SIZE CCSIZEOF_STRUCT(NMTTDISPINFOA,uFlags)
   1841 #define NMTTDISPINFOW_V1_SIZE CCSIZEOF_STRUCT(NMTTDISPINFOW,uFlags)
   1842 
   1843   typedef struct tagNMTTDISPINFOA {
   1844     NMHDR hdr;
   1845     LPSTR lpszText;
   1846     char szText[80];
   1847     HINSTANCE hinst;
   1848     UINT uFlags;
   1849     LPARAM lParam;
   1850   } NMTTDISPINFOA,*LPNMTTDISPINFOA;
   1851 
   1852   typedef struct tagNMTTDISPINFOW {
   1853     NMHDR hdr;
   1854     LPWSTR lpszText;
   1855     WCHAR szText[80];
   1856     HINSTANCE hinst;
   1857     UINT uFlags;
   1858     LPARAM lParam;
   1859   } NMTTDISPINFOW,*LPNMTTDISPINFOW;
   1860 
   1861 
   1862 #define NMTTDISPINFO __MINGW_NAME_AW(NMTTDISPINFO)
   1863 #define LPNMTTDISPINFO __MINGW_NAME_AW(LPNMTTDISPINFO)
   1864 
   1865 #define NMTTDISPINFO_V1_SIZE __MINGW_NAME_AW_EXT(NMTTDISPINFO,_V1_SIZE)
   1866 #endif
   1867 
   1868 #ifndef NOSTATUSBAR
   1869 
   1870 #define SBARS_SIZEGRIP 0x100
   1871 #define SBARS_TOOLTIPS 0x800
   1872 #define SBT_TOOLTIPS 0x800
   1873 
   1874   WINCOMMCTRLAPI void WINAPI DrawStatusTextA(HDC hDC,LPCRECT lprc,LPCSTR pszText,UINT uFlags);
   1875   WINCOMMCTRLAPI void WINAPI DrawStatusTextW(HDC hDC,LPCRECT lprc,LPCWSTR pszText,UINT uFlags);
   1876 
   1877   WINCOMMCTRLAPI HWND WINAPI CreateStatusWindowA(LONG style,LPCSTR lpszText,HWND hwndParent,UINT wID);
   1878   WINCOMMCTRLAPI HWND WINAPI CreateStatusWindowW(LONG style,LPCWSTR lpszText,HWND hwndParent,UINT wID);
   1879 
   1880 #define CreateStatusWindow __MINGW_NAME_AW(CreateStatusWindow)
   1881 #define DrawStatusText __MINGW_NAME_AW(DrawStatusText)
   1882 
   1883 #define STATUSCLASSNAMEW L"msctls_statusbar32"
   1884 #define STATUSCLASSNAMEA "msctls_statusbar32"
   1885 
   1886 #define STATUSCLASSNAME __MINGW_NAME_AW(STATUSCLASSNAME)
   1887 
   1888 #define SB_SETTEXTA (WM_USER+1)
   1889 #define SB_SETTEXTW (WM_USER+11)
   1890 #define SB_GETTEXTA (WM_USER+2)
   1891 #define SB_GETTEXTW (WM_USER+13)
   1892 #define SB_GETTEXTLENGTHA (WM_USER+3)
   1893 #define SB_GETTEXTLENGTHW (WM_USER+12)
   1894 
   1895 #define SB_GETTEXT __MINGW_NAME_AW(SB_GETTEXT)
   1896 #define SB_SETTEXT __MINGW_NAME_AW(SB_SETTEXT)
   1897 #define SB_GETTEXTLENGTH __MINGW_NAME_AW(SB_GETTEXTLENGTH)
   1898 #define SB_SETTIPTEXT __MINGW_NAME_AW(SB_SETTIPTEXT)
   1899 #define SB_GETTIPTEXT __MINGW_NAME_AW(SB_GETTIPTEXT)
   1900 
   1901 #define SB_SETPARTS (WM_USER+4)
   1902 #define SB_GETPARTS (WM_USER+6)
   1903 #define SB_GETBORDERS (WM_USER+7)
   1904 #define SB_SETMINHEIGHT (WM_USER+8)
   1905 #define SB_SIMPLE (WM_USER+9)
   1906 #define SB_GETRECT (WM_USER+10)
   1907 #define SB_ISSIMPLE (WM_USER+14)
   1908 #define SB_SETICON (WM_USER+15)
   1909 #define SB_SETTIPTEXTA (WM_USER+16)
   1910 #define SB_SETTIPTEXTW (WM_USER+17)
   1911 #define SB_GETTIPTEXTA (WM_USER+18)
   1912 #define SB_GETTIPTEXTW (WM_USER+19)
   1913 #define SB_GETICON (WM_USER+20)
   1914 #define SB_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
   1915 #define SB_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
   1916 
   1917 #define SBT_OWNERDRAW 0x1000
   1918 #define SBT_NOBORDERS 0x100
   1919 #define SBT_POPOUT 0x200
   1920 #define SBT_RTLREADING 0x400
   1921 #define SBT_NOTABPARSING 0x800
   1922 
   1923 #define SB_SETBKCOLOR CCM_SETBKCOLOR
   1924 
   1925 #define SBN_SIMPLEMODECHANGE (SBN_FIRST - 0)
   1926 
   1927 #define SB_SIMPLEID 0xff
   1928 #endif
   1929 
   1930 #ifndef NOMENUHELP
   1931 
   1932   WINCOMMCTRLAPI void WINAPI MenuHelp(UINT uMsg,WPARAM wParam,LPARAM lParam,HMENU hMainMenu,HINSTANCE hInst,HWND hwndStatus,UINT *lpwIDs);
   1933   WINCOMMCTRLAPI WINBOOL WINAPI ShowHideMenuCtl(HWND hWnd,UINT_PTR uFlags,LPINT lpInfo);
   1934   WINCOMMCTRLAPI void WINAPI GetEffectiveClientRect(HWND hWnd,LPRECT lprc,const INT *lpInfo);
   1935 
   1936 #define MINSYSCOMMAND SC_SIZE
   1937 #endif
   1938 
   1939 #ifndef NOTRACKBAR
   1940 
   1941 #define TRACKBAR_CLASSA "msctls_trackbar32"
   1942 #define TRACKBAR_CLASSW L"msctls_trackbar32"
   1943 
   1944 #define TRACKBAR_CLASS __MINGW_NAME_AW(TRACKBAR_CLASS)
   1945 
   1946 #define TBS_AUTOTICKS 0x1
   1947 #define TBS_VERT 0x2
   1948 #define TBS_HORZ 0x0
   1949 #define TBS_TOP 0x4
   1950 #define TBS_BOTTOM 0x0
   1951 #define TBS_LEFT 0x4
   1952 #define TBS_RIGHT 0x0
   1953 #define TBS_BOTH 0x8
   1954 #define TBS_NOTICKS 0x10
   1955 #define TBS_ENABLESELRANGE 0x20
   1956 #define TBS_FIXEDLENGTH 0x40
   1957 #define TBS_NOTHUMB 0x80
   1958 #define TBS_TOOLTIPS 0x100
   1959 #define TBS_REVERSED 0x200
   1960 #define TBS_DOWNISLEFT 0x400
   1961 #if _WIN32_IE >= 0x0600
   1962 #define TBS_NOTIFYBEFOREMOVE 0x800
   1963 #endif
   1964 #if NTDDI_VERSION >= 0x06000000
   1965 #define TBS_TRANSPARENTBKGND 0x1000
   1966 #endif
   1967 
   1968 #define TBM_GETPOS (WM_USER)
   1969 #define TBM_GETRANGEMIN (WM_USER+1)
   1970 #define TBM_GETRANGEMAX (WM_USER+2)
   1971 #define TBM_GETTIC (WM_USER+3)
   1972 #define TBM_SETTIC (WM_USER+4)
   1973 #define TBM_SETPOS (WM_USER+5)
   1974 #define TBM_SETRANGE (WM_USER+6)
   1975 #define TBM_SETRANGEMIN (WM_USER+7)
   1976 #define TBM_SETRANGEMAX (WM_USER+8)
   1977 #define TBM_CLEARTICS (WM_USER+9)
   1978 #define TBM_SETSEL (WM_USER+10)
   1979 #define TBM_SETSELSTART (WM_USER+11)
   1980 #define TBM_SETSELEND (WM_USER+12)
   1981 #define TBM_GETPTICS (WM_USER+14)
   1982 #define TBM_GETTICPOS (WM_USER+15)
   1983 #define TBM_GETNUMTICS (WM_USER+16)
   1984 #define TBM_GETSELSTART (WM_USER+17)
   1985 #define TBM_GETSELEND (WM_USER+18)
   1986 #define TBM_CLEARSEL (WM_USER+19)
   1987 #define TBM_SETTICFREQ (WM_USER+20)
   1988 #define TBM_SETPAGESIZE (WM_USER+21)
   1989 #define TBM_GETPAGESIZE (WM_USER+22)
   1990 #define TBM_SETLINESIZE (WM_USER+23)
   1991 #define TBM_GETLINESIZE (WM_USER+24)
   1992 #define TBM_GETTHUMBRECT (WM_USER+25)
   1993 #define TBM_GETCHANNELRECT (WM_USER+26)
   1994 #define TBM_SETTHUMBLENGTH (WM_USER+27)
   1995 #define TBM_GETTHUMBLENGTH (WM_USER+28)
   1996 #define TBM_SETTOOLTIPS (WM_USER+29)
   1997 #define TBM_GETTOOLTIPS (WM_USER+30)
   1998 #define TBM_SETTIPSIDE (WM_USER+31)
   1999 
   2000 #define TBTS_TOP 0
   2001 #define TBTS_LEFT 1
   2002 #define TBTS_BOTTOM 2
   2003 #define TBTS_RIGHT 3
   2004 
   2005 #define TBM_SETBUDDY (WM_USER+32)
   2006 #define TBM_GETBUDDY (WM_USER+33)
   2007 #define TBM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
   2008 #define TBM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
   2009 
   2010 #define TB_LINEUP 0
   2011 #define TB_LINEDOWN 1
   2012 #define TB_PAGEUP 2
   2013 #define TB_PAGEDOWN 3
   2014 #define TB_THUMBPOSITION 4
   2015 #define TB_THUMBTRACK 5
   2016 #define TB_TOP 6
   2017 #define TB_BOTTOM 7
   2018 #define TB_ENDTRACK 8
   2019 
   2020 #define TBCD_TICS 0x1
   2021 #define TBCD_THUMB 0x2
   2022 #define TBCD_CHANNEL 0x3
   2023 
   2024 #if NTDDI_VERSION >= 0x06000000
   2025 #define TRBN_THUMBPOSCHANGING (TRBN_FIRST-1)
   2026 
   2027   typedef struct tagTRBTHUMBPOSCHANGING {
   2028     NMHDR hdr;
   2029     DWORD dwPos;
   2030     int nReason;
   2031   } NMTRBTHUMBPOSCHANGING;
   2032 #endif
   2033 #endif
   2034 
   2035 #ifndef NODRAGLIST
   2036 
   2037   typedef struct tagDRAGLISTINFO {
   2038     UINT uNotification;
   2039     HWND hWnd;
   2040     POINT ptCursor;
   2041   } DRAGLISTINFO,*LPDRAGLISTINFO;
   2042 
   2043 #define DL_BEGINDRAG (WM_USER+133)
   2044 #define DL_DRAGGING (WM_USER+134)
   2045 #define DL_DROPPED (WM_USER+135)
   2046 #define DL_CANCELDRAG (WM_USER+136)
   2047 
   2048 #define DL_CURSORSET 0
   2049 #define DL_STOPCURSOR 1
   2050 #define DL_COPYCURSOR 2
   2051 #define DL_MOVECURSOR 3
   2052 
   2053 #define DRAGLISTMSGSTRING TEXT("commctrl_DragListMsg")
   2054 
   2055   WINCOMMCTRLAPI WINBOOL WINAPI MakeDragList(HWND hLB);
   2056   WINCOMMCTRLAPI void WINAPI DrawInsert(HWND handParent,HWND hLB,int nItem);
   2057   WINCOMMCTRLAPI int WINAPI LBItemFromPt(HWND hLB,POINT pt,WINBOOL bAutoScroll);
   2058 #endif
   2059 
   2060 #ifndef NOUPDOWN
   2061 
   2062 #define UPDOWN_CLASSA "msctls_updown32"
   2063 #define UPDOWN_CLASSW L"msctls_updown32"
   2064 
   2065 #define UPDOWN_CLASS __MINGW_NAME_AW(UPDOWN_CLASS)
   2066 
   2067   typedef struct _UDACCEL {
   2068     UINT nSec;
   2069     UINT nInc;
   2070   } UDACCEL,*LPUDACCEL;
   2071 
   2072 #define UD_MAXVAL 0x7fff
   2073 #define UD_MINVAL (-UD_MAXVAL)
   2074 
   2075 #define UDS_WRAP 0x1
   2076 #define UDS_SETBUDDYINT 0x2
   2077 #define UDS_ALIGNRIGHT 0x4
   2078 #define UDS_ALIGNLEFT 0x8
   2079 #define UDS_AUTOBUDDY 0x10
   2080 #define UDS_ARROWKEYS 0x20
   2081 #define UDS_HORZ 0x40
   2082 #define UDS_NOTHOUSANDS 0x80
   2083 #define UDS_HOTTRACK 0x100
   2084 
   2085 #define UDM_SETRANGE (WM_USER+101)
   2086 #define UDM_GETRANGE (WM_USER+102)
   2087 #define UDM_SETPOS (WM_USER+103)
   2088 #define UDM_GETPOS (WM_USER+104)
   2089 #define UDM_SETBUDDY (WM_USER+105)
   2090 #define UDM_GETBUDDY (WM_USER+106)
   2091 #define UDM_SETACCEL (WM_USER+107)
   2092 #define UDM_GETACCEL (WM_USER+108)
   2093 #define UDM_SETBASE (WM_USER+109)
   2094 #define UDM_GETBASE (WM_USER+110)
   2095 #define UDM_SETRANGE32 (WM_USER+111)
   2096 #define UDM_GETRANGE32 (WM_USER+112)
   2097 #define UDM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
   2098 #define UDM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
   2099 #define UDM_SETPOS32 (WM_USER+113)
   2100 #define UDM_GETPOS32 (WM_USER+114)
   2101 
   2102   WINCOMMCTRLAPI HWND WINAPI CreateUpDownControl(DWORD dwStyle,int x,int y,int cx,int cy,HWND hParent,int nID,HINSTANCE hInst,HWND hBuddy,int nUpper,int nLower,int nPos);
   2103 
   2104 #define NM_UPDOWN NMUPDOWN
   2105 #define LPNM_UPDOWN LPNMUPDOWN
   2106 
   2107   typedef struct _NM_UPDOWN {
   2108     NMHDR hdr;
   2109     int iPos;
   2110     int iDelta;
   2111   } NMUPDOWN,*LPNMUPDOWN;
   2112 
   2113 #define UDN_DELTAPOS (UDN_FIRST - 1)
   2114 #endif
   2115 
   2116 #ifndef NOPROGRESS
   2117 
   2118 #define PROGRESS_CLASSA "msctls_progress32"
   2119 #define PROGRESS_CLASSW L"msctls_progress32"
   2120 
   2121 #define PROGRESS_CLASS __MINGW_NAME_AW(PROGRESS_CLASS)
   2122 
   2123 #define PBS_SMOOTH 0x1
   2124 #define PBS_VERTICAL 0x4
   2125 
   2126 #define PBM_SETRANGE (WM_USER+1)
   2127 #define PBM_SETPOS (WM_USER+2)
   2128 #define PBM_DELTAPOS (WM_USER+3)
   2129 #define PBM_SETSTEP (WM_USER+4)
   2130 #define PBM_STEPIT (WM_USER+5)
   2131 #define PBM_SETRANGE32 (WM_USER+6)
   2132   typedef struct {
   2133     int iLow;
   2134     int iHigh;
   2135   } PBRANGE,*PPBRANGE;
   2136 #define PBM_GETRANGE (WM_USER+7)
   2137 #define PBM_GETPOS (WM_USER+8)
   2138 #define PBM_SETBARCOLOR (WM_USER+9)
   2139 #define PBM_SETBKCOLOR CCM_SETBKCOLOR
   2140 
   2141 #define PBS_MARQUEE 0x8
   2142 #define PBM_SETMARQUEE (WM_USER+10)
   2143 
   2144 #if NTDDI_VERSION >= 0x06000000
   2145 #define PBM_GETSTEP (WM_USER+13)
   2146 #define PBM_GETBKCOLOR (WM_USER+14)
   2147 #define PBM_GETBARCOLOR (WM_USER+15)
   2148 #define PBM_SETSTATE (WM_USER+16)
   2149 #define PBM_GETSTATE (WM_USER+17)
   2150 
   2151 #define PBS_SMOOTHREVERSE 0x10
   2152 
   2153 #define PBST_NORMAL 1
   2154 #define PBST_ERROR 2
   2155 #define PBST_PAUSED 3
   2156 #endif /* (_WIN32_WINNT >= 0x0600) */
   2157 
   2158 #endif /* !NOPROGRESS */
   2159 
   2160 #ifndef NOHOTKEY
   2161 
   2162 #define HOTKEYF_SHIFT 0x1
   2163 #define HOTKEYF_CONTROL 0x2
   2164 #define HOTKEYF_ALT 0x4
   2165 #define HOTKEYF_EXT 0x8
   2166 #define HKCOMB_NONE 0x1
   2167 #define HKCOMB_S 0x2
   2168 #define HKCOMB_C 0x4
   2169 #define HKCOMB_A 0x8
   2170 #define HKCOMB_SC 0x10
   2171 #define HKCOMB_SA 0x20
   2172 #define HKCOMB_CA 0x40
   2173 #define HKCOMB_SCA 0x80
   2174 
   2175 #define HKM_SETHOTKEY (WM_USER+1)
   2176 #define HKM_GETHOTKEY (WM_USER+2)
   2177 #define HKM_SETRULES (WM_USER+3)
   2178 
   2179 #define HOTKEY_CLASSA "msctls_hotkey32"
   2180 #define HOTKEY_CLASSW L"msctls_hotkey32"
   2181 
   2182 #define HOTKEY_CLASS __MINGW_NAME_AW(HOTKEY_CLASS)
   2183 #endif
   2184 
   2185 #define CCS_TOP __MSABI_LONG(0x1)
   2186 #define CCS_NOMOVEY __MSABI_LONG(0x2)
   2187 #define CCS_BOTTOM __MSABI_LONG(0x3)
   2188 #define CCS_NORESIZE __MSABI_LONG(0x4)
   2189 #define CCS_NOPARENTALIGN __MSABI_LONG(0x8)
   2190 #define CCS_ADJUSTABLE __MSABI_LONG(0x20)
   2191 #define CCS_NODIVIDER __MSABI_LONG(0x40)
   2192 #define CCS_VERT __MSABI_LONG(0x80)
   2193 #define CCS_LEFT (CCS_VERT | CCS_TOP)
   2194 #define CCS_RIGHT (CCS_VERT | CCS_BOTTOM)
   2195 #define CCS_NOMOVEX (CCS_VERT | CCS_NOMOVEY)
   2196 
   2197 #define INVALID_LINK_INDEX (-1)
   2198 #define MAX_LINKID_TEXT 48
   2199 #define L_MAX_URL_LENGTH (2048+32+sizeof("://"))
   2200 
   2201 #define WC_LINK L"SysLink"
   2202 
   2203   typedef struct tagLITEM {
   2204     UINT mask;
   2205     int iLink;
   2206     UINT state;
   2207     UINT stateMask;
   2208     WCHAR szID[MAX_LINKID_TEXT];
   2209     WCHAR szUrl[L_MAX_URL_LENGTH];
   2210   } LITEM,*PLITEM;
   2211 
   2212   typedef struct tagLHITTESTINFO {
   2213     POINT pt;
   2214     LITEM item;
   2215   } LHITTESTINFO,*PLHITTESTINFO;
   2216 
   2217   typedef struct tagNMLINK {
   2218     NMHDR hdr;
   2219     LITEM item;
   2220   } NMLINK,*PNMLINK;
   2221 
   2222 #ifndef NOLISTVIEW
   2223 
   2224 #define WC_LISTVIEWA "SysListView32"
   2225 #define WC_LISTVIEWW L"SysListView32"
   2226 
   2227 #define WC_LISTVIEW __MINGW_NAME_AW(WC_LISTVIEW)
   2228 
   2229 #define LVS_ICON 0x0
   2230 #define LVS_REPORT 0x1
   2231 #define LVS_SMALLICON 0x2
   2232 #define LVS_LIST 0x3
   2233 #define LVS_TYPEMASK 0x3
   2234 #define LVS_SINGLESEL 0x4
   2235 #define LVS_SHOWSELALWAYS 0x8
   2236 #define LVS_SORTASCENDING 0x10
   2237 #define LVS_SORTDESCENDING 0x20
   2238 #define LVS_SHAREIMAGELISTS 0x40
   2239 #define LVS_NOLABELWRAP 0x80
   2240 #define LVS_AUTOARRANGE 0x100
   2241 #define LVS_EDITLABELS 0x200
   2242 #define LVS_OWNERDATA 0x1000
   2243 #define LVS_NOSCROLL 0x2000
   2244 
   2245 #define LVS_TYPESTYLEMASK 0xfc00
   2246 
   2247 #define LVS_ALIGNTOP 0x0
   2248 #define LVS_ALIGNLEFT 0x800
   2249 #define LVS_ALIGNMASK 0xc00
   2250 
   2251 #define LVS_OWNERDRAWFIXED 0x400
   2252 #define LVS_NOCOLUMNHEADER 0x4000
   2253 #define LVS_NOSORTHEADER 0x8000
   2254 
   2255 #define LVM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
   2256 #define ListView_SetUnicodeFormat(hwnd,fUnicode) (WINBOOL)SNDMSG((hwnd),LVM_SETUNICODEFORMAT,(WPARAM)(fUnicode),0)
   2257 #define LVM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
   2258 #define ListView_GetUnicodeFormat(hwnd) (WINBOOL)SNDMSG((hwnd),LVM_GETUNICODEFORMAT,0,0)
   2259 #define LVM_GETBKCOLOR (LVM_FIRST+0)
   2260 #define ListView_GetBkColor(hwnd) (COLORREF)SNDMSG((hwnd),LVM_GETBKCOLOR,(WPARAM)0,(LPARAM)0)
   2261 #define LVM_SETBKCOLOR (LVM_FIRST+1)
   2262 #define ListView_SetBkColor(hwnd,clrBk) (WINBOOL)SNDMSG((hwnd),LVM_SETBKCOLOR,0,(LPARAM)(COLORREF)(clrBk))
   2263 #define LVM_GETIMAGELIST (LVM_FIRST+2)
   2264 #define ListView_GetImageList(hwnd,iImageList) (HIMAGELIST)SNDMSG((hwnd),LVM_GETIMAGELIST,(WPARAM)(INT)(iImageList),(LPARAM)0)
   2265 
   2266 #define LVSIL_NORMAL 0
   2267 #define LVSIL_SMALL 1
   2268 #define LVSIL_STATE 2
   2269 #define LVSIL_GROUPHEADER 3
   2270 
   2271 #define LVM_SETIMAGELIST (LVM_FIRST+3)
   2272 #define ListView_SetImageList(hwnd,himl,iImageList) (HIMAGELIST)SNDMSG((hwnd),LVM_SETIMAGELIST,(WPARAM)(iImageList),(LPARAM)(HIMAGELIST)(himl))
   2273 
   2274 #define LVM_GETITEMCOUNT (LVM_FIRST+4)
   2275 #define ListView_GetItemCount(hwnd) (int)SNDMSG((hwnd),LVM_GETITEMCOUNT,(WPARAM)0,(LPARAM)0)
   2276 
   2277 #define LVIF_TEXT 0x1
   2278 #define LVIF_IMAGE 0x2
   2279 #define LVIF_PARAM 0x4
   2280 #define LVIF_STATE 0x8
   2281 #define LVIF_INDENT 0x10
   2282 #define LVIF_NORECOMPUTE 0x800
   2283 #define LVIF_GROUPID 0x100
   2284 #define LVIF_COLUMNS 0x200
   2285 #if NTDDI_VERSION >= 0x06000000
   2286 #define LVIF_COLFMT 0x10000
   2287 #endif
   2288 
   2289 #define LVIS_FOCUSED 0x1
   2290 #define LVIS_SELECTED 0x2
   2291 #define LVIS_CUT 0x4
   2292 #define LVIS_DROPHILITED 0x8
   2293 #define LVIS_GLOW 0x10
   2294 #define LVIS_ACTIVATING 0x20
   2295 
   2296 #define LVIS_OVERLAYMASK 0xf00
   2297 #define LVIS_STATEIMAGEMASK 0xF000
   2298 
   2299 #define INDEXTOSTATEIMAGEMASK(i) ((i) << 12)
   2300 
   2301 #define I_INDENTCALLBACK (-1)
   2302 #define LV_ITEMA LVITEMA
   2303 #define LV_ITEMW LVITEMW
   2304 
   2305 #define I_GROUPIDCALLBACK (-1)
   2306 #define I_GROUPIDNONE (-2)
   2307 
   2308 #define LV_ITEM LVITEM
   2309 
   2310 #define LVITEMA_V1_SIZE CCSIZEOF_STRUCT(LVITEMA,lParam)
   2311 #define LVITEMW_V1_SIZE CCSIZEOF_STRUCT(LVITEMW,lParam)
   2312 
   2313 #if NTDDI_VERSION >= 0x06000000
   2314 #define LVITEMA_V5_SIZE CCSIZEOF_STRUCT (LVITEMA, puColumns)
   2315 #define LVITEMW_V5_SIZE CCSIZEOF_STRUCT (LVITEMW, puColumns)
   2316 #define LVITEM_V5_SIZE __MINGW_NAME_AW_EXT(LVITEM,_V5_SIZE)
   2317 #endif
   2318 
   2319   typedef struct tagLVITEMA {
   2320     UINT mask;
   2321     int iItem;
   2322     int iSubItem;
   2323     UINT state;
   2324     UINT stateMask;
   2325     LPSTR pszText;
   2326     int cchTextMax;
   2327     int iImage;
   2328     LPARAM lParam;
   2329     int iIndent;
   2330     int iGroupId;
   2331     UINT cColumns;
   2332     PUINT puColumns;
   2333 #if NTDDI_VERSION >= 0x06000000
   2334     int *piColFmt;
   2335     int iGroup;
   2336 #endif
   2337   } LVITEMA,*LPLVITEMA;
   2338 
   2339   typedef struct tagLVITEMW
   2340   {
   2341     UINT mask;
   2342     int iItem;
   2343     int iSubItem;
   2344     UINT state;
   2345     UINT stateMask;
   2346     LPWSTR pszText;
   2347     int cchTextMax;
   2348     int iImage;
   2349     LPARAM lParam;
   2350     int iIndent;
   2351     int iGroupId;
   2352     UINT cColumns;
   2353     PUINT puColumns;
   2354 #if NTDDI_VERSION >= 0x06000000
   2355     int *piColFmt;
   2356     int iGroup;
   2357 #endif
   2358   } LVITEMW,*LPLVITEMW;
   2359 
   2360 #define LVITEM __MINGW_NAME_AW(LVITEM)
   2361 #define LPLVITEM __MINGW_NAME_AW(LPLVITEM)
   2362 
   2363 #define LVITEM_V1_SIZE __MINGW_NAME_AW_EXT(LVITEM,_V1_SIZE)
   2364 
   2365 #define LPSTR_TEXTCALLBACKW ((LPWSTR)(INT_PTR)-1)
   2366 #define LPSTR_TEXTCALLBACKA ((LPSTR)(INT_PTR)-1)
   2367 
   2368 #define LPSTR_TEXTCALLBACK __MINGW_NAME_AW(LPSTR_TEXTCALLBACK)
   2369 
   2370 #define I_IMAGECALLBACK (-1)
   2371 #define I_IMAGENONE (-2)
   2372 #define I_COLUMNSCALLBACK ((UINT)-1)
   2373 
   2374 #define LVM_GETITEMA (LVM_FIRST+5)
   2375 #define LVM_GETITEMW (LVM_FIRST+75)
   2376 
   2377 #define LVM_GETITEM __MINGW_NAME_AW(LVM_GETITEM)
   2378 
   2379 #define ListView_GetItem(hwnd,pitem) (WINBOOL)SNDMSG((hwnd),LVM_GETITEM,0,(LPARAM)(LV_ITEM *)(pitem))
   2380 
   2381 #define LVM_SETITEMA (LVM_FIRST+6)
   2382 #define LVM_SETITEMW (LVM_FIRST+76)
   2383 
   2384 #define LVM_SETITEM __MINGW_NAME_AW(LVM_SETITEM)
   2385 
   2386 #define ListView_SetItem(hwnd,pitem) (WINBOOL)SNDMSG((hwnd),LVM_SETITEM,0,(LPARAM)(const LV_ITEM *)(pitem))
   2387 
   2388 #define LVM_INSERTITEMA (LVM_FIRST+7)
   2389 #define LVM_INSERTITEMW (LVM_FIRST+77)
   2390 
   2391 #define LVM_INSERTITEM __MINGW_NAME_AW(LVM_INSERTITEM)
   2392 
   2393 #define ListView_InsertItem(hwnd,pitem) (int)SNDMSG((hwnd),LVM_INSERTITEM,0,(LPARAM)(const LV_ITEM *)(pitem))
   2394 
   2395 #define LVM_DELETEITEM (LVM_FIRST+8)
   2396 #define ListView_DeleteItem(hwnd,i) (WINBOOL)SNDMSG((hwnd),LVM_DELETEITEM,(WPARAM)(int)(i),(LPARAM)0)
   2397 
   2398 #define LVM_DELETEALLITEMS (LVM_FIRST+9)
   2399 #define ListView_DeleteAllItems(hwnd) (WINBOOL)SNDMSG((hwnd),LVM_DELETEALLITEMS,(WPARAM)0,(LPARAM)0)
   2400 
   2401 #define LVM_GETCALLBACKMASK (LVM_FIRST+10)
   2402 #define ListView_GetCallbackMask(hwnd) (WINBOOL)SNDMSG((hwnd),LVM_GETCALLBACKMASK,0,0)
   2403 
   2404 #define LVM_SETCALLBACKMASK (LVM_FIRST+11)
   2405 #define ListView_SetCallbackMask(hwnd,mask) (WINBOOL)SNDMSG((hwnd),LVM_SETCALLBACKMASK,(WPARAM)(UINT)(mask),0)
   2406 
   2407 #define LVNI_ALL 0x0
   2408 #define LVNI_FOCUSED 0x1
   2409 #define LVNI_SELECTED 0x2
   2410 #define LVNI_CUT 0x4
   2411 #define LVNI_DROPHILITED 0x8
   2412 #define LVNI_STATEMASK (LVNI_FOCUSED | LVNI_SELECTED | LVNI_CUT | LVNI_DROPHILITED)
   2413 #define LVNI_VISIBLEORDER 0x10
   2414 #define LVNI_PREVIOUS 0x20
   2415 #define LVNI_VISIBLEONLY 0x40
   2416 #define LVNI_SAMEGROUPONLY 0x80
   2417 #define LVNI_ABOVE 0x100
   2418 #define LVNI_BELOW 0x200
   2419 #define LVNI_TOLEFT 0x400
   2420 #define LVNI_TORIGHT 0x800
   2421 #define LVNI_DIRECTIONMASK (LVNI_ABOVE | LVNI_BELOW | LVNI_TOLEFT | LVNI_TORIGHT)
   2422 
   2423 #define LVM_GETNEXTITEM (LVM_FIRST+12)
   2424 #define ListView_GetNextItem(hwnd,i,flags) (int)SNDMSG((hwnd),LVM_GETNEXTITEM,(WPARAM)(int)(i),MAKELPARAM((flags),0))
   2425 
   2426 #define LVFI_PARAM 0x1
   2427 #define LVFI_STRING 0x2
   2428 #define LVFI_PARTIAL 0x8
   2429 #define LVFI_WRAP 0x20
   2430 #define LVFI_NEARESTXY 0x40
   2431 
   2432 #define LV_FINDINFOA LVFINDINFOA
   2433 #define LV_FINDINFOW LVFINDINFOW
   2434 #define LV_FINDINFO LVFINDINFO
   2435 
   2436   typedef struct tagLVFINDINFOA {
   2437     UINT flags;
   2438     LPCSTR psz;
   2439     LPARAM lParam;
   2440     POINT pt;
   2441     UINT vkDirection;
   2442   } LVFINDINFOA,*LPFINDINFOA;
   2443 
   2444   typedef struct tagLVFINDINFOW {
   2445     UINT flags;
   2446     LPCWSTR psz;
   2447     LPARAM lParam;
   2448     POINT pt;
   2449     UINT vkDirection;
   2450   } LVFINDINFOW,*LPFINDINFOW;
   2451 
   2452 #define LVFINDINFO __MINGW_NAME_AW(LVFINDINFO)
   2453 
   2454 #define LVM_FINDITEMA (LVM_FIRST+13)
   2455 #define LVM_FINDITEMW (LVM_FIRST+83)
   2456 
   2457 #define LVM_FINDITEM __MINGW_NAME_AW(LVM_FINDITEM)
   2458 
   2459 #define ListView_FindItem(hwnd,iStart,plvfi) (int)SNDMSG((hwnd),LVM_FINDITEM,(WPARAM)(int)(iStart),(LPARAM)(const LV_FINDINFO *)(plvfi))
   2460 
   2461 #define LVIR_BOUNDS 0
   2462 #define LVIR_ICON 1
   2463 #define LVIR_LABEL 2
   2464 #define LVIR_SELECTBOUNDS 3
   2465 
   2466 #define LVM_GETITEMRECT (LVM_FIRST+14)
   2467 #define ListView_GetItemRect(hwnd,i,prc,code) (WINBOOL)SNDMSG((hwnd),LVM_GETITEMRECT,(WPARAM)(int)(i),((prc) ? (((RECT *)(prc))->left = (code),(LPARAM)(RECT *)(prc)) : (LPARAM)(RECT *)NULL))
   2468 
   2469 #define LVM_SETITEMPOSITION (LVM_FIRST+15)
   2470 #define ListView_SetItemPosition(hwndLV,i,x,y) (WINBOOL)SNDMSG((hwndLV),LVM_SETITEMPOSITION,(WPARAM)(int)(i),MAKELPARAM((x),(y)))
   2471 
   2472 #define LVM_GETITEMPOSITION (LVM_FIRST+16)
   2473 #define ListView_GetItemPosition(hwndLV,i,ppt) (WINBOOL)SNDMSG((hwndLV),LVM_GETITEMPOSITION,(WPARAM)(int)(i),(LPARAM)(POINT *)(ppt))
   2474 
   2475 #define LVM_GETSTRINGWIDTHA (LVM_FIRST+17)
   2476 #define LVM_GETSTRINGWIDTHW (LVM_FIRST+87)
   2477 
   2478 #define LVM_GETSTRINGWIDTH __MINGW_NAME_AW(LVM_GETSTRINGWIDTH)
   2479 
   2480 #define ListView_GetStringWidth(hwndLV,psz) (int)SNDMSG((hwndLV),LVM_GETSTRINGWIDTH,0,(LPARAM)(LPCTSTR)(psz))
   2481 
   2482 #define LVHT_NOWHERE 0x1
   2483 #define LVHT_ONITEMICON 0x2
   2484 #define LVHT_ONITEMLABEL 0x4
   2485 #define LVHT_ONITEMSTATEICON 0x8
   2486 #define LVHT_ONITEM (LVHT_ONITEMICON | LVHT_ONITEMLABEL | LVHT_ONITEMSTATEICON)
   2487 
   2488 #define LVHT_ABOVE 0x8
   2489 #define LVHT_BELOW 0x10
   2490 #define LVHT_TORIGHT 0x20
   2491 #define LVHT_TOLEFT 0x40
   2492 
   2493 #define LVHT_EX_GROUP_HEADER 0x10000000
   2494 #define LVHT_EX_GROUP_FOOTER 0x20000000
   2495 #define LVHT_EX_GROUP_COLLAPSE 0x40000000
   2496 #define LVHT_EX_GROUP_BACKGROUND 0x80000000
   2497 #define LVHT_EX_GROUP_STATEICON 0x01000000
   2498 #define LVHT_EX_GROUP_SUBSETLINK 0x02000000
   2499 #define LVHT_EX_GROUP (LVHT_EX_GROUP_BACKGROUND | LVHT_EX_GROUP_COLLAPSE | LVHT_EX_GROUP_FOOTER | LVHT_EX_GROUP_HEADER | LVHT_EX_GROUP_STATEICON | LVHT_EX_GROUP_SUBSETLINK)
   2500 #define LVHT_EX_ONCONTENTS 0x04000000
   2501 
   2502 #define LV_HITTESTINFO LVHITTESTINFO
   2503 
   2504 #define LVHITTESTINFO_V1_SIZE CCSIZEOF_STRUCT(LVHITTESTINFO,iItem)
   2505 
   2506   typedef struct tagLVHITTESTINFO {
   2507     POINT pt;
   2508     UINT flags;
   2509     int iItem;
   2510     int iSubItem;
   2511 #if NTDDI_VERSION >= 0x06000000
   2512     int iGroup;
   2513 #endif
   2514   } LVHITTESTINFO,*LPLVHITTESTINFO;
   2515 
   2516 #define LVM_HITTEST (LVM_FIRST+18)
   2517 #define ListView_HitTest(hwndLV,pinfo) (int)SNDMSG((hwndLV),LVM_HITTEST,0,(LPARAM)(LV_HITTESTINFO *)(pinfo))
   2518 
   2519 #define LVM_ENSUREVISIBLE (LVM_FIRST+19)
   2520 #define ListView_EnsureVisible(hwndLV,i,fPartialOK) (WINBOOL)SNDMSG((hwndLV),LVM_ENSUREVISIBLE,(WPARAM)(int)(i),MAKELPARAM((fPartialOK),0))
   2521 
   2522 #define LVM_SCROLL (LVM_FIRST+20)
   2523 #define ListView_Scroll(hwndLV,dx,dy) (WINBOOL)SNDMSG((hwndLV),LVM_SCROLL,(WPARAM)(int)(dx),(LPARAM)(int)(dy))
   2524 
   2525 #define LVM_REDRAWITEMS (LVM_FIRST+21)
   2526 #define ListView_RedrawItems(hwndLV,iFirst,iLast) (WINBOOL)SNDMSG((hwndLV),LVM_REDRAWITEMS,(WPARAM)(int)(iFirst),(LPARAM)(int)(iLast))
   2527 
   2528 #define LVA_DEFAULT 0x0
   2529 #define LVA_ALIGNLEFT 0x1
   2530 #define LVA_ALIGNTOP 0x2
   2531 #define LVA_SNAPTOGRID 0x5
   2532 
   2533 #define LVM_ARRANGE (LVM_FIRST+22)
   2534 #define ListView_Arrange(hwndLV,code) (WINBOOL)SNDMSG((hwndLV),LVM_ARRANGE,(WPARAM)(UINT)(code),(LPARAM)0)
   2535 
   2536 #define LVM_EDITLABELA (LVM_FIRST+23)
   2537 #define LVM_EDITLABELW (LVM_FIRST+118)
   2538 
   2539 #define LVM_EDITLABEL __MINGW_NAME_AW(LVM_EDITLABEL)
   2540 
   2541 #define ListView_EditLabel(hwndLV,i) (HWND)SNDMSG((hwndLV),LVM_EDITLABEL,(WPARAM)(int)(i),(LPARAM)0)
   2542 
   2543 #define LVM_GETEDITCONTROL (LVM_FIRST+24)
   2544 #define ListView_GetEditControl(hwndLV) (HWND)SNDMSG((hwndLV),LVM_GETEDITCONTROL,(WPARAM)0,(LPARAM)0)
   2545 
   2546 #define LV_COLUMNA LVCOLUMNA
   2547 #define LV_COLUMNW LVCOLUMNW
   2548 #define LV_COLUMN LVCOLUMN
   2549 
   2550 #define LVCOLUMNA_V1_SIZE CCSIZEOF_STRUCT(LVCOLUMNA,iSubItem)
   2551 #define LVCOLUMNW_V1_SIZE CCSIZEOF_STRUCT(LVCOLUMNW,iSubItem)
   2552 
   2553   typedef struct tagLVCOLUMNA {
   2554     UINT mask;
   2555     int fmt;
   2556     int cx;
   2557     LPSTR pszText;
   2558     int cchTextMax;
   2559     int iSubItem;
   2560     int iImage;
   2561     int iOrder;
   2562 #if NTDDI_VERSION >= 0x06000000
   2563     int cxMin;
   2564     int cxDefault;
   2565     int cxIdeal;
   2566 #endif
   2567   } LVCOLUMNA,*LPLVCOLUMNA;
   2568 
   2569   typedef struct tagLVCOLUMNW {
   2570     UINT mask;
   2571     int fmt;
   2572     int cx;
   2573     LPWSTR pszText;
   2574     int cchTextMax;
   2575     int iSubItem;
   2576     int iImage;
   2577     int iOrder;
   2578 #if NTDDI_VERSION >= 0x06000000
   2579     int cxMin;
   2580     int cxDefault;
   2581     int cxIdeal;
   2582 #endif
   2583   } LVCOLUMNW,*LPLVCOLUMNW;
   2584 
   2585 #define LVCOLUMN __MINGW_NAME_AW(LVCOLUMN)
   2586 #define LPLVCOLUMN __MINGW_NAME_AW(LPLVCOLUMN)
   2587 
   2588 #define LVCOLUMN_V1_SIZE __MINGW_NAME_AW_EXT(LVCOLUMN,_V1_SIZE)
   2589 
   2590 #define LVCF_FMT 0x1
   2591 #define LVCF_WIDTH 0x2
   2592 #define LVCF_TEXT 0x4
   2593 #define LVCF_SUBITEM 0x8
   2594 #define LVCF_IMAGE 0x10
   2595 #define LVCF_ORDER 0x20
   2596 #if NTDDI_VERSION >= 0x06000000
   2597 #define LVCF_MINWIDTH 0x40
   2598 #define LVCF_DEFAULTWIDTH 0x80
   2599 #define LVCF_IDEALWIDTH 0x100
   2600 #endif
   2601 
   2602 #define LVCFMT_LEFT 0x0
   2603 #define LVCFMT_RIGHT 0x1
   2604 #define LVCFMT_CENTER 0x2
   2605 #define LVCFMT_JUSTIFYMASK 0x3
   2606 #define LVCFMT_IMAGE 0x800
   2607 #define LVCFMT_BITMAP_ON_RIGHT 0x1000
   2608 #define LVCFMT_COL_HAS_IMAGES 0x8000
   2609 #if NTDDI_VERSION >= 0x06000000
   2610 #define LVCFMT_FIXED_WIDTH 0x100
   2611 #define LVCFMT_NO_DPI_SCALE 0x40000
   2612 #define LVCFMT_FIXED_RATIO 0x80000
   2613 #define LVCFMT_LINE_BREAK 0x100000
   2614 #define LVCFMT_FILL 0x200000
   2615 #define LVCFMT_WRAP 0x400000
   2616 #define LVCFMT_NO_TITLE 0x800000
   2617 #define LVCFMT_SPLITBUTTON 0x1000000
   2618 #define LVCFMT_TILE_PLACEMENTMASK (LVCFMT_LINE_BREAK|LVCFMT_FILL)
   2619 #endif
   2620 
   2621 #define LVM_GETCOLUMNA (LVM_FIRST+25)
   2622 #define LVM_GETCOLUMNW (LVM_FIRST+95)
   2623 
   2624 #define LVM_GETCOLUMN __MINGW_NAME_AW(LVM_GETCOLUMN)
   2625 
   2626 #define ListView_GetColumn(hwnd,iCol,pcol) (WINBOOL)SNDMSG((hwnd),LVM_GETCOLUMN,(WPARAM)(int)(iCol),(LPARAM)(LV_COLUMN *)(pcol))
   2627 
   2628 #define LVM_SETCOLUMNA (LVM_FIRST+26)
   2629 #define LVM_SETCOLUMNW (LVM_FIRST+96)
   2630 
   2631 #define LVM_SETCOLUMN __MINGW_NAME_AW(LVM_SETCOLUMN)
   2632 
   2633 #define ListView_SetColumn(hwnd,iCol,pcol) (WINBOOL)SNDMSG((hwnd),LVM_SETCOLUMN,(WPARAM)(int)(iCol),(LPARAM)(const LV_COLUMN *)(pcol))
   2634 
   2635 #define LVM_INSERTCOLUMNA (LVM_FIRST+27)
   2636 #define LVM_INSERTCOLUMNW (LVM_FIRST+97)
   2637 
   2638 #define LVM_INSERTCOLUMN __MINGW_NAME_AW(LVM_INSERTCOLUMN)
   2639 
   2640 #define ListView_InsertColumn(hwnd,iCol,pcol) (int)SNDMSG((hwnd),LVM_INSERTCOLUMN,(WPARAM)(int)(iCol),(LPARAM)(const LV_COLUMN *)(pcol))
   2641 
   2642 #define LVM_DELETECOLUMN (LVM_FIRST+28)
   2643 #define ListView_DeleteColumn(hwnd,iCol) (WINBOOL)SNDMSG((hwnd),LVM_DELETECOLUMN,(WPARAM)(int)(iCol),0)
   2644 
   2645 #define LVM_GETCOLUMNWIDTH (LVM_FIRST+29)
   2646 #define ListView_GetColumnWidth(hwnd,iCol) (int)SNDMSG((hwnd),LVM_GETCOLUMNWIDTH,(WPARAM)(int)(iCol),0)
   2647 
   2648 #define LVSCW_AUTOSIZE -1
   2649 #define LVSCW_AUTOSIZE_USEHEADER -2
   2650 #define LVM_SETCOLUMNWIDTH (LVM_FIRST+30)
   2651 
   2652 #define ListView_SetColumnWidth(hwnd,iCol,cx) (WINBOOL)SNDMSG((hwnd),LVM_SETCOLUMNWIDTH,(WPARAM)(int)(iCol),MAKELPARAM((cx),0))
   2653 
   2654 #define LVM_GETHEADER (LVM_FIRST+31)
   2655 #define ListView_GetHeader(hwnd) (HWND)SNDMSG((hwnd),LVM_GETHEADER,(WPARAM)0,(LPARAM)0)
   2656 #define LVM_CREATEDRAGIMAGE (LVM_FIRST+33)
   2657 #define ListView_CreateDragImage(hwnd,i,lpptUpLeft) (HIMAGELIST)SNDMSG((hwnd),LVM_CREATEDRAGIMAGE,(WPARAM)(int)(i),(LPARAM)(LPPOINT)(lpptUpLeft))
   2658 #define LVM_GETVIEWRECT (LVM_FIRST+34)
   2659 #define ListView_GetViewRect(hwnd,prc) (WINBOOL)SNDMSG((hwnd),LVM_GETVIEWRECT,0,(LPARAM)(RECT *)(prc))
   2660 #define LVM_GETTEXTCOLOR (LVM_FIRST+35)
   2661 #define ListView_GetTextColor(hwnd) (COLORREF)SNDMSG((hwnd),LVM_GETTEXTCOLOR,(WPARAM)0,(LPARAM)0)
   2662 #define LVM_SETTEXTCOLOR (LVM_FIRST+36)
   2663 #define ListView_SetTextColor(hwnd,clrText) (WINBOOL)SNDMSG((hwnd),LVM_SETTEXTCOLOR,0,(LPARAM)(COLORREF)(clrText))
   2664 #define LVM_GETTEXTBKCOLOR (LVM_FIRST+37)
   2665 #define ListView_GetTextBkColor(hwnd) (COLORREF)SNDMSG((hwnd),LVM_GETTEXTBKCOLOR,(WPARAM)0,(LPARAM)0)
   2666 #define LVM_SETTEXTBKCOLOR (LVM_FIRST+38)
   2667 #define ListView_SetTextBkColor(hwnd,clrTextBk) (WINBOOL)SNDMSG((hwnd),LVM_SETTEXTBKCOLOR,0,(LPARAM)(COLORREF)(clrTextBk))
   2668 #define LVM_GETTOPINDEX (LVM_FIRST+39)
   2669 #define ListView_GetTopIndex(hwndLV) (int)SNDMSG((hwndLV),LVM_GETTOPINDEX,0,0)
   2670 #define LVM_GETCOUNTPERPAGE (LVM_FIRST+40)
   2671 #define ListView_GetCountPerPage(hwndLV) (int)SNDMSG((hwndLV),LVM_GETCOUNTPERPAGE,0,0)
   2672 #define LVM_GETORIGIN (LVM_FIRST+41)
   2673 #define ListView_GetOrigin(hwndLV,ppt) (WINBOOL)SNDMSG((hwndLV),LVM_GETORIGIN,(WPARAM)0,(LPARAM)(POINT *)(ppt))
   2674 #define LVM_UPDATE (LVM_FIRST+42)
   2675 #define ListView_Update(hwndLV,i) (WINBOOL)SNDMSG((hwndLV),LVM_UPDATE,(WPARAM)(i),(LPARAM)0)
   2676 #define LVM_SETITEMSTATE (LVM_FIRST+43)
   2677 #define ListView_SetItemState(hwndLV,i,data,mask) { LV_ITEM _ms_lvi; _ms_lvi.stateMask = mask; _ms_lvi.state = data; SNDMSG((hwndLV),LVM_SETITEMSTATE,(WPARAM)(i),(LPARAM)(LV_ITEM *)&_ms_lvi);}
   2678 #define ListView_SetCheckState(hwndLV,i,fCheck) ListView_SetItemState(hwndLV,i,INDEXTOSTATEIMAGEMASK((fCheck)?2:1),LVIS_STATEIMAGEMASK)
   2679 #define LVM_GETITEMSTATE (LVM_FIRST+44)
   2680 #define ListView_GetItemState(hwndLV,i,mask) (UINT)SNDMSG((hwndLV),LVM_GETITEMSTATE,(WPARAM)(i),(LPARAM)(mask))
   2681 #define ListView_GetCheckState(hwndLV,i) ((((UINT)(SNDMSG((hwndLV),LVM_GETITEMSTATE,(WPARAM)(i),LVIS_STATEIMAGEMASK))) >> 12) -1)
   2682 
   2683 #define LVM_GETITEMTEXTA (LVM_FIRST+45)
   2684 #define LVM_GETITEMTEXTW (LVM_FIRST+115)
   2685 
   2686 #define LVM_GETITEMTEXT __MINGW_NAME_AW(LVM_GETITEMTEXT)
   2687 
   2688 #define ListView_GetItemText(hwndLV,i,iSubItem_,pszText_,cchTextMax_) { LV_ITEM _ms_lvi; _ms_lvi.iSubItem = iSubItem_; _ms_lvi.cchTextMax = cchTextMax_; _ms_lvi.pszText = pszText_; SNDMSG((hwndLV),LVM_GETITEMTEXT,(WPARAM)(i),(LPARAM)(LV_ITEM *)&_ms_lvi);}
   2689 
   2690 #define LVM_SETITEMTEXTA (LVM_FIRST+46)
   2691 #define LVM_SETITEMTEXTW (LVM_FIRST+116)
   2692 
   2693 #define LVM_SETITEMTEXT __MINGW_NAME_AW(LVM_SETITEMTEXT)
   2694 
   2695 #define ListView_SetItemText(hwndLV,i,iSubItem_,pszText_) { LV_ITEM _ms_lvi; _ms_lvi.iSubItem = iSubItem_; _ms_lvi.pszText = pszText_; SNDMSG((hwndLV),LVM_SETITEMTEXT,(WPARAM)(i),(LPARAM)(LV_ITEM *)&_ms_lvi);}
   2696 
   2697 #define LVSICF_NOINVALIDATEALL 0x1
   2698 #define LVSICF_NOSCROLL 0x2
   2699 
   2700 #define LVM_SETITEMCOUNT (LVM_FIRST+47)
   2701 #define ListView_SetItemCount(hwndLV,cItems) SNDMSG((hwndLV),LVM_SETITEMCOUNT,(WPARAM)(cItems),0)
   2702 #define ListView_SetItemCountEx(hwndLV,cItems,dwFlags) SNDMSG((hwndLV),LVM_SETITEMCOUNT,(WPARAM)(cItems),(LPARAM)(dwFlags))
   2703 
   2704   typedef int (CALLBACK *PFNLVCOMPARE)(LPARAM,LPARAM,LPARAM);
   2705 
   2706 #define LVM_SORTITEMS (LVM_FIRST+48)
   2707 #define ListView_SortItems(hwndLV,_pfnCompare,_lPrm) (WINBOOL)SNDMSG((hwndLV),LVM_SORTITEMS,(WPARAM)(LPARAM)(_lPrm),(LPARAM)(PFNLVCOMPARE)(_pfnCompare))
   2708 
   2709 #define LVM_SETITEMPOSITION32 (LVM_FIRST+49)
   2710 #define ListView_SetItemPosition32(hwndLV,i,x0,y0) { POINT ptNewPos; ptNewPos.x = x0; ptNewPos.y = y0; SNDMSG((hwndLV),LVM_SETITEMPOSITION32,(WPARAM)(int)(i),(LPARAM)&ptNewPos); }
   2711 
   2712 #define LVM_GETSELECTEDCOUNT (LVM_FIRST+50)
   2713 #define ListView_GetSelectedCount(hwndLV) (UINT)SNDMSG((hwndLV),LVM_GETSELECTEDCOUNT,(WPARAM)0,(LPARAM)0)
   2714 
   2715 #define LVM_GETITEMSPACING (LVM_FIRST+51)
   2716 #define ListView_GetItemSpacing(hwndLV,fSmall) (DWORD)SNDMSG((hwndLV),LVM_GETITEMSPACING,fSmall,(LPARAM)0)
   2717 
   2718 #define LVM_GETISEARCHSTRINGA (LVM_FIRST+52)
   2719 #define LVM_GETISEARCHSTRINGW (LVM_FIRST+117)
   2720 
   2721 #define LVM_GETISEARCHSTRING __MINGW_NAME_AW(LVM_GETISEARCHSTRING)
   2722 
   2723 #define ListView_GetISearchString(hwndLV,lpsz) (WINBOOL)SNDMSG((hwndLV),LVM_GETISEARCHSTRING,0,(LPARAM)(LPTSTR)(lpsz))
   2724 
   2725 #define LVM_SETICONSPACING (LVM_FIRST+53)
   2726 
   2727 #define ListView_SetIconSpacing(hwndLV,cx,cy) (DWORD)SNDMSG((hwndLV),LVM_SETICONSPACING,0,MAKELONG(cx,cy))
   2728 #define LVM_SETEXTENDEDLISTVIEWSTYLE (LVM_FIRST+54)
   2729 #define ListView_SetExtendedListViewStyle(hwndLV,dw) (DWORD)SNDMSG((hwndLV),LVM_SETEXTENDEDLISTVIEWSTYLE,0,dw)
   2730 #define ListView_SetExtendedListViewStyleEx(hwndLV,dwMask,dw) (DWORD)SNDMSG((hwndLV),LVM_SETEXTENDEDLISTVIEWSTYLE,dwMask,dw)
   2731 #define LVM_GETEXTENDEDLISTVIEWSTYLE (LVM_FIRST+55)
   2732 #define ListView_GetExtendedListViewStyle(hwndLV) (DWORD)SNDMSG((hwndLV),LVM_GETEXTENDEDLISTVIEWSTYLE,0,0)
   2733 #define LVS_EX_GRIDLINES 0x1
   2734 #define LVS_EX_SUBITEMIMAGES 0x2
   2735 #define LVS_EX_CHECKBOXES 0x4
   2736 #define LVS_EX_TRACKSELECT 0x8
   2737 #define LVS_EX_HEADERDRAGDROP 0x10
   2738 #define LVS_EX_FULLROWSELECT 0x20
   2739 #define LVS_EX_ONECLICKACTIVATE 0x40
   2740 #define LVS_EX_TWOCLICKACTIVATE 0x80
   2741 #define LVS_EX_FLATSB 0x100
   2742 #define LVS_EX_REGIONAL 0x200
   2743 #define LVS_EX_INFOTIP 0x400
   2744 #define LVS_EX_UNDERLINEHOT 0x800
   2745 #define LVS_EX_UNDERLINECOLD 0x1000
   2746 #define LVS_EX_MULTIWORKAREAS 0x2000
   2747 #define LVS_EX_LABELTIP 0x4000
   2748 #define LVS_EX_BORDERSELECT 0x8000
   2749 #define LVS_EX_DOUBLEBUFFER 0x10000
   2750 #define LVS_EX_HIDELABELS 0x20000
   2751 #define LVS_EX_SINGLEROW 0x40000
   2752 #define LVS_EX_SNAPTOGRID 0x80000
   2753 #define LVS_EX_SIMPLESELECT 0x100000
   2754 #if NTDDI_VERSION >= 0x06000000
   2755 #define LVS_EX_JUSTIFYCOLUMNS 0x200000
   2756 #define LVS_EX_TRANSPARENTBKGND 0x400000
   2757 #define LVS_EX_TRANSPARENTSHADOWTEXT 0x800000
   2758 #define LVS_EX_AUTOAUTOARRANGE 0x1000000
   2759 #define LVS_EX_HEADERINALLVIEWS 0x2000000
   2760 #define LVS_EX_AUTOCHECKSELECT 0x8000000
   2761 #define LVS_EX_AUTOSIZECOLUMNS 0x10000000
   2762 #define LVS_EX_COLUMNSNAPPOINTS 0x40000000
   2763 #define LVS_EX_COLUMNOVERFLOW 0x80000000
   2764 #endif
   2765 
   2766 #define LVM_GETSUBITEMRECT (LVM_FIRST+56)
   2767 #define ListView_GetSubItemRect(hwnd,iItem,iSubItem,code,prc) (WINBOOL)SNDMSG((hwnd),LVM_GETSUBITEMRECT,(WPARAM)(int)(iItem),((prc) ? ((((LPRECT)(prc))->top = iSubItem),(((LPRECT)(prc))->left = code),(LPARAM)(prc)) : (LPARAM)(LPRECT)NULL))
   2768 #define LVM_SUBITEMHITTEST (LVM_FIRST+57)
   2769 #define ListView_SubItemHitTest(hwnd,plvhti) (int)SNDMSG((hwnd),LVM_SUBITEMHITTEST,0,(LPARAM)(LPLVHITTESTINFO)(plvhti))
   2770 #define ListView_SubItemHitTestEx(hwnd, plvhti) (int)SNDMSG ((hwnd), LVM_SUBITEMHITTEST,(WPARAM)-1,(LPARAM) (LPLVHITTESTINFO) (plvhti))
   2771 #define LVM_SETCOLUMNORDERARRAY (LVM_FIRST+58)
   2772 #define ListView_SetColumnOrderArray(hwnd,iCount,pi) (WINBOOL)SNDMSG((hwnd),LVM_SETCOLUMNORDERARRAY,(WPARAM)(iCount),(LPARAM)(LPINT)(pi))
   2773 #define LVM_GETCOLUMNORDERARRAY (LVM_FIRST+59)
   2774 #define ListView_GetColumnOrderArray(hwnd,iCount,pi) (WINBOOL)SNDMSG((hwnd),LVM_GETCOLUMNORDERARRAY,(WPARAM)(iCount),(LPARAM)(LPINT)(pi))
   2775 #define LVM_SETHOTITEM (LVM_FIRST+60)
   2776 #define ListView_SetHotItem(hwnd,i) (int)SNDMSG((hwnd),LVM_SETHOTITEM,(WPARAM)(i),0)
   2777 #define LVM_GETHOTITEM (LVM_FIRST+61)
   2778 #define ListView_GetHotItem(hwnd) (int)SNDMSG((hwnd),LVM_GETHOTITEM,0,0)
   2779 #define LVM_SETHOTCURSOR (LVM_FIRST+62)
   2780 #define ListView_SetHotCursor(hwnd,hcur) (HCURSOR)SNDMSG((hwnd),LVM_SETHOTCURSOR,0,(LPARAM)(hcur))
   2781 #define LVM_GETHOTCURSOR (LVM_FIRST+63)
   2782 #define ListView_GetHotCursor(hwnd) (HCURSOR)SNDMSG((hwnd),LVM_GETHOTCURSOR,0,0)
   2783 #define LVM_APPROXIMATEVIEWRECT (LVM_FIRST+64)
   2784 #define ListView_ApproximateViewRect(hwnd,iWidth,iHeight,iCount) (DWORD)SNDMSG((hwnd),LVM_APPROXIMATEVIEWRECT,iCount,MAKELPARAM(iWidth,iHeight))
   2785 
   2786 #define LV_MAX_WORKAREAS 16
   2787 #define LVM_SETWORKAREAS (LVM_FIRST+65)
   2788 #define ListView_SetWorkAreas(hwnd,nWorkAreas,prc) (WINBOOL)SNDMSG((hwnd),LVM_SETWORKAREAS,(WPARAM)(int)(nWorkAreas),(LPARAM)(RECT *)(prc))
   2789 #define LVM_GETWORKAREAS (LVM_FIRST+70)
   2790 #define ListView_GetWorkAreas(hwnd,nWorkAreas,prc) (WINBOOL)SNDMSG((hwnd),LVM_GETWORKAREAS,(WPARAM)(int)(nWorkAreas),(LPARAM)(RECT *)(prc))
   2791 #define LVM_GETNUMBEROFWORKAREAS (LVM_FIRST+73)
   2792 #define ListView_GetNumberOfWorkAreas(hwnd,pnWorkAreas) (WINBOOL)SNDMSG((hwnd),LVM_GETNUMBEROFWORKAREAS,0,(LPARAM)(UINT *)(pnWorkAreas))
   2793 #define LVM_GETSELECTIONMARK (LVM_FIRST+66)
   2794 #define ListView_GetSelectionMark(hwnd) (int)SNDMSG((hwnd),LVM_GETSELECTIONMARK,0,0)
   2795 #define LVM_SETSELECTIONMARK (LVM_FIRST+67)
   2796 #define ListView_SetSelectionMark(hwnd,i) (int)SNDMSG((hwnd),LVM_SETSELECTIONMARK,0,(LPARAM)(i))
   2797 #define LVM_SETHOVERTIME (LVM_FIRST+71)
   2798 #define ListView_SetHoverTime(hwndLV,dwHoverTimeMs) (DWORD)SNDMSG((hwndLV),LVM_SETHOVERTIME,0,(LPARAM)(dwHoverTimeMs))
   2799 #define LVM_GETHOVERTIME (LVM_FIRST+72)
   2800 #define ListView_GetHoverTime(hwndLV) (DWORD)SNDMSG((hwndLV),LVM_GETHOVERTIME,0,0)
   2801 #define LVM_SETTOOLTIPS (LVM_FIRST+74)
   2802 #define ListView_SetToolTips(hwndLV,hwndNewHwnd) (HWND)SNDMSG((hwndLV),LVM_SETTOOLTIPS,(WPARAM)(hwndNewHwnd),0)
   2803 #define LVM_GETTOOLTIPS (LVM_FIRST+78)
   2804 #define ListView_GetToolTips(hwndLV) (HWND)SNDMSG((hwndLV),LVM_GETTOOLTIPS,0,0)
   2805 #define LVM_SORTITEMSEX (LVM_FIRST+81)
   2806 #define ListView_SortItemsEx(hwndLV,_pfnCompare,_lPrm) (WINBOOL)SNDMSG((hwndLV),LVM_SORTITEMSEX,(WPARAM)(LPARAM)(_lPrm),(LPARAM)(PFNLVCOMPARE)(_pfnCompare))
   2807 
   2808   typedef struct tagLVBKIMAGEA {
   2809     ULONG ulFlags;
   2810     HBITMAP hbm;
   2811     LPSTR pszImage;
   2812     UINT cchImageMax;
   2813     int xOffsetPercent;
   2814     int yOffsetPercent;
   2815   } LVBKIMAGEA,*LPLVBKIMAGEA;
   2816 
   2817   typedef struct tagLVBKIMAGEW {
   2818     ULONG ulFlags;
   2819     HBITMAP hbm;
   2820     LPWSTR pszImage;
   2821     UINT cchImageMax;
   2822     int xOffsetPercent;
   2823     int yOffsetPercent;
   2824   } LVBKIMAGEW,*LPLVBKIMAGEW;
   2825 
   2826 #define LVBKIF_SOURCE_NONE 0x0
   2827 #define LVBKIF_SOURCE_HBITMAP 0x1
   2828 #define LVBKIF_SOURCE_URL 0x2
   2829 #define LVBKIF_SOURCE_MASK 0x3
   2830 #define LVBKIF_STYLE_NORMAL 0x0
   2831 #define LVBKIF_STYLE_TILE 0x10
   2832 #define LVBKIF_STYLE_MASK 0x10
   2833 #define LVBKIF_FLAG_TILEOFFSET 0x100
   2834 #define LVBKIF_TYPE_WATERMARK 0x10000000
   2835 #define LVBKIF_FLAG_ALPHABLEND 0x20000000
   2836 
   2837 #define LVM_SETBKIMAGEA (LVM_FIRST+68)
   2838 #define LVM_SETBKIMAGEW (LVM_FIRST+138)
   2839 #define LVM_GETBKIMAGEA (LVM_FIRST+69)
   2840 #define LVM_GETBKIMAGEW (LVM_FIRST+139)
   2841 
   2842 #define LVM_SETSELECTEDCOLUMN (LVM_FIRST+140)
   2843 #define ListView_SetSelectedColumn(hwnd,iCol) SNDMSG((hwnd),LVM_SETSELECTEDCOLUMN,(WPARAM)iCol,0)
   2844 #define LVM_SETTILEWIDTH (LVM_FIRST+141)
   2845 #define ListView_SetTileWidth(hwnd,cpWidth) SNDMSG((hwnd),LVM_SETTILEWIDTH,(WPARAM)cpWidth,0)
   2846 #define LV_VIEW_ICON 0x0
   2847 #define LV_VIEW_DETAILS 0x1
   2848 #define LV_VIEW_SMALLICON 0x2
   2849 #define LV_VIEW_LIST 0x3
   2850 #define LV_VIEW_TILE 0x4
   2851 #define LV_VIEW_MAX 0x4
   2852 #define LVM_SETVIEW (LVM_FIRST+142)
   2853 #define ListView_SetView(hwnd,iView) (DWORD)SNDMSG((hwnd),LVM_SETVIEW,(WPARAM)(DWORD)iView,0)
   2854 #define LVM_GETVIEW (LVM_FIRST+143)
   2855 #define ListView_GetView(hwnd) (DWORD)SNDMSG((hwnd),LVM_GETVIEW,0,0)
   2856 #define LVGF_NONE 0x0
   2857 #define LVGF_HEADER 0x1
   2858 #define LVGF_FOOTER 0x2
   2859 #define LVGF_STATE 0x4
   2860 #define LVGF_ALIGN 0x8
   2861 #define LVGF_GROUPID 0x10
   2862 #if NTDDI_VERSION >= 0x06000000
   2863 #define LVGF_SUBTITLE 0x100
   2864 #define LVGF_TASK 0x200
   2865 #define LVGF_DESCRIPTIONTOP 0x400
   2866 #define LVGF_DESCRIPTIONBOTTOM 0x800
   2867 #define LVGF_TITLEIMAGE 0x1000
   2868 #define LVGF_EXTENDEDIMAGE 0x2000
   2869 #define LVGF_ITEMS 0x4000
   2870 #define LVGF_SUBSET 0x00008000
   2871 #define LVGF_SUBSETITEMS 0x10000
   2872 #endif
   2873 
   2874 #define LVGS_NORMAL 0x0
   2875 #define LVGS_COLLAPSED 0x1
   2876 #define LVGS_HIDDEN 0x2
   2877 #define LVGS_NOHEADER 0x4
   2878 #define LVGS_COLLAPSIBLE 0x8
   2879 #define LVGS_FOCUSED 0x10
   2880 #define LVGS_SELECTED 0x20
   2881 #define LVGS_SUBSETED 0x40
   2882 #define LVGS_SUBSETLINKFOCUSED 0x80
   2883 
   2884 #define LVGA_HEADER_LEFT 0x1
   2885 #define LVGA_HEADER_CENTER 0x2
   2886 #define LVGA_HEADER_RIGHT 0x4
   2887 #define LVGA_FOOTER_LEFT 0x8
   2888 #define LVGA_FOOTER_CENTER 0x10
   2889 #define LVGA_FOOTER_RIGHT 0x20
   2890 
   2891   typedef struct tagLVGROUP {
   2892     UINT cbSize;
   2893     UINT mask;
   2894     LPWSTR pszHeader;
   2895     int cchHeader;
   2896     LPWSTR pszFooter;
   2897     int cchFooter;
   2898     int iGroupId;
   2899     UINT stateMask;
   2900     UINT state;
   2901     UINT uAlign;
   2902 #if NTDDI_VERSION >= 0x06000000
   2903 #define LVGROUP_V5_SIZE CCSIZEOF_STRUCT (LVGROUP, uAlign)
   2904 
   2905     LPWSTR pszSubtitle;
   2906     UINT cchSubtitle;
   2907     LPWSTR pszTask;
   2908     UINT cchTask;
   2909     LPWSTR pszDescriptionTop;
   2910     UINT cchDescriptionTop;
   2911     LPWSTR pszDescriptionBottom;
   2912     UINT cchDescriptionBottom;
   2913     int iTitleImage;
   2914     int iExtendedImage;
   2915     int iFirstItem;
   2916     UINT cItems;
   2917     LPWSTR pszSubsetTitle;
   2918     UINT cchSubsetTitle;
   2919 #endif
   2920   } LVGROUP,*PLVGROUP;
   2921 
   2922 #define LVM_INSERTGROUP (LVM_FIRST+145)
   2923 #define ListView_InsertGroup(hwnd,index,pgrp) SNDMSG((hwnd),LVM_INSERTGROUP,(WPARAM)index,(LPARAM)pgrp)
   2924 #define LVM_SETGROUPINFO (LVM_FIRST+147)
   2925 #define ListView_SetGroupInfo(hwnd,iGroupId,pgrp) SNDMSG((hwnd),LVM_SETGROUPINFO,(WPARAM)iGroupId,(LPARAM)pgrp)
   2926 #define LVM_GETGROUPINFO (LVM_FIRST+149)
   2927 #define ListView_GetGroupInfo(hwnd,iGroupId,pgrp) SNDMSG((hwnd),LVM_GETGROUPINFO,(WPARAM)iGroupId,(LPARAM)pgrp)
   2928 #define LVM_REMOVEGROUP (LVM_FIRST+150)
   2929 #define ListView_RemoveGroup(hwnd,iGroupId) SNDMSG((hwnd),LVM_REMOVEGROUP,(WPARAM)iGroupId,0)
   2930 #define LVM_MOVEGROUP (LVM_FIRST+151)
   2931 #define ListView_MoveGroup(hwnd,iGroupId,toIndex) SNDMSG((hwnd),LVM_MOVEGROUP,(WPARAM)iGroupId,(LPARAM)toIndex)
   2932 #define LVM_GETGROUPCOUNT (LVM_FIRST + 152)
   2933 #define ListView_GetGroupCount(hwnd) SNDMSG ((hwnd), LVM_GETGROUPCOUNT,(WPARAM)0,(LPARAM)0)
   2934 #define LVM_GETGROUPINFOBYINDEX (LVM_FIRST + 153)
   2935 #define ListView_GetGroupInfoByIndex(hwnd, iIndex, pgrp) SNDMSG ((hwnd), LVM_GETGROUPINFOBYINDEX,(WPARAM) (iIndex),(LPARAM) (pgrp))
   2936 #define LVM_MOVEITEMTOGROUP (LVM_FIRST+154)
   2937 #define ListView_MoveItemToGroup(hwnd,idItemFrom,idGroupTo) SNDMSG((hwnd),LVM_MOVEITEMTOGROUP,(WPARAM)idItemFrom,(LPARAM)idGroupTo)
   2938 
   2939 #define LVGGR_GROUP 0
   2940 #define LVGGR_HEADER 1
   2941 #define LVGGR_LABEL 2
   2942 #define LVGGR_SUBSETLINK 3
   2943 
   2944 #define LVM_GETGROUPRECT (LVM_FIRST+98)
   2945 #define ListView_GetGroupRect(hwnd, iGroupId, type, prc) SNDMSG ((hwnd), LVM_GETGROUPRECT,(WPARAM) (iGroupId),((prc) ? (((RECT *) (prc))->top = (type)),(LPARAM) (RECT *) (prc) : (LPARAM) (RECT *)NULL))
   2946 
   2947 #define LVGMF_NONE 0x0
   2948 #define LVGMF_BORDERSIZE 0x1
   2949 #define LVGMF_BORDERCOLOR 0x2
   2950 #define LVGMF_TEXTCOLOR 0x4
   2951 
   2952   typedef struct tagLVGROUPMETRICS {
   2953     UINT cbSize;
   2954     UINT mask;
   2955     UINT Left;
   2956     UINT Top;
   2957     UINT Right;    UINT Bottom;
   2958     COLORREF crLeft;
   2959     COLORREF crTop;
   2960     COLORREF crRight;
   2961     COLORREF crBottom;
   2962     COLORREF crHeader;
   2963     COLORREF crFooter;
   2964   } LVGROUPMETRICS,*PLVGROUPMETRICS;
   2965 
   2966 #define LVM_SETGROUPMETRICS (LVM_FIRST+155)
   2967 #define ListView_SetGroupMetrics(hwnd,pGroupMetrics) SNDMSG((hwnd),LVM_SETGROUPMETRICS,0,(LPARAM)pGroupMetrics)
   2968 #define LVM_GETGROUPMETRICS (LVM_FIRST+156)
   2969 #define ListView_GetGroupMetrics(hwnd,pGroupMetrics) SNDMSG((hwnd),LVM_GETGROUPMETRICS,0,(LPARAM)pGroupMetrics)
   2970 #define LVM_ENABLEGROUPVIEW (LVM_FIRST+157)
   2971 #define ListView_EnableGroupView(hwnd,fEnable) SNDMSG((hwnd),LVM_ENABLEGROUPVIEW,(WPARAM)fEnable,0)
   2972 
   2973   typedef int (CALLBACK *PFNLVGROUPCOMPARE)(int,int,void *);
   2974 
   2975 #define LVM_SORTGROUPS (LVM_FIRST+158)
   2976 #define ListView_SortGroups(hwnd,_pfnGroupCompate,_plv) SNDMSG((hwnd),LVM_SORTGROUPS,(WPARAM)_pfnGroupCompate,(LPARAM)_plv)
   2977 
   2978   typedef struct tagLVINSERTGROUPSORTED {
   2979     PFNLVGROUPCOMPARE pfnGroupCompare;
   2980     void *pvData;
   2981     LVGROUP lvGroup;
   2982   } LVINSERTGROUPSORTED,*PLVINSERTGROUPSORTED;
   2983 
   2984 #define LVM_INSERTGROUPSORTED (LVM_FIRST+159)
   2985 #define ListView_InsertGroupSorted(hwnd,structInsert) SNDMSG((hwnd),LVM_INSERTGROUPSORTED,(WPARAM)structInsert,0)
   2986 #define LVM_REMOVEALLGROUPS (LVM_FIRST+160)
   2987 #define ListView_RemoveAllGroups(hwnd) SNDMSG((hwnd),LVM_REMOVEALLGROUPS,0,0)
   2988 #define LVM_HASGROUP (LVM_FIRST+161)
   2989 #define ListView_HasGroup(hwnd,dwGroupId) SNDMSG((hwnd),LVM_HASGROUP,dwGroupId,0)
   2990 
   2991 #define ListView_SetGroupState(hwnd, dwGroupId, dwMask, dwState) { LVGROUP _macro_lvg; _macro_lvg.cbSize = sizeof (_macro_lvg); _macro_lvg.mask = LVGF_STATE; _macro_lvg.stateMask = dwMask; _macro_lvg.state = dwState; SNDMSG ((hwnd), LVM_SETGROUPINFO,(WPARAM) (dwGroupId),(LPARAM) (LVGROUP *) &_macro_lvg); }
   2992 #define LVM_GETGROUPSTATE (LVM_FIRST+92)
   2993 #define ListView_GetGroupState(hwnd, dwGroupId, dwMask) (UINT) SNDMSG ((hwnd), LVM_GETGROUPSTATE,(WPARAM) (dwGroupId),(LPARAM) (dwMask))
   2994 #define LVM_GETFOCUSEDGROUP (LVM_FIRST+93)
   2995 #define ListView_GetFocusedGroup(hwnd) SNDMSG ((hwnd), LVM_GETFOCUSEDGROUP, 0, 0)
   2996 
   2997 #define LVTVIF_AUTOSIZE 0x0
   2998 #define LVTVIF_FIXEDWIDTH 0x1
   2999 #define LVTVIF_FIXEDHEIGHT 0x2
   3000 #define LVTVIF_FIXEDSIZE 0x3
   3001 #if NTDDI_VERSION >= 0x06000000
   3002 #define LVTVIF_EXTENDED 0x4
   3003 #endif
   3004 
   3005 #define LVTVIM_TILESIZE 0x1
   3006 #define LVTVIM_COLUMNS 0x2
   3007 #define LVTVIM_LABELMARGIN 0x4
   3008 
   3009   typedef struct tagLVTILEVIEWINFO {
   3010     UINT cbSize;
   3011     DWORD dwMask;
   3012     DWORD dwFlags;
   3013     SIZE sizeTile;
   3014     int cLines;
   3015     RECT rcLabelMargin;
   3016   } LVTILEVIEWINFO,*PLVTILEVIEWINFO;
   3017 
   3018   typedef struct tagLVTILEINFO {
   3019     UINT cbSize;
   3020     int iItem;
   3021     UINT cColumns;
   3022     PUINT puColumns;
   3023 #if NTDDI_VERSION >= 0x06000000
   3024     int *piColFmt;
   3025 #endif
   3026   } LVTILEINFO,*PLVTILEINFO;
   3027 
   3028 #define LVTILEINFO_V5_SIZE CCSIZEOF_STRUCT (LVTILEINFO, puColumns)
   3029 
   3030 #define LVM_SETTILEVIEWINFO (LVM_FIRST+162)
   3031 #define ListView_SetTileViewInfo(hwnd,ptvi) SNDMSG((hwnd),LVM_SETTILEVIEWINFO,0,(LPARAM)ptvi)
   3032 #define LVM_GETTILEVIEWINFO (LVM_FIRST+163)
   3033 #define ListView_GetTileViewInfo(hwnd,ptvi) SNDMSG((hwnd),LVM_GETTILEVIEWINFO,0,(LPARAM)ptvi)
   3034 #define LVM_SETTILEINFO (LVM_FIRST+164)
   3035 #define ListView_SetTileInfo(hwnd,pti) SNDMSG((hwnd),LVM_SETTILEINFO,0,(LPARAM)pti)
   3036 #define LVM_GETTILEINFO (LVM_FIRST+165)
   3037 #define ListView_GetTileInfo(hwnd,pti) SNDMSG((hwnd),LVM_GETTILEINFO,0,(LPARAM)pti)
   3038 
   3039   typedef struct {
   3040     UINT cbSize;
   3041     DWORD dwFlags;
   3042     int iItem;
   3043     DWORD dwReserved;
   3044   } LVINSERTMARK,*LPLVINSERTMARK;
   3045 
   3046 #define LVIM_AFTER 0x1
   3047 
   3048 #define LVM_SETINSERTMARK (LVM_FIRST+166)
   3049 #define ListView_SetInsertMark(hwnd,lvim) (WINBOOL)SNDMSG((hwnd),LVM_SETINSERTMARK,(WPARAM) 0,(LPARAM) (lvim))
   3050 #define LVM_GETINSERTMARK (LVM_FIRST+167)
   3051 #define ListView_GetInsertMark(hwnd,lvim) (WINBOOL)SNDMSG((hwnd),LVM_GETINSERTMARK,(WPARAM) 0,(LPARAM) (lvim))
   3052 #define LVM_INSERTMARKHITTEST (LVM_FIRST+168)
   3053 #define ListView_InsertMarkHitTest(hwnd,point,lvim) (int)SNDMSG((hwnd),LVM_INSERTMARKHITTEST,(WPARAM)(LPPOINT)(point),(LPARAM)(LPLVINSERTMARK)(lvim))
   3054 #define LVM_GETINSERTMARKRECT (LVM_FIRST+169)
   3055 #define ListView_GetInsertMarkRect(hwnd,rc) (int)SNDMSG((hwnd),LVM_GETINSERTMARKRECT,(WPARAM)0,(LPARAM)(LPRECT)(rc))
   3056 #define LVM_SETINSERTMARKCOLOR (LVM_FIRST+170)
   3057 #define ListView_SetInsertMarkColor(hwnd,color) (COLORREF)SNDMSG((hwnd),LVM_SETINSERTMARKCOLOR,(WPARAM)0,(LPARAM)(COLORREF)(color))
   3058 #define LVM_GETINSERTMARKCOLOR (LVM_FIRST+171)
   3059 #define ListView_GetInsertMarkColor(hwnd) (COLORREF)SNDMSG((hwnd),LVM_GETINSERTMARKCOLOR,(WPARAM)0,(LPARAM)0)
   3060 
   3061   typedef struct tagLVSETINFOTIP {
   3062     UINT cbSize;
   3063     DWORD dwFlags;
   3064     LPWSTR pszText;
   3065     int iItem;
   3066     int iSubItem;
   3067   } LVSETINFOTIP,*PLVSETINFOTIP;
   3068 
   3069 #define LVM_SETINFOTIP (LVM_FIRST+173)
   3070 #define ListView_SetInfoTip(hwndLV,plvInfoTip) (WINBOOL)SNDMSG((hwndLV),LVM_SETINFOTIP,(WPARAM)0,(LPARAM)plvInfoTip)
   3071 #define LVM_GETSELECTEDCOLUMN (LVM_FIRST+174)
   3072 #define ListView_GetSelectedColumn(hwnd) (UINT)SNDMSG((hwnd),LVM_GETSELECTEDCOLUMN,0,0)
   3073 #define LVM_ISGROUPVIEWENABLED (LVM_FIRST+175)
   3074 #define ListView_IsGroupViewEnabled(hwnd) (WINBOOL)SNDMSG((hwnd),LVM_ISGROUPVIEWENABLED,0,0)
   3075 #define LVM_GETOUTLINECOLOR (LVM_FIRST+176)
   3076 #define ListView_GetOutlineColor(hwnd) (COLORREF)SNDMSG((hwnd),LVM_GETOUTLINECOLOR,0,0)
   3077 #define LVM_SETOUTLINECOLOR (LVM_FIRST+177)
   3078 #define ListView_SetOutlineColor(hwnd,color) (COLORREF)SNDMSG((hwnd),LVM_SETOUTLINECOLOR,(WPARAM)0,(LPARAM)(COLORREF)(color))
   3079 #define LVM_CANCELEDITLABEL (LVM_FIRST+179)
   3080 #define ListView_CancelEditLabel(hwnd) (VOID)SNDMSG((hwnd),LVM_CANCELEDITLABEL,(WPARAM)0,(LPARAM)0)
   3081 #define LVM_MAPINDEXTOID (LVM_FIRST+180)
   3082 #define ListView_MapIndexToID(hwnd,index) (UINT)SNDMSG((hwnd),LVM_MAPINDEXTOID,(WPARAM)index,(LPARAM)0)
   3083 #define LVM_MAPIDTOINDEX (LVM_FIRST+181)
   3084 #define ListView_MapIDToIndex(hwnd,id) (UINT)SNDMSG((hwnd),LVM_MAPIDTOINDEX,(WPARAM)id,(LPARAM)0)
   3085 #define LVM_ISITEMVISIBLE (LVM_FIRST+182)
   3086 #define ListView_IsItemVisible(hwnd,index) (UINT)SNDMSG((hwnd),LVM_ISITEMVISIBLE,(WPARAM)(index),(LPARAM)0)
   3087 #if NTDDI_VERSION >= 0x06000000
   3088 #define ListView_SetGroupHeaderImageList(hwnd, himl) (HIMAGELIST)SNDMSG ((hwnd), LVM_SETIMAGELIST,(WPARAM)LVSIL_GROUPHEADER,(LPARAM) (HIMAGELIST) (himl))
   3089 #define ListView_GetGroupHeaderImageList(hwnd) (HIMAGELIST)SNDMSG ((hwnd), LVM_GETIMAGELIST,(WPARAM)LVSIL_GROUPHEADER, __MSABI_LONG (0))
   3090 #define LVM_GETEMPTYTEXT (LVM_FIRST + 204)
   3091 #define ListView_GetEmptyText(hwnd, pszText, cchText) (WINBOOL)SNDMSG ((hwnd), LVM_GETEMPTYTEXT,(WPARAM) (cchText),(LPARAM) (pszText))
   3092 #define LVM_GETFOOTERRECT (LVM_FIRST + 205)
   3093 #define ListView_GetFooterRect(hwnd, prc) (WINBOOL)SNDMSG ((hwnd), LVM_GETFOOTERRECT,(WPARAM) (0),(LPARAM) (prc))
   3094 
   3095 #define LVFF_ITEMCOUNT 0x1
   3096 
   3097   typedef struct tagLVFOOTERINFO {
   3098     UINT mask;
   3099     LPWSTR pszText;
   3100     int cchTextMax;
   3101     UINT cItems;
   3102   } LVFOOTERINFO,*LPLVFOOTERINFO;
   3103 
   3104 #define LVM_GETFOOTERINFO (LVM_FIRST+206)
   3105 #define ListView_GetFooterInfo(hwnd, plvfi) (WINBOOL)SNDMSG ((hwnd), LVM_GETFOOTERINFO,(WPARAM) (0),(LPARAM) (plvfi))
   3106 #define LVM_GETFOOTERITEMRECT (LVM_FIRST+207)
   3107 #define ListView_GetFooterItemRect(hwnd, iItem, prc) (WINBOOL)SNDMSG ((hwnd), LVM_GETFOOTERITEMRECT,(WPARAM) (iItem),(LPARAM) (prc))
   3108 
   3109 #define LVFIF_TEXT 0x1
   3110 #define LVFIF_STATE 0x2
   3111 
   3112 #define LVFIS_FOCUSED 0x1
   3113 
   3114   typedef struct tagLVFOOTERITEM {
   3115     UINT mask;
   3116     int iItem;
   3117     LPWSTR pszText;
   3118     int cchTextMax;
   3119     UINT state;
   3120     UINT stateMask;
   3121   } LVFOOTERITEM,*LPLVFOOTERITEM;
   3122 
   3123 #define LVM_GETFOOTERITEM (LVM_FIRST+208)
   3124 #define ListView_GetFooterItem(hwnd, iItem, pfi) (WINBOOL)SNDMSG ((hwnd), LVM_GETFOOTERITEM,(WPARAM) (iItem),(LPARAM) (pfi))
   3125 
   3126   typedef struct tagLVITEMINDEX {
   3127     int iItem;
   3128     int iGroup;
   3129   } LVITEMINDEX,*PLVITEMINDEX;
   3130 
   3131 #define LVM_GETITEMINDEXRECT (LVM_FIRST+209)
   3132 #define ListView_GetItemIndexRect(hwnd, plvii, iSubItem, code, prc) (WINBOOL)SNDMSG ((hwnd), LVM_GETITEMINDEXRECT,(WPARAM) (LVITEMINDEX *) (plvii),((prc) ? ((((LPRECT) (prc))->top = (iSubItem)),(((LPRECT) (prc))->left = (code)),(LPARAM) (prc)) : (LPARAM) (LPRECT)NULL))
   3133 #define LVM_SETITEMINDEXSTATE (LVM_FIRST+210)
   3134 #define ListView_SetItemIndexState(hwndLV, plvii, data, mask) { LV_ITEM _macro_lvi; _macro_lvi.stateMask = (mask); _macro_lvi.state = (data); SNDMSG ((hwndLV),LVM_SETITEMINDEXSTATE,(WPARAM) (LVITEMINDEX *) (plvii),(LPARAM) (LV_ITEM *) &_macro_lvi); }
   3135 
   3136 #define LVM_GETNEXTITEMINDEX (LVM_FIRST + 211)
   3137 #define ListView_GetNextItemIndex(hwnd, plvii, flags) (WINBOOL)SNDMSG ((hwnd), LVM_GETNEXTITEMINDEX,(WPARAM) (LVITEMINDEX *) (plvii), MAKELPARAM ((flags), 0))
   3138 #endif
   3139 
   3140 #define LVBKIMAGE __MINGW_NAME_AW(LVBKIMAGE)
   3141 #define LPLVBKIMAGE __MINGW_NAME_AW(LPLVBKIMAGE)
   3142 #define LVM_SETBKIMAGE __MINGW_NAME_AW(LVM_SETBKIMAGE)
   3143 #define LVM_GETBKIMAGE __MINGW_NAME_AW(LVM_GETBKIMAGE)
   3144 
   3145 #define ListView_SetBkImage(hwnd,plvbki) (WINBOOL)SNDMSG((hwnd),LVM_SETBKIMAGE,0,(LPARAM)(plvbki))
   3146 #define ListView_GetBkImage(hwnd,plvbki) (WINBOOL)SNDMSG((hwnd),LVM_GETBKIMAGE,0,(LPARAM)(plvbki))
   3147 
   3148 #define LPNM_LISTVIEW LPNMLISTVIEW
   3149 #define NM_LISTVIEW NMLISTVIEW
   3150 
   3151   typedef struct tagNMLISTVIEW {
   3152     NMHDR hdr;
   3153     int iItem;
   3154     int iSubItem;
   3155     UINT uNewState;
   3156     UINT uOldState;
   3157     UINT uChanged;
   3158     POINT ptAction;
   3159     LPARAM lParam;
   3160   } NMLISTVIEW,*LPNMLISTVIEW;
   3161 
   3162   typedef struct tagNMITEMACTIVATE {
   3163     NMHDR hdr;
   3164     int iItem;
   3165     int iSubItem;
   3166     UINT uNewState;
   3167     UINT uOldState;
   3168     UINT uChanged;
   3169     POINT ptAction;
   3170     LPARAM lParam;
   3171     UINT uKeyFlags;
   3172   } NMITEMACTIVATE,*LPNMITEMACTIVATE;
   3173 
   3174 #define LVKF_ALT 0x1
   3175 #define LVKF_CONTROL 0x2
   3176 #define LVKF_SHIFT 0x4
   3177 
   3178 #define NMLVCUSTOMDRAW_V3_SIZE CCSIZEOF_STRUCT(NMLVCUSTOMDRW,clrTextBk)
   3179 
   3180   typedef struct tagNMLVCUSTOMDRAW {
   3181     NMCUSTOMDRAW nmcd;
   3182     COLORREF clrText;
   3183     COLORREF clrTextBk;
   3184     int iSubItem;
   3185     DWORD dwItemType;
   3186     COLORREF clrFace;
   3187     int iIconEffect;
   3188     int iIconPhase;
   3189     int iPartId;
   3190     int iStateId;
   3191     RECT rcText;
   3192     UINT uAlign;
   3193   } NMLVCUSTOMDRAW,*LPNMLVCUSTOMDRAW;
   3194 
   3195 #define LVCDI_ITEM 0x0
   3196 #define LVCDI_GROUP 0x1
   3197 #define LVCDI_ITEMSLIST 0x2
   3198 
   3199 #define LVCDRF_NOSELECT 0x10000
   3200 #define LVCDRF_NOGROUPFRAME 0x20000
   3201 
   3202   typedef struct tagNMLVCACHEHINT {
   3203     NMHDR hdr;
   3204     int iFrom;
   3205     int iTo;
   3206   } NMLVCACHEHINT,*LPNMLVCACHEHINT;
   3207 
   3208 #define LPNM_CACHEHINT LPNMLVCACHEHINT
   3209 #define PNM_CACHEHINT LPNMLVCACHEHINT
   3210 #define NM_CACHEHINT NMLVCACHEHINT
   3211 
   3212   typedef struct tagNMLVFINDITEMA {
   3213     NMHDR hdr;
   3214     int iStart;
   3215     LVFINDINFOA lvfi;
   3216   } NMLVFINDITEMA,*LPNMLVFINDITEMA;
   3217 
   3218   typedef struct tagNMLVFINDITEMW {
   3219     NMHDR hdr;
   3220     int iStart;
   3221     LVFINDINFOW lvfi;
   3222   } NMLVFINDITEMW,*LPNMLVFINDITEMW;
   3223 
   3224 #define PNM_FINDITEMA LPNMLVFINDITEMA
   3225 #define LPNM_FINDITEMA LPNMLVFINDITEMA
   3226 #define NM_FINDITEMA NMLVFINDITEMA
   3227 
   3228 #define PNM_FINDITEMW LPNMLVFINDITEMW
   3229 #define LPNM_FINDITEMW LPNMLVFINDITEMW
   3230 #define NM_FINDITEMW NMLVFINDITEMW
   3231 
   3232 #define PNM_FINDITEM __MINGW_NAME_AW(PNM_FINDITEM)
   3233 #define LPNM_FINDITEM __MINGW_NAME_AW(LPNM_FINDITEM)
   3234 #define NM_FINDITEM __MINGW_NAME_AW(NM_FINDITEM)
   3235 #define NMLVFINDITEM __MINGW_NAME_AW(NMLVFINDITEM)
   3236 #define LPNMLVFINDITEM __MINGW_NAME_AW(LPNMLVFINDITEM)
   3237 
   3238   typedef struct tagNMLVODSTATECHANGE {
   3239     NMHDR hdr;
   3240     int iFrom;
   3241     int iTo;
   3242     UINT uNewState;
   3243     UINT uOldState;
   3244   } NMLVODSTATECHANGE,*LPNMLVODSTATECHANGE;
   3245 
   3246 #define PNM_ODSTATECHANGE LPNMLVODSTATECHANGE
   3247 #define LPNM_ODSTATECHANGE LPNMLVODSTATECHANGE
   3248 #define NM_ODSTATECHANGE NMLVODSTATECHANGE
   3249 
   3250 #define LVN_ITEMCHANGING (LVN_FIRST-0)
   3251 #define LVN_ITEMCHANGED (LVN_FIRST-1)
   3252 #define LVN_INSERTITEM (LVN_FIRST-2)
   3253 #define LVN_DELETEITEM (LVN_FIRST-3)
   3254 #define LVN_DELETEALLITEMS (LVN_FIRST-4)
   3255 #define LVN_BEGINLABELEDITA (LVN_FIRST-5)
   3256 #define LVN_BEGINLABELEDITW (LVN_FIRST-75)
   3257 #define LVN_ENDLABELEDITA (LVN_FIRST-6)
   3258 #define LVN_ENDLABELEDITW (LVN_FIRST-76)
   3259 #define LVN_COLUMNCLICK (LVN_FIRST-8)
   3260 #define LVN_BEGINDRAG (LVN_FIRST-9)
   3261 #define LVN_BEGINRDRAG (LVN_FIRST-11)
   3262 
   3263 #define LVN_ODCACHEHINT (LVN_FIRST-13)
   3264 #define LVN_ODFINDITEMA (LVN_FIRST-52)
   3265 #define LVN_ODFINDITEMW (LVN_FIRST-79)
   3266 
   3267 #define LVN_ITEMACTIVATE (LVN_FIRST-14)
   3268 #define LVN_ODSTATECHANGED (LVN_FIRST-15)
   3269 
   3270 #define LVN_ODFINDITEM __MINGW_NAME_AW(LVN_ODFINDITEM)
   3271 
   3272 #define LVN_HOTTRACK (LVN_FIRST-21)
   3273 #define LVN_GETDISPINFOA (LVN_FIRST-50)
   3274 #define LVN_GETDISPINFOW (LVN_FIRST-77)
   3275 #define LVN_SETDISPINFOA (LVN_FIRST-51)
   3276 #define LVN_SETDISPINFOW (LVN_FIRST-78)
   3277 
   3278 #define LVN_BEGINLABELEDIT __MINGW_NAME_AW(LVN_BEGINLABELEDIT)
   3279 #define LVN_ENDLABELEDIT __MINGW_NAME_AW(LVN_ENDLABELEDIT)
   3280 #define LVN_GETDISPINFO __MINGW_NAME_AW(LVN_GETDISPINFO)
   3281 #define LVN_SETDISPINFO __MINGW_NAME_AW(LVN_SETDISPINFO)
   3282 
   3283 #define LVIF_DI_SETITEM 0x1000
   3284 
   3285 #define LV_DISPINFOA NMLVDISPINFOA
   3286 #define LV_DISPINFOW NMLVDISPINFOW
   3287 #define LV_DISPINFO NMLVDISPINFO
   3288 
   3289   typedef struct tagLVDISPINFO {
   3290     NMHDR hdr;
   3291     LVITEMA item;
   3292   } NMLVDISPINFOA,*LPNMLVDISPINFOA;
   3293 
   3294   typedef struct tagLVDISPINFOW {
   3295     NMHDR hdr;
   3296     LVITEMW item;
   3297   } NMLVDISPINFOW,*LPNMLVDISPINFOW;
   3298 
   3299 #define NMLVDISPINFO __MINGW_NAME_AW(NMLVDISPINFO)
   3300 
   3301 #define LVN_KEYDOWN (LVN_FIRST-55)
   3302 
   3303 #define LV_KEYDOWN NMLVKEYDOWN
   3304 
   3305 #include <pshpack1.h>
   3306 
   3307   typedef struct tagLVKEYDOWN {
   3308     NMHDR hdr;
   3309     WORD wVKey;
   3310     UINT flags;
   3311   } NMLVKEYDOWN,*LPNMLVKEYDOWN;
   3312 
   3313 #include <poppack.h>
   3314 
   3315 #define LVN_MARQUEEBEGIN (LVN_FIRST-56)
   3316 
   3317 #if NTDDI_VERSION >= 0x06000000
   3318   typedef struct tagNMLVLINK {
   3319     NMHDR hdr;
   3320     LITEM link;
   3321     int iItem;
   3322     int iSubItem;
   3323   } NMLVLINK,*PNMLVLINK;
   3324 #endif
   3325 
   3326   typedef struct tagNMLVGETINFOTIPA {
   3327     NMHDR hdr;
   3328     DWORD dwFlags;
   3329     LPSTR pszText;
   3330     int cchTextMax;
   3331     int iItem;
   3332     int iSubItem;
   3333     LPARAM lParam;
   3334   } NMLVGETINFOTIPA,*LPNMLVGETINFOTIPA;
   3335 
   3336   typedef struct tagNMLVGETINFOTIPW {
   3337     NMHDR hdr;
   3338     DWORD dwFlags;
   3339     LPWSTR pszText;
   3340     int cchTextMax;
   3341     int iItem;
   3342     int iSubItem;
   3343     LPARAM lParam;
   3344   } NMLVGETINFOTIPW,*LPNMLVGETINFOTIPW;
   3345 
   3346 #define LVGIT_UNFOLDED 0x1
   3347 
   3348 #define LVN_GETINFOTIPA (LVN_FIRST-57)
   3349 #define LVN_GETINFOTIPW (LVN_FIRST-58)
   3350 
   3351 #define LVN_GETINFOTIP __MINGW_NAME_AW(LVN_GETINFOTIP)
   3352 #define NMLVGETINFOTIP __MINGW_NAME_AW(NMLVGETINFOTIP)
   3353 #define LPNMLVGETINFOTIP __MINGW_NAME_AW(LPNMLVGETINFOTIP)
   3354 
   3355 #define LVNSCH_DEFAULT -1
   3356 #define LVNSCH_ERROR -2
   3357 #define LVNSCH_IGNORE -3
   3358 
   3359 #define LVN_INCREMENTALSEARCHA (LVN_FIRST-62)
   3360 #define LVN_INCREMENTALSEARCHW (LVN_FIRST-63)
   3361 
   3362 #define LVN_INCREMENTALSEARCH __MINGW_NAME_AW(LVN_INCREMENTALSEARCH)
   3363 
   3364 #if NTDDI_VERSION >= 0x06000000
   3365 #define LVN_COLUMNDROPDOWN (LVN_FIRST-64)
   3366 #define LVN_COLUMNOVERFLOWCLICK (LVN_FIRST-66)
   3367 #endif
   3368 
   3369   typedef struct tagNMLVSCROLL {
   3370     NMHDR hdr;
   3371     int dx;
   3372     int dy;
   3373   } NMLVSCROLL,*LPNMLVSCROLL;
   3374 
   3375 #define LVN_BEGINSCROLL (LVN_FIRST-80)
   3376 #define LVN_ENDSCROLL (LVN_FIRST-81)
   3377 #if NTDDI_VERSION >= 0x06000000
   3378 #define LVN_LINKCLICK (LVN_FIRST-84)
   3379 
   3380 #define EMF_CENTERED 0x1
   3381 
   3382   typedef struct tagNMLVEMPTYMARKUP {
   3383     NMHDR hdr;
   3384     DWORD dwFlags;
   3385     WCHAR szMarkup[L_MAX_URL_LENGTH];
   3386   } NMLVEMPTYMARKUP;
   3387 
   3388 #define LVN_GETEMPTYMARKUP (LVN_FIRST-87)
   3389 #endif
   3390 #endif
   3391 
   3392 #ifndef NOTREEVIEW
   3393 
   3394 #define WC_TREEVIEWA "SysTreeView32"
   3395 #define WC_TREEVIEWW L"SysTreeView32"
   3396 
   3397 #define WC_TREEVIEW __MINGW_NAME_AW(WC_TREEVIEW)
   3398 
   3399 #define TVS_HASBUTTONS 0x1
   3400 #define TVS_HASLINES 0x2
   3401 #define TVS_LINESATROOT 0x4
   3402 #define TVS_EDITLABELS 0x8
   3403 #define TVS_DISABLEDRAGDROP 0x10
   3404 #define TVS_SHOWSELALWAYS 0x20
   3405 #define TVS_RTLREADING 0x40
   3406 #define TVS_NOTOOLTIPS 0x80
   3407 #define TVS_CHECKBOXES 0x100
   3408 #define TVS_TRACKSELECT 0x200
   3409 #define TVS_SINGLEEXPAND 0x400
   3410 #define TVS_INFOTIP 0x800
   3411 #define TVS_FULLROWSELECT 0x1000
   3412 #define TVS_NOSCROLL 0x2000
   3413 #define TVS_NONEVENHEIGHT 0x4000
   3414 #define TVS_NOHSCROLL 0x8000
   3415 
   3416 #define TVS_EX_NOSINGLECOLLAPSE 0x1
   3417 #if NTDDI_VERSION >= 0x06000000
   3418 #define TVS_EX_MULTISELECT 0x2
   3419 #define TVS_EX_DOUBLEBUFFER 0x4
   3420 #define TVS_EX_NOINDENTSTATE 0x8
   3421 #define TVS_EX_RICHTOOLTIP 0x10
   3422 #define TVS_EX_AUTOHSCROLL 0x20
   3423 #define TVS_EX_FADEINOUTEXPANDOS 0x40
   3424 #define TVS_EX_PARTIALCHECKBOXES 0x80
   3425 #define TVS_EX_EXCLUSIONCHECKBOXES 0x100
   3426 #define TVS_EX_DIMMEDCHECKBOXES 0x200
   3427 #define TVS_EX_DRAWIMAGEASYNC 0x400
   3428 #endif
   3429 
   3430   typedef struct _TREEITEM *HTREEITEM;
   3431 
   3432 #define TVIF_TEXT 0x1
   3433 #define TVIF_IMAGE 0x2
   3434 #define TVIF_PARAM 0x4
   3435 #define TVIF_STATE 0x8
   3436 #define TVIF_HANDLE 0x10
   3437 #define TVIF_SELECTEDIMAGE 0x20
   3438 #define TVIF_CHILDREN 0x40
   3439 #define TVIF_INTEGRAL 0x80
   3440 #if _WIN32_IE >= 0x0600
   3441 #define TVIF_STATEEX 0x100
   3442 #define TVIF_EXPANDEDIMAGE 0x200
   3443 #endif
   3444 
   3445 #define TVIS_SELECTED 0x2
   3446 #define TVIS_CUT 0x4
   3447 #define TVIS_DROPHILITED 0x8
   3448 #define TVIS_BOLD 0x10
   3449 #define TVIS_EXPANDED 0x20
   3450 #define TVIS_EXPANDEDONCE 0x40
   3451 #define TVIS_EXPANDPARTIAL 0x80
   3452 #define TVIS_OVERLAYMASK 0xf00
   3453 #define TVIS_STATEIMAGEMASK 0xF000
   3454 #define TVIS_USERMASK 0xF000
   3455 
   3456 #if _WIN32_IE >= 0x0600
   3457 #define TVIS_EX_FLAT 0x1
   3458 #if NTDDI_VERSION >= 0x06000000
   3459 #define TVIS_EX_DISABLED 0x2
   3460 #endif
   3461 #define TVIS_EX_ALL 0x0002
   3462 
   3463   typedef struct tagNMTVSTATEIMAGECHANGING {
   3464     NMHDR hdr;
   3465     HTREEITEM hti;
   3466     int iOldStateImageIndex;
   3467     int iNewStateImageIndex;
   3468   } NMTVSTATEIMAGECHANGING,*LPNMTVSTATEIMAGECHANGING;
   3469 #endif
   3470 
   3471 #define I_CHILDRENCALLBACK (-1)
   3472 #define I_CHILDRENAUTO (-2)
   3473 
   3474 #define LPTV_ITEMW LPTVITEMW
   3475 #define LPTV_ITEMA LPTVITEMA
   3476 #define TV_ITEMW TVITEMW
   3477 #define TV_ITEMA TVITEMA
   3478 #define LPTV_ITEM LPTVITEM
   3479 #define TV_ITEM TVITEM
   3480 
   3481   typedef struct tagTVITEMA {
   3482     UINT mask;
   3483     HTREEITEM hItem;
   3484     UINT state;
   3485     UINT stateMask;
   3486     LPSTR pszText;
   3487     int cchTextMax;
   3488     int iImage;
   3489     int iSelectedImage;
   3490     int cChildren;
   3491     LPARAM lParam;
   3492   } TVITEMA,*LPTVITEMA;
   3493 
   3494   typedef struct tagTVITEMW {
   3495     UINT mask;
   3496     HTREEITEM hItem;
   3497     UINT state;
   3498     UINT stateMask;
   3499     LPWSTR pszText;
   3500     int cchTextMax;
   3501     int iImage;
   3502     int iSelectedImage;
   3503     int cChildren;
   3504     LPARAM lParam;
   3505   } TVITEMW,*LPTVITEMW;
   3506 
   3507   typedef struct tagTVITEMEXA {
   3508     UINT mask;
   3509     HTREEITEM hItem;
   3510     UINT state;
   3511     UINT stateMask;
   3512     LPSTR pszText;
   3513     int cchTextMax;
   3514     int iImage;
   3515     int iSelectedImage;
   3516     int cChildren;
   3517     LPARAM lParam;
   3518     int iIntegral;
   3519 #if _WIN32_IE >= 0x0600
   3520     UINT uStateEx;
   3521     HWND hwnd;
   3522     int iExpandedImage;
   3523 #endif
   3524 #if NTDDI_VERSION >= 0x06010000
   3525     int iReserved;
   3526 #endif
   3527   } TVITEMEXA,*LPTVITEMEXA;
   3528 
   3529   typedef struct tagTVITEMEXW {
   3530     UINT mask;
   3531     HTREEITEM hItem;
   3532     UINT state;
   3533     UINT stateMask;
   3534     LPWSTR pszText;
   3535     int cchTextMax;
   3536     int iImage;
   3537     int iSelectedImage;
   3538     int cChildren;
   3539     LPARAM lParam;
   3540     int iIntegral;
   3541 #if _WIN32_IE >= 0x0600
   3542     UINT uStateEx;
   3543     HWND hwnd;
   3544     int iExpandedImage;
   3545 #endif
   3546 #if NTDDI_VERSION >= 0x06010000
   3547     int iReserved;
   3548 #endif
   3549   } TVITEMEXW,*LPTVITEMEXW;
   3550 
   3551   __MINGW_TYPEDEF_AW(TVITEMEX)
   3552   __MINGW_TYPEDEF_AW(LPTVITEMEX)
   3553 
   3554 #define TVITEM __MINGW_NAME_AW(TVITEM)
   3555 #define LPTVITEM __MINGW_NAME_AW(LPTVITEM)
   3556 
   3557 #define TVI_ROOT ((HTREEITEM)(ULONG_PTR)-0x10000)
   3558 #define TVI_FIRST ((HTREEITEM)(ULONG_PTR)-0xffff)
   3559 #define TVI_LAST ((HTREEITEM)(ULONG_PTR)-0xfffe)
   3560 #define TVI_SORT ((HTREEITEM)(ULONG_PTR)-0xfffd)
   3561 
   3562 #define LPTV_INSERTSTRUCTA LPTVINSERTSTRUCTA
   3563 #define LPTV_INSERTSTRUCTW LPTVINSERTSTRUCTW
   3564 #define TV_INSERTSTRUCTA TVINSERTSTRUCTA
   3565 #define TV_INSERTSTRUCTW TVINSERTSTRUCTW
   3566 #define TV_INSERTSTRUCT TVINSERTSTRUCT
   3567 #define LPTV_INSERTSTRUCT LPTVINSERTSTRUCT
   3568 
   3569 #define TVINSERTSTRUCTA_V1_SIZE CCSIZEOF_STRUCT(TVINSERTSTRUCTA,item)
   3570 #define TVINSERTSTRUCTW_V1_SIZE CCSIZEOF_STRUCT(TVINSERTSTRUCTW,item)
   3571 
   3572   typedef struct tagTVINSERTSTRUCTA {
   3573     HTREEITEM hParent;
   3574     HTREEITEM hInsertAfter;
   3575     __C89_NAMELESS union {
   3576       TVITEMEXA itemex;
   3577       TV_ITEMA item;
   3578     } DUMMYUNIONNAME;
   3579   } TVINSERTSTRUCTA,*LPTVINSERTSTRUCTA;
   3580 
   3581   typedef struct tagTVINSERTSTRUCTW {
   3582     HTREEITEM hParent;
   3583     HTREEITEM hInsertAfter;
   3584     __C89_NAMELESS union {
   3585       TVITEMEXW itemex;
   3586       TV_ITEMW item;
   3587     } DUMMYUNIONNAME;
   3588   } TVINSERTSTRUCTW,*LPTVINSERTSTRUCTW;
   3589 
   3590 
   3591 #define TVINSERTSTRUCT __MINGW_NAME_AW(TVINSERTSTRUCT)
   3592 #define LPTVINSERTSTRUCT __MINGW_NAME_AW(LPTVINSERTSTRUCT)
   3593 
   3594 #define TVINSERTSTRUCT_V1_SIZE __MINGW_NAME_AW_EXT(TVINSERTSTRUCT,_V1_SIZE)
   3595 
   3596 #define TVM_INSERTITEMA (TV_FIRST+0)
   3597 #define TVM_INSERTITEMW (TV_FIRST+50)
   3598 
   3599 #define TVM_INSERTITEM __MINGW_NAME_AW(TVM_INSERTITEM)
   3600 
   3601 #define TreeView_InsertItem(hwnd,lpis) (HTREEITEM)SNDMSG((hwnd),TVM_INSERTITEM,0,(LPARAM)(LPTV_INSERTSTRUCT)(lpis))
   3602 
   3603 #define TVM_DELETEITEM (TV_FIRST+1)
   3604 #define TreeView_DeleteItem(hwnd,hitem) (WINBOOL)SNDMSG((hwnd),TVM_DELETEITEM,0,(LPARAM)(HTREEITEM)(hitem))
   3605 
   3606 #define TreeView_DeleteAllItems(hwnd) (WINBOOL)SNDMSG((hwnd),TVM_DELETEITEM,0,(LPARAM)TVI_ROOT)
   3607 
   3608 #define TVM_EXPAND (TV_FIRST+2)
   3609 #define TreeView_Expand(hwnd,hitem,code) (WINBOOL)SNDMSG((hwnd),TVM_EXPAND,(WPARAM)(code),(LPARAM)(HTREEITEM)(hitem))
   3610 
   3611 #define TVE_COLLAPSE 0x1
   3612 #define TVE_EXPAND 0x2
   3613 #define TVE_TOGGLE 0x3
   3614 #define TVE_EXPANDPARTIAL 0x4000
   3615 #define TVE_COLLAPSERESET 0x8000
   3616 
   3617 #define TVM_GETITEMRECT (TV_FIRST+4)
   3618 #define TreeView_GetItemRect(hwnd,hitem,prc,code) (*(HTREEITEM *)prc = (hitem),(WINBOOL)SNDMSG((hwnd),TVM_GETITEMRECT,(WPARAM)(code),(LPARAM)(RECT *)(prc)))
   3619 
   3620 #define TVM_GETCOUNT (TV_FIRST+5)
   3621 #define TreeView_GetCount(hwnd) (UINT)SNDMSG((hwnd),TVM_GETCOUNT,0,0)
   3622 
   3623 #define TVM_GETINDENT (TV_FIRST+6)
   3624 #define TreeView_GetIndent(hwnd) (UINT)SNDMSG((hwnd),TVM_GETINDENT,0,0)
   3625 
   3626 #define TVM_SETINDENT (TV_FIRST+7)
   3627 #define TreeView_SetIndent(hwnd,indent) (WINBOOL)SNDMSG((hwnd),TVM_SETINDENT,(WPARAM)(indent),0)
   3628 
   3629 #define TVM_GETIMAGELIST (TV_FIRST+8)
   3630 #define TreeView_GetImageList(hwnd,iImage) (HIMAGELIST)SNDMSG((hwnd),TVM_GETIMAGELIST,iImage,0)
   3631 
   3632 #define TVSIL_NORMAL 0
   3633 #define TVSIL_STATE 2
   3634 
   3635 #define TVM_SETIMAGELIST (TV_FIRST+9)
   3636 #define TreeView_SetImageList(hwnd,himl,iImage) (HIMAGELIST)SNDMSG((hwnd),TVM_SETIMAGELIST,iImage,(LPARAM)(HIMAGELIST)(himl))
   3637 
   3638 #define TVM_GETNEXTITEM (TV_FIRST+10)
   3639 #define TreeView_GetNextItem(hwnd,hitem,code) (HTREEITEM)SNDMSG((hwnd),TVM_GETNEXTITEM,(WPARAM)(code),(LPARAM)(HTREEITEM)(hitem))
   3640 
   3641 #define TVGN_ROOT 0x0
   3642 #define TVGN_NEXT 0x1
   3643 #define TVGN_PREVIOUS 0x2
   3644 #define TVGN_PARENT 0x3
   3645 #define TVGN_CHILD 0x4
   3646 #define TVGN_FIRSTVISIBLE 0x5
   3647 #define TVGN_NEXTVISIBLE 0x6
   3648 #define TVGN_PREVIOUSVISIBLE 0x7
   3649 #define TVGN_DROPHILITE 0x8
   3650 #define TVGN_CARET 0x9
   3651 #define TVGN_LASTVISIBLE 0xa
   3652 #if _WIN32_IE >= 0x0600
   3653 #define TVGN_NEXTSELECTED 0xb
   3654 #endif
   3655 
   3656 #define TVSI_NOSINGLEEXPAND 0x8000
   3657 
   3658 #define TreeView_GetChild(hwnd,hitem) TreeView_GetNextItem(hwnd,hitem,TVGN_CHILD)
   3659 #define TreeView_GetNextSibling(hwnd,hitem) TreeView_GetNextItem(hwnd,hitem,TVGN_NEXT)
   3660 #define TreeView_GetPrevSibling(hwnd,hitem) TreeView_GetNextItem(hwnd,hitem,TVGN_PREVIOUS)
   3661 #define TreeView_GetParent(hwnd,hitem) TreeView_GetNextItem(hwnd,hitem,TVGN_PARENT)
   3662 #define TreeView_GetFirstVisible(hwnd) TreeView_GetNextItem(hwnd,NULL,TVGN_FIRSTVISIBLE)
   3663 #define TreeView_GetNextVisible(hwnd,hitem) TreeView_GetNextItem(hwnd,hitem,TVGN_NEXTVISIBLE)
   3664 #define TreeView_GetPrevVisible(hwnd,hitem) TreeView_GetNextItem(hwnd,hitem,TVGN_PREVIOUSVISIBLE)
   3665 #define TreeView_GetSelection(hwnd) TreeView_GetNextItem(hwnd,NULL,TVGN_CARET)
   3666 #define TreeView_GetDropHilight(hwnd) TreeView_GetNextItem(hwnd,NULL,TVGN_DROPHILITE)
   3667 #define TreeView_GetRoot(hwnd) TreeView_GetNextItem(hwnd,NULL,TVGN_ROOT)
   3668 #define TreeView_GetLastVisible(hwnd) TreeView_GetNextItem(hwnd,NULL,TVGN_LASTVISIBLE)
   3669 #if _WIN32_IE >= 0x0600
   3670 #define TreeView_GetNextSelected(hwnd, hitem) TreeView_GetNextItem (hwnd, hitem, TVGN_NEXTSELECTED)
   3671 #endif
   3672 
   3673 #define TVM_SELECTITEM (TV_FIRST+11)
   3674 #define TreeView_Select(hwnd,hitem,code) (WINBOOL)SNDMSG((hwnd),TVM_SELECTITEM,(WPARAM)(code),(LPARAM)(HTREEITEM)(hitem))
   3675 
   3676 #define TreeView_SelectItem(hwnd,hitem) TreeView_Select(hwnd,hitem,TVGN_CARET)
   3677 #define TreeView_SelectDropTarget(hwnd,hitem) TreeView_Select(hwnd,hitem,TVGN_DROPHILITE)
   3678 #define TreeView_SelectSetFirstVisible(hwnd,hitem) TreeView_Select(hwnd,hitem,TVGN_FIRSTVISIBLE)
   3679 
   3680 #define TVM_GETITEMA (TV_FIRST+12)
   3681 #define TVM_GETITEMW (TV_FIRST+62)
   3682 
   3683 #define TVM_GETITEM __MINGW_NAME_AW(TVM_GETITEM)
   3684 
   3685 #define TreeView_GetItem(hwnd,pitem) (WINBOOL)SNDMSG((hwnd),TVM_GETITEM,0,(LPARAM)(TV_ITEM *)(pitem))
   3686 
   3687 #define TVM_SETITEMA (TV_FIRST+13)
   3688 #define TVM_SETITEMW (TV_FIRST+63)
   3689 
   3690 #define TVM_SETITEM __MINGW_NAME_AW(TVM_SETITEM)
   3691 
   3692 #define TreeView_SetItem(hwnd,pitem) (WINBOOL)SNDMSG((hwnd),TVM_SETITEM,0,(LPARAM)(const TV_ITEM *)(pitem))
   3693 
   3694 #define TVM_EDITLABELA (TV_FIRST+14)
   3695 #define TVM_EDITLABELW (TV_FIRST+65)
   3696 
   3697 #define TVM_EDITLABEL __MINGW_NAME_AW(TVM_EDITLABEL)
   3698 
   3699 #define TreeView_EditLabel(hwnd,hitem) (HWND)SNDMSG((hwnd),TVM_EDITLABEL,0,(LPARAM)(HTREEITEM)(hitem))
   3700 
   3701 #define TVM_GETEDITCONTROL (TV_FIRST+15)
   3702 #define TreeView_GetEditControl(hwnd) (HWND)SNDMSG((hwnd),TVM_GETEDITCONTROL,0,0)
   3703 
   3704 #define TVM_GETVISIBLECOUNT (TV_FIRST+16)
   3705 #define TreeView_GetVisibleCount(hwnd) (UINT)SNDMSG((hwnd),TVM_GETVISIBLECOUNT,0,0)
   3706 
   3707 #define TVM_HITTEST (TV_FIRST+17)
   3708 #define TreeView_HitTest(hwnd,lpht) (HTREEITEM)SNDMSG((hwnd),TVM_HITTEST,0,(LPARAM)(LPTV_HITTESTINFO)(lpht))
   3709 
   3710 #define LPTV_HITTESTINFO LPTVHITTESTINFO
   3711 #define TV_HITTESTINFO TVHITTESTINFO
   3712 
   3713   typedef struct tagTVHITTESTINFO {
   3714     POINT pt;
   3715     UINT flags;
   3716     HTREEITEM hItem;
   3717   } TVHITTESTINFO,*LPTVHITTESTINFO;
   3718 
   3719 #define TVHT_NOWHERE 0x1
   3720 #define TVHT_ONITEMICON 0x2
   3721 #define TVHT_ONITEMLABEL 0x4
   3722 #define TVHT_ONITEM (TVHT_ONITEMICON | TVHT_ONITEMLABEL | TVHT_ONITEMSTATEICON)
   3723 #define TVHT_ONITEMINDENT 0x8
   3724 #define TVHT_ONITEMBUTTON 0x10
   3725 #define TVHT_ONITEMRIGHT 0x20
   3726 #define TVHT_ONITEMSTATEICON 0x40
   3727 
   3728 #define TVHT_ABOVE 0x100
   3729 #define TVHT_BELOW 0x200
   3730 #define TVHT_TORIGHT 0x400
   3731 #define TVHT_TOLEFT 0x800
   3732 
   3733 #define TVM_CREATEDRAGIMAGE (TV_FIRST+18)
   3734 #define TreeView_CreateDragImage(hwnd,hitem) (HIMAGELIST)SNDMSG((hwnd),TVM_CREATEDRAGIMAGE,0,(LPARAM)(HTREEITEM)(hitem))
   3735 
   3736 #define TVM_SORTCHILDREN (TV_FIRST+19)
   3737 #define TreeView_SortChildren(hwnd,hitem,recurse) (WINBOOL)SNDMSG((hwnd),TVM_SORTCHILDREN,(WPARAM)(recurse),(LPARAM)(HTREEITEM)(hitem))
   3738 
   3739 #define TVM_ENSUREVISIBLE (TV_FIRST+20)
   3740 #define TreeView_EnsureVisible(hwnd,hitem) (WINBOOL)SNDMSG((hwnd),TVM_ENSUREVISIBLE,0,(LPARAM)(HTREEITEM)(hitem))
   3741 
   3742 #define TVM_SORTCHILDRENCB (TV_FIRST+21)
   3743 #define TreeView_SortChildrenCB(hwnd,psort,recurse) (WINBOOL)SNDMSG((hwnd),TVM_SORTCHILDRENCB,(WPARAM)(recurse),(LPARAM)(LPTV_SORTCB)(psort))
   3744 
   3745 #define TVM_ENDEDITLABELNOW (TV_FIRST+22)
   3746 #define TreeView_EndEditLabelNow(hwnd,fCancel) (WINBOOL)SNDMSG((hwnd),TVM_ENDEDITLABELNOW,(WPARAM)(fCancel),0)
   3747 
   3748 #define TVM_GETISEARCHSTRINGA (TV_FIRST+23)
   3749 #define TVM_GETISEARCHSTRINGW (TV_FIRST+64)
   3750 
   3751 #define TVM_GETISEARCHSTRING __MINGW_NAME_AW(TVM_GETISEARCHSTRING)
   3752 
   3753 #define TVM_SETTOOLTIPS (TV_FIRST+24)
   3754 #define TreeView_SetToolTips(hwnd,hwndTT) (HWND)SNDMSG((hwnd),TVM_SETTOOLTIPS,(WPARAM)(hwndTT),0)
   3755 #define TVM_GETTOOLTIPS (TV_FIRST+25)
   3756 #define TreeView_GetToolTips(hwnd) (HWND)SNDMSG((hwnd),TVM_GETTOOLTIPS,0,0)
   3757 #define TreeView_GetISearchString(hwndTV,lpsz) (WINBOOL)SNDMSG((hwndTV),TVM_GETISEARCHSTRING,0,(LPARAM)(LPTSTR)(lpsz))
   3758 
   3759 #define TVM_SETINSERTMARK (TV_FIRST+26)
   3760 #define TreeView_SetInsertMark(hwnd,hItem,fAfter) (WINBOOL)SNDMSG((hwnd),TVM_SETINSERTMARK,(WPARAM) (fAfter),(LPARAM) (hItem))
   3761 #define TVM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
   3762 #define TreeView_SetUnicodeFormat(hwnd,fUnicode) (WINBOOL)SNDMSG((hwnd),TVM_SETUNICODEFORMAT,(WPARAM)(fUnicode),0)
   3763 #define TVM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
   3764 #define TreeView_GetUnicodeFormat(hwnd) (WINBOOL)SNDMSG((hwnd),TVM_GETUNICODEFORMAT,0,0)
   3765 
   3766 #define TVM_SETITEMHEIGHT (TV_FIRST+27)
   3767 #define TreeView_SetItemHeight(hwnd,iHeight) (int)SNDMSG((hwnd),TVM_SETITEMHEIGHT,(WPARAM)(iHeight),0)
   3768 #define TVM_GETITEMHEIGHT (TV_FIRST+28)
   3769 #define TreeView_GetItemHeight(hwnd) (int)SNDMSG((hwnd),TVM_GETITEMHEIGHT,0,0)
   3770 #define TVM_SETBKCOLOR (TV_FIRST+29)
   3771 #define TreeView_SetBkColor(hwnd,clr) (COLORREF)SNDMSG((hwnd),TVM_SETBKCOLOR,0,(LPARAM)(clr))
   3772 #define TVM_SETTEXTCOLOR (TV_FIRST+30)
   3773 #define TreeView_SetTextColor(hwnd,clr) (COLORREF)SNDMSG((hwnd),TVM_SETTEXTCOLOR,0,(LPARAM)(clr))
   3774 #define TVM_GETBKCOLOR (TV_FIRST+31)
   3775 #define TreeView_GetBkColor(hwnd) (COLORREF)SNDMSG((hwnd),TVM_GETBKCOLOR,0,0)
   3776 #define TVM_GETTEXTCOLOR (TV_FIRST+32)
   3777 #define TreeView_GetTextColor(hwnd) (COLORREF)SNDMSG((hwnd),TVM_GETTEXTCOLOR,0,0)
   3778 #define TVM_SETSCROLLTIME (TV_FIRST+33)
   3779 #define TreeView_SetScrollTime(hwnd,uTime) (UINT)SNDMSG((hwnd),TVM_SETSCROLLTIME,uTime,0)
   3780 #define TVM_GETSCROLLTIME (TV_FIRST+34)
   3781 #define TreeView_GetScrollTime(hwnd) (UINT)SNDMSG((hwnd),TVM_GETSCROLLTIME,0,0)
   3782 #define TVM_SETBORDER (TV_FIRST+35)
   3783 #define TreeView_SetBorder(hwnd, dwFlags, xBorder, yBorder) (int)SNDMSG ((hwnd), TVM_SETBORDER,(WPARAM) (dwFlags), MAKELPARAM (xBorder, yBorder))
   3784 
   3785 #define TVSBF_XBORDER 0x1
   3786 #define TVSBF_YBORDER 0x2
   3787 
   3788 #define TVM_SETINSERTMARKCOLOR (TV_FIRST+37)
   3789 #define TreeView_SetInsertMarkColor(hwnd,clr) (COLORREF)SNDMSG((hwnd),TVM_SETINSERTMARKCOLOR,0,(LPARAM)(clr))
   3790 #define TVM_GETINSERTMARKCOLOR (TV_FIRST+38)
   3791 #define TreeView_GetInsertMarkColor(hwnd) (COLORREF)SNDMSG((hwnd),TVM_GETINSERTMARKCOLOR,0,0)
   3792 
   3793 #define TreeView_SetItemState(hwndTV,hti,data,_mask) { TVITEM _ms_TVi; _ms_TVi.mask = TVIF_STATE; _ms_TVi.hItem = hti; _ms_TVi.stateMask = _mask; _ms_TVi.state = data; SNDMSG((hwndTV),TVM_SETITEM,0,(LPARAM)(TV_ITEM *)&_ms_TVi);}
   3794 #define TreeView_SetCheckState(hwndTV,hti,fCheck) TreeView_SetItemState(hwndTV,hti,INDEXTOSTATEIMAGEMASK((fCheck)?2:1),TVIS_STATEIMAGEMASK)
   3795 #define TVM_GETITEMSTATE (TV_FIRST+39)
   3796 #define TreeView_GetItemState(hwndTV,hti,mask) (UINT)SNDMSG((hwndTV),TVM_GETITEMSTATE,(WPARAM)(hti),(LPARAM)(mask))
   3797 #define TreeView_GetCheckState(hwndTV,hti) ((((UINT)(SNDMSG((hwndTV),TVM_GETITEMSTATE,(WPARAM)(hti),TVIS_STATEIMAGEMASK))) >> 12) -1)
   3798 #define TVM_SETLINECOLOR (TV_FIRST+40)
   3799 #define TreeView_SetLineColor(hwnd,clr) (COLORREF)SNDMSG((hwnd),TVM_SETLINECOLOR,0,(LPARAM)(clr))
   3800 #define TVM_GETLINECOLOR (TV_FIRST+41)
   3801 #define TreeView_GetLineColor(hwnd) (COLORREF)SNDMSG((hwnd),TVM_GETLINECOLOR,0,0)
   3802 
   3803 #define TVM_MAPACCIDTOHTREEITEM (TV_FIRST+42)
   3804 #define TreeView_MapAccIDToHTREEITEM(hwnd,id) (HTREEITEM)SNDMSG((hwnd),TVM_MAPACCIDTOHTREEITEM,id,0)
   3805 
   3806 #define TVM_MAPHTREEITEMTOACCID (TV_FIRST+43)
   3807 #define TreeView_MapHTREEITEMToAccID(hwnd,htreeitem) (UINT)SNDMSG((hwnd),TVM_MAPHTREEITEMTOACCID,(WPARAM)htreeitem,0)
   3808 
   3809 #define TVM_SETEXTENDEDSTYLE (TV_FIRST+44)
   3810 #define TreeView_SetExtendedStyle(hwnd, dw, mask) (DWORD)SNDMSG ((hwnd), TVM_SETEXTENDEDSTYLE, mask, dw)
   3811 
   3812 #define TVM_GETEXTENDEDSTYLE (TV_FIRST+45)
   3813 #define TreeView_GetExtendedStyle(hwnd) (DWORD)SNDMSG ((hwnd), TVM_GETEXTENDEDSTYLE, 0, 0)
   3814 
   3815 #define TVM_SETHOT (TV_FIRST+58)
   3816 #define TreeView_SetHot(hwnd, hitem) SNDMSG ((hwnd), TVM_SETHOT, 0,(LPARAM) (hitem))
   3817 
   3818 #define TVM_SETAUTOSCROLLINFO (TV_FIRST+59)
   3819 #define TreeView_SetAutoScrollInfo(hwnd, uPixPerSec, uUpdateTime) SNDMSG ((hwnd), TVM_SETAUTOSCROLLINFO,(WPARAM) (uPixPerSec),(LPARAM) (uUpdateTime))
   3820 
   3821 #if NTDDI_VERSION >= 0x06000000
   3822 #define TVM_GETSELECTEDCOUNT (TV_FIRST+70)
   3823 #define TreeView_GetSelectedCount(hwnd) (DWORD)SNDMSG ((hwnd), TVM_GETSELECTEDCOUNT, 0, 0)
   3824 
   3825 #define TVM_SHOWINFOTIP (TV_FIRST+71)
   3826 #define TreeView_ShowInfoTip(hwnd, hitem) (DWORD)SNDMSG ((hwnd), TVM_SHOWINFOTIP, 0,(LPARAM) (hitem))
   3827 
   3828   typedef enum _TVITEMPART {
   3829     TVGIPR_BUTTON = 0x0001,
   3830   } TVITEMPART;
   3831 
   3832   typedef struct tagTVGETITEMPARTRECTINFO {
   3833     HTREEITEM hti;
   3834     RECT *prc;
   3835     TVITEMPART partID;
   3836   } TVGETITEMPARTRECTINFO;
   3837 
   3838 #define TVM_GETITEMPARTRECT (TV_FIRST+72)
   3839 #define TreeView_GetItemPartRect(hwnd, hitem, prc, partid) { TVGETITEMPARTRECTINFO info; info.hti = (hitem); info.prc = (prc); info.partID = (partid); (WINBOOL)SNDMSG ((hwnd), TVM_GETITEMPARTRECT, 0,(LPARAM) &info); }
   3840 #endif
   3841 
   3842 typedef int (CALLBACK *PFNTVCOMPARE)(LPARAM lParam1,LPARAM lParam2,LPARAM lParamSort);
   3843 
   3844 #define LPTV_SORTCB LPTVSORTCB
   3845 #define TV_SORTCB TVSORTCB
   3846 
   3847   typedef struct tagTVSORTCB {
   3848     HTREEITEM hParent;
   3849     PFNTVCOMPARE lpfnCompare;
   3850     LPARAM lParam;
   3851   } TVSORTCB,*LPTVSORTCB;
   3852 
   3853 #define LPNM_TREEVIEWA LPNMTREEVIEWA
   3854 #define LPNM_TREEVIEWW LPNMTREEVIEWW
   3855 #define NM_TREEVIEWW NMTREEVIEWW
   3856 #define NM_TREEVIEWA NMTREEVIEWA
   3857 #define LPNM_TREEVIEW LPNMTREEVIEW
   3858 #define NM_TREEVIEW NMTREEVIEW
   3859 
   3860   typedef struct tagNMTREEVIEWA {
   3861     NMHDR hdr;
   3862     UINT action;
   3863     TVITEMA itemOld;
   3864     TVITEMA itemNew;
   3865     POINT ptDrag;
   3866   } NMTREEVIEWA,*LPNMTREEVIEWA;
   3867 
   3868   typedef struct tagNMTREEVIEWW {
   3869     NMHDR hdr;
   3870     UINT action;
   3871     TVITEMW itemOld;
   3872     TVITEMW itemNew;
   3873     POINT ptDrag;
   3874   } NMTREEVIEWW,*LPNMTREEVIEWW;
   3875 
   3876 #define NMTREEVIEW __MINGW_NAME_AW(NMTREEVIEW)
   3877 #define LPNMTREEVIEW __MINGW_NAME_AW(LPNMTREEVIEW)
   3878 
   3879 #define TVN_SELCHANGINGA (TVN_FIRST-1)
   3880 #define TVN_SELCHANGINGW (TVN_FIRST-50)
   3881 #define TVN_SELCHANGEDA (TVN_FIRST-2)
   3882 #define TVN_SELCHANGEDW (TVN_FIRST-51)
   3883 
   3884 #define TVC_UNKNOWN 0x0
   3885 #define TVC_BYMOUSE 0x1
   3886 #define TVC_BYKEYBOARD 0x2
   3887 
   3888 #define TVN_GETDISPINFOA (TVN_FIRST-3)
   3889 #define TVN_GETDISPINFOW (TVN_FIRST-52)
   3890 #define TVN_SETDISPINFOA (TVN_FIRST-4)
   3891 #define TVN_SETDISPINFOW (TVN_FIRST-53)
   3892 
   3893 #define TVIF_DI_SETITEM 0x1000
   3894 
   3895 #define TV_DISPINFOA NMTVDISPINFOA
   3896 #define TV_DISPINFOW NMTVDISPINFOW
   3897 #define TV_DISPINFO NMTVDISPINFO
   3898 
   3899   typedef struct tagTVDISPINFOA {
   3900     NMHDR hdr;
   3901     TVITEMA item;
   3902   } NMTVDISPINFOA,*LPNMTVDISPINFOA;
   3903 
   3904   typedef struct tagTVDISPINFOW {
   3905     NMHDR hdr;
   3906     TVITEMW item;
   3907   } NMTVDISPINFOW,*LPNMTVDISPINFOW;
   3908 
   3909 #define NMTVDISPINFO __MINGW_NAME_AW(NMTVDISPINFO)
   3910 #define LPNMTVDISPINFO __MINGW_NAME_AW(LPNMTVDISPINFO)
   3911 
   3912 #if (_WIN32_IE >= 0x0600)
   3913 typedef struct tagTVDISPINFOEXA {
   3914     NMHDR hdr;
   3915     TVITEMEXA item;
   3916 } NMTVDISPINFOEXA, *LPNMTVDISPINFOEXA;
   3917 
   3918 typedef struct tagTVDISPINFOEXW {
   3919     NMHDR hdr;
   3920     TVITEMEXW item;
   3921 } NMTVDISPINFOEXW, *LPNMTVDISPINFOEXW;
   3922 
   3923 #define NMTVDISPINFOEX   __MINGW_NAME_AW(NMTVDISPINFOEX)
   3924 #define LPNMTVDISPINFOEX __MINGW_NAME_AW(LPNMTVDISPINFOEX)
   3925 
   3926 #define TV_DISPINFOEXA NMTVDISPINFOEXA
   3927 #define TV_DISPINFOEXW NMTVDISPINFOEXW
   3928 #define TV_DISPINFOEX  NMTVDISPINFOEX
   3929 #endif /* (_WIN32_IE >= 0x0600) */
   3930 
   3931 #define TVN_ITEMEXPANDINGA (TVN_FIRST-5)
   3932 #define TVN_ITEMEXPANDINGW (TVN_FIRST-54)
   3933 #define TVN_ITEMEXPANDEDA (TVN_FIRST-6)
   3934 #define TVN_ITEMEXPANDEDW (TVN_FIRST-55)
   3935 #define TVN_BEGINDRAGA (TVN_FIRST-7)
   3936 #define TVN_BEGINDRAGW (TVN_FIRST-56)
   3937 #define TVN_BEGINRDRAGA (TVN_FIRST-8)
   3938 #define TVN_BEGINRDRAGW (TVN_FIRST-57)
   3939 #define TVN_DELETEITEMA (TVN_FIRST-9)
   3940 #define TVN_DELETEITEMW (TVN_FIRST-58)
   3941 #define TVN_BEGINLABELEDITA (TVN_FIRST-10)
   3942 #define TVN_BEGINLABELEDITW (TVN_FIRST-59)
   3943 #define TVN_ENDLABELEDITA (TVN_FIRST-11)
   3944 #define TVN_ENDLABELEDITW (TVN_FIRST-60)
   3945 #define TVN_KEYDOWN (TVN_FIRST-12)
   3946 #define TVN_GETINFOTIPA (TVN_FIRST-13)
   3947 #define TVN_GETINFOTIPW (TVN_FIRST-14)
   3948 #define TVN_SINGLEEXPAND (TVN_FIRST-15)
   3949 
   3950 #define TVNRET_DEFAULT 0
   3951 #define TVNRET_SKIPOLD 1
   3952 #define TVNRET_SKIPNEW 2
   3953 
   3954 #if _WIN32_IE >= 0x0600
   3955 #define TVN_ITEMCHANGINGA (TVN_FIRST-16)
   3956 #define TVN_ITEMCHANGINGW (TVN_FIRST-17)
   3957 #define TVN_ITEMCHANGEDA (TVN_FIRST-18)
   3958 #define TVN_ITEMCHANGEDW (TVN_FIRST-19)
   3959 #define TVN_ASYNCDRAW (TVN_FIRST-20)
   3960 #endif
   3961 
   3962 #define TV_KEYDOWN NMTVKEYDOWN
   3963 
   3964 #include <pshpack1.h>
   3965 
   3966   typedef struct tagTVKEYDOWN {
   3967     NMHDR hdr;
   3968     WORD wVKey;
   3969     UINT flags;
   3970   } NMTVKEYDOWN,*LPNMTVKEYDOWN;
   3971 
   3972 #include <poppack.h>
   3973 
   3974 #define TVN_SELCHANGING __MINGW_NAME_AW(TVN_SELCHANGING)
   3975 #define TVN_SELCHANGED __MINGW_NAME_AW(TVN_SELCHANGED)
   3976 #define TVN_GETDISPINFO __MINGW_NAME_AW(TVN_GETDISPINFO)
   3977 #define TVN_SETDISPINFO __MINGW_NAME_AW(TVN_SETDISPINFO)
   3978 #define TVN_ITEMEXPANDING __MINGW_NAME_AW(TVN_ITEMEXPANDING)
   3979 #define TVN_ITEMEXPANDED __MINGW_NAME_AW(TVN_ITEMEXPANDED)
   3980 #define TVN_BEGINDRAG __MINGW_NAME_AW(TVN_BEGINDRAG)
   3981 #define TVN_BEGINRDRAG __MINGW_NAME_AW(TVN_BEGINRDRAG)
   3982 #define TVN_DELETEITEM __MINGW_NAME_AW(TVN_DELETEITEM)
   3983 #define TVN_BEGINLABELEDIT __MINGW_NAME_AW(TVN_BEGINLABELEDIT)
   3984 #define TVN_ENDLABELEDIT __MINGW_NAME_AW(TVN_ENDLABELEDIT)
   3985 
   3986 #define NMTVCUSTOMDRAW_V3_SIZE CCSIZEOF_STRUCT(NMTVCUSTOMDRAW,clrTextBk)
   3987 
   3988   typedef struct tagNMTVCUSTOMDRAW {
   3989     NMCUSTOMDRAW nmcd;
   3990     COLORREF clrText;
   3991     COLORREF clrTextBk;
   3992     int iLevel;
   3993   } NMTVCUSTOMDRAW,*LPNMTVCUSTOMDRAW;
   3994 
   3995   typedef struct tagNMTVGETINFOTIPA {
   3996     NMHDR hdr;
   3997     LPSTR pszText;
   3998     int cchTextMax;
   3999     HTREEITEM hItem;
   4000     LPARAM lParam;
   4001   } NMTVGETINFOTIPA,*LPNMTVGETINFOTIPA;
   4002 
   4003   typedef struct tagNMTVGETINFOTIPW {
   4004     NMHDR hdr;
   4005     LPWSTR pszText;
   4006     int cchTextMax;
   4007     HTREEITEM hItem;
   4008     LPARAM lParam;
   4009   } NMTVGETINFOTIPW,*LPNMTVGETINFOTIPW;
   4010 
   4011 #define TVN_GETINFOTIP __MINGW_NAME_AW(TVN_GETINFOTIP)
   4012 #define NMTVGETINFOTIP __MINGW_NAME_AW(NMTVGETINFOTIP)
   4013 #define LPNMTVGETINFOTIP __MINGW_NAME_AW(LPNMTVGETINFOTIP)
   4014 
   4015 #define TVCDRF_NOIMAGES 0x10000
   4016 
   4017 #if _WIN32_IE > 0x0600
   4018   typedef struct tagTVITEMCHANGE {
   4019     NMHDR hdr;
   4020     UINT uChanged;
   4021     HTREEITEM hItem;
   4022     UINT uStateNew;
   4023     UINT uStateOld;
   4024     LPARAM lParam;
   4025   } NMTVITEMCHANGE;
   4026 
   4027   typedef struct tagNMTVASYNCDRAW {
   4028     NMHDR hdr;
   4029     IMAGELISTDRAWPARAMS *pimldp;
   4030     HRESULT hr;
   4031     HTREEITEM hItem;
   4032     LPARAM lParam;
   4033     DWORD dwRetFlags;
   4034     int iRetImageIndex;
   4035   } NMTVASYNCDRAW;
   4036 
   4037 #define TVN_ITEMCHANGING __MINGW_NAME_AW(TVN_ITEMCHANGING)
   4038 #define TVN_ITEMCHANGED __MINGW_NAME_AW(TVN_ITEMCHANGED)
   4039 #endif
   4040 #endif
   4041 
   4042 #ifndef NOUSEREXCONTROLS
   4043 
   4044 #define WC_COMBOBOXEXW L"ComboBoxEx32"
   4045 #define WC_COMBOBOXEXA "ComboBoxEx32"
   4046 
   4047 #define WC_COMBOBOXEX __MINGW_NAME_AW(WC_COMBOBOXEX)
   4048 
   4049 #define CBEIF_TEXT 0x1
   4050 #define CBEIF_IMAGE 0x2
   4051 #define CBEIF_SELECTEDIMAGE 0x4
   4052 #define CBEIF_OVERLAY 0x8
   4053 #define CBEIF_INDENT 0x10
   4054 #define CBEIF_LPARAM 0x20
   4055 
   4056 #define CBEIF_DI_SETITEM 0x10000000
   4057 
   4058   typedef struct tagCOMBOBOXEXITEMA {
   4059     UINT mask;
   4060     INT_PTR iItem;
   4061     LPSTR pszText;
   4062     int cchTextMax;
   4063     int iImage;
   4064     int iSelectedImage;
   4065     int iOverlay;
   4066     int iIndent;
   4067     LPARAM lParam;
   4068   } COMBOBOXEXITEMA,*PCOMBOBOXEXITEMA;
   4069   typedef COMBOBOXEXITEMA CONST *PCCOMBOEXITEMA;
   4070 
   4071   typedef struct tagCOMBOBOXEXITEMW
   4072   {
   4073     UINT mask;
   4074     INT_PTR iItem;
   4075     LPWSTR pszText;
   4076     int cchTextMax;
   4077     int iImage;
   4078     int iSelectedImage;
   4079     int iOverlay;
   4080     int iIndent;
   4081     LPARAM lParam;
   4082   } COMBOBOXEXITEMW,*PCOMBOBOXEXITEMW;
   4083   typedef COMBOBOXEXITEMW CONST *PCCOMBOEXITEMW;
   4084 
   4085 #define COMBOBOXEXITEM __MINGW_NAME_AW(COMBOBOXEXITEM)
   4086 #define PCOMBOBOXEXITEM __MINGW_NAME_AW(PCOMBOBOXEXITEM)
   4087 #define PCCOMBOBOXEXITEM __MINGW_NAME_AW(PCCOMBOBOXEXITEM)
   4088 
   4089 #define CBEM_INSERTITEMA (WM_USER+1)
   4090 #define CBEM_SETIMAGELIST (WM_USER+2)
   4091 #define CBEM_GETIMAGELIST (WM_USER+3)
   4092 #define CBEM_GETITEMA (WM_USER+4)
   4093 #define CBEM_SETITEMA (WM_USER+5)
   4094 #define CBEM_DELETEITEM CB_DELETESTRING
   4095 #define CBEM_GETCOMBOCONTROL (WM_USER+6)
   4096 #define CBEM_GETEDITCONTROL (WM_USER+7)
   4097 #define CBEM_SETEXSTYLE (WM_USER+8)
   4098 #define CBEM_SETEXTENDEDSTYLE (WM_USER+14)
   4099 #define CBEM_GETEXSTYLE (WM_USER+9)
   4100 #define CBEM_GETEXTENDEDSTYLE (WM_USER+9)
   4101 #define CBEM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
   4102 #define CBEM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
   4103 #define CBEM_HASEDITCHANGED (WM_USER+10)
   4104 #define CBEM_INSERTITEMW (WM_USER+11)
   4105 #define CBEM_SETITEMW (WM_USER+12)
   4106 #define CBEM_GETITEMW (WM_USER+13)
   4107 
   4108 #define CBEM_INSERTITEM __MINGW_NAME_AW(CBEM_INSERTITEM)
   4109 #define CBEM_SETITEM __MINGW_NAME_AW(CBEM_SETITEM)
   4110 #define CBEM_GETITEM __MINGW_NAME_AW(CBEM_GETITEM)
   4111 
   4112 #define CBEM_SETWINDOWTHEME CCM_SETWINDOWTHEME
   4113 
   4114 #define CBES_EX_NOEDITIMAGE 0x1
   4115 #define CBES_EX_NOEDITIMAGEINDENT 0x2
   4116 #define CBES_EX_PATHWORDBREAKPROC 0x4
   4117 #define CBES_EX_NOSIZELIMIT 0x8
   4118 #define CBES_EX_CASESENSITIVE 0x10
   4119 #if NTDDI_VERSION >= 0x06000000
   4120 #define CBES_EX_TEXTENDELLIPSIS 0x00000020
   4121 #endif
   4122 
   4123   typedef struct {
   4124     NMHDR hdr;
   4125     COMBOBOXEXITEMA ceItem;
   4126   } NMCOMBOBOXEXA,*PNMCOMBOBOXEXA;
   4127 
   4128   typedef struct {
   4129     NMHDR hdr;
   4130     COMBOBOXEXITEMW ceItem;
   4131   } NMCOMBOBOXEXW,*PNMCOMBOBOXEXW;
   4132 
   4133 #define NMCOMBOBOXEX __MINGW_NAME_AW(NMCOMBOBOXEX)
   4134 #define PNMCOMBOBOXEX __MINGW_NAME_AW(PNMCOMBOBOXEX)
   4135 #define CBEN_GETDISPINFO __MINGW_NAME_AW(CBEN_GETDISPINFO)
   4136 
   4137 #define CBEN_GETDISPINFOA (CBEN_FIRST - 0)
   4138 #define CBEN_INSERTITEM (CBEN_FIRST - 1)
   4139 #define CBEN_DELETEITEM (CBEN_FIRST - 2)
   4140 #define CBEN_BEGINEDIT (CBEN_FIRST - 4)
   4141 #define CBEN_ENDEDITA (CBEN_FIRST - 5)
   4142 #define CBEN_ENDEDITW (CBEN_FIRST - 6)
   4143 
   4144 #define CBEN_GETDISPINFOW (CBEN_FIRST - 7)
   4145 
   4146 #define CBEN_DRAGBEGINA (CBEN_FIRST - 8)
   4147 #define CBEN_DRAGBEGINW (CBEN_FIRST - 9)
   4148 
   4149 #define CBEN_DRAGBEGIN __MINGW_NAME_AW(CBEN_DRAGBEGIN)
   4150 
   4151 #define CBEN_ENDEDIT __MINGW_NAME_AW(CBEN_ENDEDIT)
   4152 
   4153 #define CBENF_KILLFOCUS 1
   4154 #define CBENF_RETURN 2
   4155 #define CBENF_ESCAPE 3
   4156 #define CBENF_DROPDOWN 4
   4157 
   4158 #define CBEMAXSTRLEN 260
   4159 
   4160   typedef struct {
   4161     NMHDR hdr;
   4162     int iItemid;
   4163     WCHAR szText[CBEMAXSTRLEN];
   4164   } NMCBEDRAGBEGINW,*LPNMCBEDRAGBEGINW,*PNMCBEDRAGBEGINW;
   4165 
   4166   typedef struct {
   4167     NMHDR hdr;
   4168     int iItemid;
   4169     char szText[CBEMAXSTRLEN];
   4170   } NMCBEDRAGBEGINA,*LPNMCBEDRAGBEGINA,*PNMCBEDRAGBEGINA;
   4171 
   4172 #define NMCBEDRAGBEGIN __MINGW_NAME_AW(NMCBEDRAGBEGIN)
   4173 #define LPNMCBEDRAGBEGIN __MINGW_NAME_AW(LPNMCBEDRAGBEGIN)
   4174 #define PNMCBEDRAGBEGIN __MINGW_NAME_AW(PNMCBEDRAGBEGIN)
   4175 
   4176   typedef struct {
   4177     NMHDR hdr;
   4178     WINBOOL fChanged;
   4179     int iNewSelection;
   4180     WCHAR szText[CBEMAXSTRLEN];
   4181     int iWhy;
   4182   } NMCBEENDEDITW,*LPNMCBEENDEDITW,*PNMCBEENDEDITW;
   4183 
   4184   typedef struct {
   4185     NMHDR hdr;
   4186     WINBOOL fChanged;
   4187     int iNewSelection;
   4188     char szText[CBEMAXSTRLEN];
   4189     int iWhy;
   4190   } NMCBEENDEDITA,*LPNMCBEENDEDITA,*PNMCBEENDEDITA;
   4191 
   4192 #define NMCBEENDEDIT __MINGW_NAME_AW(NMCBEENDEDIT)
   4193 #define LPNMCBEENDEDIT __MINGW_NAME_AW(LPNMCBEENDEDIT)
   4194 #define PNMCBEENDEDIT __MINGW_NAME_AW(PNMCBEENDEDIT)
   4195 #endif
   4196 
   4197 #ifndef NOTABCONTROL
   4198 #define WC_TABCONTROLA "SysTabControl32"
   4199 #define WC_TABCONTROLW L"SysTabControl32"
   4200 #define WC_TABCONTROL __MINGW_NAME_AW(WC_TABCONTROL)
   4201 
   4202 #define TCS_SCROLLOPPOSITE 0x1
   4203 #define TCS_BOTTOM 0x2
   4204 #define TCS_RIGHT 0x2
   4205 #define TCS_MULTISELECT 0x4
   4206 #define TCS_FLATBUTTONS 0x8
   4207 #define TCS_FORCEICONLEFT 0x10
   4208 #define TCS_FORCELABELLEFT 0x20
   4209 #define TCS_HOTTRACK 0x40
   4210 #define TCS_VERTICAL 0x80
   4211 #define TCS_TABS 0x0
   4212 #define TCS_BUTTONS 0x100
   4213 #define TCS_SINGLELINE 0x0
   4214 #define TCS_MULTILINE 0x200
   4215 #define TCS_RIGHTJUSTIFY 0x0
   4216 #define TCS_FIXEDWIDTH 0x400
   4217 #define TCS_RAGGEDRIGHT 0x800
   4218 #define TCS_FOCUSONBUTTONDOWN 0x1000
   4219 #define TCS_OWNERDRAWFIXED 0x2000
   4220 #define TCS_TOOLTIPS 0x4000
   4221 #define TCS_FOCUSNEVER 0x8000
   4222 
   4223 #define TCS_EX_FLATSEPARATORS 0x1
   4224 #define TCS_EX_REGISTERDROP 0x2
   4225 
   4226 #define TCM_GETIMAGELIST (TCM_FIRST+2)
   4227 #define TabCtrl_GetImageList(hwnd) (HIMAGELIST)SNDMSG((hwnd),TCM_GETIMAGELIST,(WPARAM)0,(LPARAM)0)
   4228 
   4229 #define TCM_SETIMAGELIST (TCM_FIRST+3)
   4230 #define TabCtrl_SetImageList(hwnd,himl) (HIMAGELIST)SNDMSG((hwnd),TCM_SETIMAGELIST,0,(LPARAM)(HIMAGELIST)(himl))
   4231 
   4232 #define TCM_GETITEMCOUNT (TCM_FIRST+4)
   4233 #define TabCtrl_GetItemCount(hwnd) (int)SNDMSG((hwnd),TCM_GETITEMCOUNT,(WPARAM)0,(LPARAM)0)
   4234 
   4235 #define TCIF_TEXT 0x1
   4236 #define TCIF_IMAGE 0x2
   4237 #define TCIF_RTLREADING 0x4
   4238 #define TCIF_PARAM 0x8
   4239 #define TCIF_STATE 0x10
   4240 
   4241 #define TCIS_BUTTONPRESSED 0x1
   4242 #define TCIS_HIGHLIGHTED 0x2
   4243 
   4244 #define TC_ITEMHEADERA TCITEMHEADERA
   4245 #define TC_ITEMHEADERW TCITEMHEADERW
   4246 #define TC_ITEMHEADER TCITEMHEADER
   4247 
   4248   typedef struct tagTCITEMHEADERA {
   4249     UINT mask;
   4250     UINT lpReserved1;
   4251     UINT lpReserved2;
   4252     LPSTR pszText;
   4253     int cchTextMax;
   4254     int iImage;
   4255   } TCITEMHEADERA,*LPTCITEMHEADERA;
   4256 
   4257   typedef struct tagTCITEMHEADERW {
   4258     UINT mask;
   4259     UINT lpReserved1;
   4260     UINT lpReserved2;
   4261     LPWSTR pszText;
   4262     int cchTextMax;
   4263     int iImage;
   4264   } TCITEMHEADERW,*LPTCITEMHEADERW;
   4265 
   4266 #define TCITEMHEADER __MINGW_NAME_AW(TCITEMHEADER)
   4267 #define LPTCITEMHEADER __MINGW_NAME_AW(LPTCITEMHEADER)
   4268 
   4269 #define TC_ITEMA TCITEMA
   4270 #define TC_ITEMW TCITEMW
   4271 #define TC_ITEM TCITEM
   4272 
   4273   typedef struct tagTCITEMA {
   4274     UINT mask;
   4275     DWORD dwState;
   4276     DWORD dwStateMask;
   4277     LPSTR pszText;
   4278     int cchTextMax;
   4279     int iImage;
   4280     LPARAM lParam;
   4281   } TCITEMA,*LPTCITEMA;
   4282 
   4283   typedef struct tagTCITEMW {
   4284     UINT mask;
   4285     DWORD dwState;
   4286     DWORD dwStateMask;
   4287     LPWSTR pszText;
   4288     int cchTextMax;
   4289     int iImage;
   4290     LPARAM lParam;
   4291   } TCITEMW,*LPTCITEMW;
   4292 
   4293 #define TCITEM __MINGW_NAME_AW(TCITEM)
   4294 #define LPTCITEM __MINGW_NAME_AW(LPTCITEM)
   4295 
   4296 #define TCM_GETITEMA (TCM_FIRST+5)
   4297 #define TCM_GETITEMW (TCM_FIRST+60)
   4298 
   4299 #define TCM_GETITEM __MINGW_NAME_AW(TCM_GETITEM)
   4300 
   4301 #define TabCtrl_GetItem(hwnd,iItem,pitem) (WINBOOL)SNDMSG((hwnd),TCM_GETITEM,(WPARAM)(int)(iItem),(LPARAM)(TC_ITEM *)(pitem))
   4302 
   4303 #define TCM_SETITEMA (TCM_FIRST+6)
   4304 #define TCM_SETITEMW (TCM_FIRST+61)
   4305 
   4306 #define TCM_SETITEM __MINGW_NAME_AW(TCM_SETITEM)
   4307 
   4308 #define TabCtrl_SetItem(hwnd,iItem,pitem) (WINBOOL)SNDMSG((hwnd),TCM_SETITEM,(WPARAM)(int)(iItem),(LPARAM)(TC_ITEM *)(pitem))
   4309 
   4310 #define TCM_INSERTITEMA (TCM_FIRST+7)
   4311 #define TCM_INSERTITEMW (TCM_FIRST+62)
   4312 
   4313 #define TCM_INSERTITEM __MINGW_NAME_AW(TCM_INSERTITEM)
   4314 
   4315 #define TabCtrl_InsertItem(hwnd,iItem,pitem) (int)SNDMSG((hwnd),TCM_INSERTITEM,(WPARAM)(int)(iItem),(LPARAM)(const TC_ITEM *)(pitem))
   4316 
   4317 #define TCM_DELETEITEM (TCM_FIRST+8)
   4318 #define TabCtrl_DeleteItem(hwnd,i) (WINBOOL)SNDMSG((hwnd),TCM_DELETEITEM,(WPARAM)(int)(i),(LPARAM)0)
   4319 
   4320 #define TCM_DELETEALLITEMS (TCM_FIRST+9)
   4321 #define TabCtrl_DeleteAllItems(hwnd) (WINBOOL)SNDMSG((hwnd),TCM_DELETEALLITEMS,(WPARAM)0,(LPARAM)0)
   4322 
   4323 #define TCM_GETITEMRECT (TCM_FIRST+10)
   4324 #define TabCtrl_GetItemRect(hwnd,i,prc) (WINBOOL)SNDMSG((hwnd),TCM_GETITEMRECT,(WPARAM)(int)(i),(LPARAM)(RECT *)(prc))
   4325 
   4326 #define TCM_GETCURSEL (TCM_FIRST+11)
   4327 #define TabCtrl_GetCurSel(hwnd) (int)SNDMSG((hwnd),TCM_GETCURSEL,0,0)
   4328 
   4329 #define TCM_SETCURSEL (TCM_FIRST+12)
   4330 #define TabCtrl_SetCurSel(hwnd,i) (int)SNDMSG((hwnd),TCM_SETCURSEL,(WPARAM)(i),0)
   4331 
   4332 #define TCHT_NOWHERE 0x1
   4333 #define TCHT_ONITEMICON 0x2
   4334 #define TCHT_ONITEMLABEL 0x4
   4335 #define TCHT_ONITEM (TCHT_ONITEMICON | TCHT_ONITEMLABEL)
   4336 
   4337 #define LPTC_HITTESTINFO LPTCHITTESTINFO
   4338 #define TC_HITTESTINFO TCHITTESTINFO
   4339 
   4340   typedef struct tagTCHITTESTINFO {
   4341     POINT pt;
   4342     UINT flags;
   4343   } TCHITTESTINFO,*LPTCHITTESTINFO;
   4344 
   4345 #define TCM_HITTEST (TCM_FIRST+13)
   4346 #define TabCtrl_HitTest(hwndTC,pinfo) (int)SNDMSG((hwndTC),TCM_HITTEST,0,(LPARAM)(TC_HITTESTINFO *)(pinfo))
   4347 #define TCM_SETITEMEXTRA (TCM_FIRST+14)
   4348 #define TabCtrl_SetItemExtra(hwndTC,cb) (WINBOOL)SNDMSG((hwndTC),TCM_SETITEMEXTRA,(WPARAM)(cb),(LPARAM)0)
   4349 #define TCM_ADJUSTRECT (TCM_FIRST+40)
   4350 #define TabCtrl_AdjustRect(hwnd,bLarger,prc) (int)SNDMSG(hwnd,TCM_ADJUSTRECT,(WPARAM)(WINBOOL)(bLarger),(LPARAM)(RECT *)prc)
   4351 #define TCM_SETITEMSIZE (TCM_FIRST+41)
   4352 #define TabCtrl_SetItemSize(hwnd,x,y) (DWORD)SNDMSG((hwnd),TCM_SETITEMSIZE,0,MAKELPARAM(x,y))
   4353 #define TCM_REMOVEIMAGE (TCM_FIRST+42)
   4354 #define TabCtrl_RemoveImage(hwnd,i) (void)SNDMSG((hwnd),TCM_REMOVEIMAGE,i,(LPARAM)0)
   4355 #define TCM_SETPADDING (TCM_FIRST+43)
   4356 #define TabCtrl_SetPadding(hwnd,cx,cy) (void)SNDMSG((hwnd),TCM_SETPADDING,0,MAKELPARAM(cx,cy))
   4357 #define TCM_GETROWCOUNT (TCM_FIRST+44)
   4358 #define TabCtrl_GetRowCount(hwnd) (int)SNDMSG((hwnd),TCM_GETROWCOUNT,(WPARAM)0,(LPARAM)0)
   4359 #define TCM_GETTOOLTIPS (TCM_FIRST+45)
   4360 #define TabCtrl_GetToolTips(hwnd) (HWND)SNDMSG((hwnd),TCM_GETTOOLTIPS,(WPARAM)0,(LPARAM)0)
   4361 #define TCM_SETTOOLTIPS (TCM_FIRST+46)
   4362 #define TabCtrl_SetToolTips(hwnd,hwndTT) (void)SNDMSG((hwnd),TCM_SETTOOLTIPS,(WPARAM)(hwndTT),(LPARAM)0)
   4363 #define TCM_GETCURFOCUS (TCM_FIRST+47)
   4364 #define TabCtrl_GetCurFocus(hwnd) (int)SNDMSG((hwnd),TCM_GETCURFOCUS,0,0)
   4365 #define TCM_SETCURFOCUS (TCM_FIRST+48)
   4366 #define TabCtrl_SetCurFocus(hwnd,i) SNDMSG((hwnd),TCM_SETCURFOCUS,i,0)
   4367 #define TCM_SETMINTABWIDTH (TCM_FIRST+49)
   4368 #define TabCtrl_SetMinTabWidth(hwnd,x) (int)SNDMSG((hwnd),TCM_SETMINTABWIDTH,0,x)
   4369 #define TCM_DESELECTALL (TCM_FIRST+50)
   4370 #define TabCtrl_DeselectAll(hwnd,fExcludeFocus) (void)SNDMSG((hwnd),TCM_DESELECTALL,fExcludeFocus,0)
   4371 #define TCM_HIGHLIGHTITEM (TCM_FIRST+51)
   4372 #define TabCtrl_HighlightItem(hwnd,i,fHighlight) (WINBOOL)SNDMSG((hwnd),TCM_HIGHLIGHTITEM,(WPARAM)(i),(LPARAM)MAKELONG (fHighlight,0))
   4373 #define TCM_SETEXTENDEDSTYLE (TCM_FIRST+52)
   4374 #define TabCtrl_SetExtendedStyle(hwnd,dw) (DWORD)SNDMSG((hwnd),TCM_SETEXTENDEDSTYLE,0,dw)
   4375 #define TCM_GETEXTENDEDSTYLE (TCM_FIRST+53)
   4376 #define TabCtrl_GetExtendedStyle(hwnd) (DWORD)SNDMSG((hwnd),TCM_GETEXTENDEDSTYLE,0,0)
   4377 #define TCM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
   4378 #define TabCtrl_SetUnicodeFormat(hwnd,fUnicode) (WINBOOL)SNDMSG((hwnd),TCM_SETUNICODEFORMAT,(WPARAM)(fUnicode),0)
   4379 #define TCM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
   4380 #define TabCtrl_GetUnicodeFormat(hwnd) (WINBOOL)SNDMSG((hwnd),TCM_GETUNICODEFORMAT,0,0)
   4381 
   4382 #define TCN_KEYDOWN (TCN_FIRST - 0)
   4383 
   4384 #define TC_KEYDOWN NMTCKEYDOWN
   4385 
   4386 #include <pshpack1.h>
   4387 
   4388   typedef struct tagTCKEYDOWN {
   4389     NMHDR hdr;
   4390     WORD wVKey;
   4391     UINT flags;
   4392   } NMTCKEYDOWN;
   4393 
   4394 #include <poppack.h>
   4395 
   4396 #define TCN_SELCHANGE (TCN_FIRST - 1)
   4397 #define TCN_SELCHANGING (TCN_FIRST - 2)
   4398 #define TCN_GETOBJECT (TCN_FIRST - 3)
   4399 #define TCN_FOCUSCHANGE (TCN_FIRST - 4)
   4400 #endif
   4401 
   4402 #ifndef NOANIMATE
   4403 #define ANIMATE_CLASSW L"SysAnimate32"
   4404 #define ANIMATE_CLASSA "SysAnimate32"
   4405 
   4406 #define ANIMATE_CLASS __MINGW_NAME_AW(ANIMATE_CLASS)
   4407 
   4408 #define ACS_CENTER 0x1
   4409 #define ACS_TRANSPARENT 0x2
   4410 #define ACS_AUTOPLAY 0x4
   4411 #define ACS_TIMER 0x8
   4412 
   4413 #define ACM_OPENA (WM_USER+100)
   4414 #define ACM_OPENW (WM_USER+103)
   4415 
   4416 #define ACM_OPEN __MINGW_NAME_AW(ACM_OPEN)
   4417 
   4418 #define ACM_PLAY (WM_USER+101)
   4419 #define ACM_STOP (WM_USER+102)
   4420 #define ACM_ISPLAYING (WM_USER+104)
   4421 
   4422 #define ACN_START 1
   4423 #define ACN_STOP 2
   4424 
   4425 #define Animate_Create(hwndP,id,dwStyle,hInstance) CreateWindow(ANIMATE_CLASS,NULL,dwStyle,0,0,0,0,hwndP,(HMENU)(id),hInstance,NULL)
   4426 
   4427 #define Animate_Open(hwnd,szName) (WINBOOL)SNDMSG(hwnd,ACM_OPEN,0,(LPARAM)(LPTSTR)(szName))
   4428 #define Animate_OpenEx(hwnd,hInst,szName) (WINBOOL)SNDMSG(hwnd,ACM_OPEN,(WPARAM)(hInst),(LPARAM)(LPTSTR)(szName))
   4429 #define Animate_Play(hwnd,from,to,rep) (WINBOOL)SNDMSG(hwnd,ACM_PLAY,(WPARAM)(rep),(LPARAM)MAKELONG(from,to))
   4430 #define Animate_Stop(hwnd) (WINBOOL)SNDMSG(hwnd,ACM_STOP,0,0)
   4431 #define Animate_IsPlaying(hwnd) (WINBOOL)SNDMSG (hwnd, ACM_ISPLAYING, 0, 0)
   4432 #define Animate_Close(hwnd) Animate_Open(hwnd,NULL)
   4433 #define Animate_Seek(hwnd,frame) Animate_Play(hwnd,frame,frame,1)
   4434 #endif
   4435 
   4436 #ifndef NOMONTHCAL
   4437 #define MONTHCAL_CLASSW L"SysMonthCal32"
   4438 #define MONTHCAL_CLASSA "SysMonthCal32"
   4439 
   4440 #define MONTHCAL_CLASS __MINGW_NAME_AW(MONTHCAL_CLASS)
   4441 
   4442   typedef DWORD MONTHDAYSTATE,*LPMONTHDAYSTATE;
   4443 
   4444 #define MCM_FIRST 0x1000
   4445 
   4446 #define MCM_GETCURSEL (MCM_FIRST+1)
   4447 #define MonthCal_GetCurSel(hmc,pst) (WINBOOL)SNDMSG(hmc,MCM_GETCURSEL,0,(LPARAM)(pst))
   4448 #define MCM_SETCURSEL (MCM_FIRST+2)
   4449 #define MonthCal_SetCurSel(hmc,pst) (WINBOOL)SNDMSG(hmc,MCM_SETCURSEL,0,(LPARAM)(pst))
   4450 #define MCM_GETMAXSELCOUNT (MCM_FIRST+3)
   4451 #define MonthCal_GetMaxSelCount(hmc) (DWORD)SNDMSG(hmc,MCM_GETMAXSELCOUNT,(WPARAM)0,(LPARAM)0)
   4452 #define MCM_SETMAXSELCOUNT (MCM_FIRST+4)
   4453 #define MonthCal_SetMaxSelCount(hmc,n) (WINBOOL)SNDMSG(hmc,MCM_SETMAXSELCOUNT,(WPARAM)(n),(LPARAM)0)
   4454 #define MCM_GETSELRANGE (MCM_FIRST+5)
   4455 #define MonthCal_GetSelRange(hmc,rgst) SNDMSG(hmc,MCM_GETSELRANGE,0,(LPARAM)(rgst))
   4456 #define MCM_SETSELRANGE (MCM_FIRST+6)
   4457 #define MonthCal_SetSelRange(hmc,rgst) SNDMSG(hmc,MCM_SETSELRANGE,0,(LPARAM)(rgst))
   4458 #define MCM_GETMONTHRANGE (MCM_FIRST+7)
   4459 #define MonthCal_GetMonthRange(hmc,gmr,rgst) (DWORD)SNDMSG(hmc,MCM_GETMONTHRANGE,(WPARAM)(gmr),(LPARAM)(rgst))
   4460 #define MCM_SETDAYSTATE (MCM_FIRST+8)
   4461 #define MonthCal_SetDayState(hmc,cbds,rgds) SNDMSG(hmc,MCM_SETDAYSTATE,(WPARAM)(cbds),(LPARAM)(rgds))
   4462 #define MCM_GETMINREQRECT (MCM_FIRST+9)
   4463 #define MonthCal_GetMinReqRect(hmc,prc) SNDMSG(hmc,MCM_GETMINREQRECT,0,(LPARAM)(prc))
   4464 #define MCM_SETCOLOR (MCM_FIRST+10)
   4465 #define MonthCal_SetColor(hmc,iColor,clr) SNDMSG(hmc,MCM_SETCOLOR,iColor,clr)
   4466 #define MCM_GETCOLOR (MCM_FIRST+11)
   4467 #define MonthCal_GetColor(hmc,iColor) SNDMSG(hmc,MCM_GETCOLOR,iColor,0)
   4468 
   4469 #define MCSC_BACKGROUND 0
   4470 #define MCSC_TEXT 1
   4471 #define MCSC_TITLEBK 2
   4472 #define MCSC_TITLETEXT 3
   4473 #define MCSC_MONTHBK 4
   4474 #define MCSC_TRAILINGTEXT 5
   4475 
   4476 #define MCM_SETTODAY (MCM_FIRST+12)
   4477 #define MonthCal_SetToday(hmc,pst) SNDMSG(hmc,MCM_SETTODAY,0,(LPARAM)(pst))
   4478 #define MCM_GETTODAY (MCM_FIRST+13)
   4479 #define MonthCal_GetToday(hmc,pst) (WINBOOL)SNDMSG(hmc,MCM_GETTODAY,0,(LPARAM)(pst))
   4480 #define MCM_HITTEST (MCM_FIRST+14)
   4481 #define MonthCal_HitTest(hmc,pinfo) SNDMSG(hmc,MCM_HITTEST,0,(LPARAM)(PMCHITTESTINFO)(pinfo))
   4482 
   4483   typedef struct {
   4484     UINT cbSize;
   4485     POINT pt;
   4486     UINT uHit;
   4487     SYSTEMTIME st;
   4488 #if NTDDI_VERSION >= 0x06000000
   4489     RECT rc;
   4490     int iOffset;
   4491     int iRow;
   4492     int iCol;
   4493 #endif
   4494   } MCHITTESTINFO,*PMCHITTESTINFO;
   4495 
   4496 #define MCHITTESTINFO_V1_SIZE CCSIZEOF_STRUCT (MCHITTESTINFO, st)
   4497 
   4498 #define MCHT_TITLE 0x10000
   4499 #define MCHT_CALENDAR 0x20000
   4500 #define MCHT_TODAYLINK 0x30000
   4501 #if NTDDI_VERSION >= 0x06000000
   4502 #define MCHT_CALENDARCONTROL 0x100000
   4503 #endif
   4504 #define MCHT_NEXT 0x1000000
   4505 #define MCHT_PREV 0x2000000
   4506 
   4507 #define MCHT_NOWHERE 0x0
   4508 
   4509 #define MCHT_TITLEBK (MCHT_TITLE)
   4510 #define MCHT_TITLEMONTH (MCHT_TITLE | 0x1)
   4511 #define MCHT_TITLEYEAR (MCHT_TITLE | 0x2)
   4512 #define MCHT_TITLEBTNNEXT (MCHT_TITLE | MCHT_NEXT | 0x3)
   4513 #define MCHT_TITLEBTNPREV (MCHT_TITLE | MCHT_PREV | 0x3)
   4514 
   4515 #define MCHT_CALENDARBK (MCHT_CALENDAR)
   4516 #define MCHT_CALENDARDATE (MCHT_CALENDAR | 0x1)
   4517 #define MCHT_CALENDARDATENEXT (MCHT_CALENDARDATE | MCHT_NEXT)
   4518 #define MCHT_CALENDARDATEPREV (MCHT_CALENDARDATE | MCHT_PREV)
   4519 #define MCHT_CALENDARDAY (MCHT_CALENDAR | 0x2)
   4520 #define MCHT_CALENDARWEEKNUM (MCHT_CALENDAR | 0x3)
   4521 #define MCHT_CALENDARDATEMIN (MCHT_CALENDAR | 0x4)
   4522 #define MCHT_CALENDARDATEMAX (MCHT_CALENDAR | 0x5)
   4523 
   4524 #define MCM_SETFIRSTDAYOFWEEK (MCM_FIRST+15)
   4525 #define MonthCal_SetFirstDayOfWeek(hmc,iDay) SNDMSG(hmc,MCM_SETFIRSTDAYOFWEEK,0,iDay)
   4526 #define MCM_GETFIRSTDAYOFWEEK (MCM_FIRST+16)
   4527 #define MonthCal_GetFirstDayOfWeek(hmc) (DWORD)SNDMSG(hmc,MCM_GETFIRSTDAYOFWEEK,0,0)
   4528 #define MCM_GETRANGE (MCM_FIRST+17)
   4529 #define MonthCal_GetRange(hmc,rgst) (DWORD)SNDMSG(hmc,MCM_GETRANGE,0,(LPARAM)(rgst))
   4530 #define MCM_SETRANGE (MCM_FIRST+18)
   4531 #define MonthCal_SetRange(hmc,gd,rgst) (WINBOOL)SNDMSG(hmc,MCM_SETRANGE,(WPARAM)(gd),(LPARAM)(rgst))
   4532 #define MCM_GETMONTHDELTA (MCM_FIRST+19)
   4533 #define MonthCal_GetMonthDelta(hmc) (int)SNDMSG(hmc,MCM_GETMONTHDELTA,0,0)
   4534 #define MCM_SETMONTHDELTA (MCM_FIRST+20)
   4535 #define MonthCal_SetMonthDelta(hmc,n) (int)SNDMSG(hmc,MCM_SETMONTHDELTA,n,0)
   4536 #define MCM_GETMAXTODAYWIDTH (MCM_FIRST+21)
   4537 #define MonthCal_GetMaxTodayWidth(hmc) (DWORD)SNDMSG(hmc,MCM_GETMAXTODAYWIDTH,0,0)
   4538 #define MCM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
   4539 #define MonthCal_SetUnicodeFormat(hwnd,fUnicode) (WINBOOL)SNDMSG((hwnd),MCM_SETUNICODEFORMAT,(WPARAM)(fUnicode),0)
   4540 #define MCM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
   4541 #define MonthCal_GetUnicodeFormat(hwnd) (WINBOOL)SNDMSG((hwnd),MCM_GETUNICODEFORMAT,0,0)
   4542 
   4543 #if NTDDI_VERSION >= 0x06000000
   4544 #define MCMV_MONTH 0
   4545 #define MCMV_YEAR 1
   4546 #define MCMV_DECADE 2
   4547 #define MCMV_CENTURY 3
   4548 #define MCMV_MAX MCMV_CENTURY
   4549 
   4550 #define MCM_GETCURRENTVIEW (MCM_FIRST+22)
   4551 #define MonthCal_GetCurrentView(hmc) (DWORD)SNDMSG (hmc, MCM_GETCURRENTVIEW, 0, 0)
   4552 #define MCM_GETCALENDARCOUNT (MCM_FIRST+23)
   4553 #define MonthCal_GetCalendarCount(hmc) (DWORD)SNDMSG (hmc, MCM_GETCALENDARCOUNT, 0, 0)
   4554 
   4555 #define MCGIP_CALENDARCONTROL 0
   4556 #define MCGIP_NEXT 1
   4557 #define MCGIP_PREV 2
   4558 #define MCGIP_FOOTER 3
   4559 #define MCGIP_CALENDAR 4
   4560 #define MCGIP_CALENDARHEADER 5
   4561 #define MCGIP_CALENDARBODY 6
   4562 #define MCGIP_CALENDARROW 7
   4563 #define MCGIP_CALENDARCELL 8
   4564 
   4565 #define MCGIF_DATE 01
   4566 #define MCGIF_RECT 0x2
   4567 #define MCGIF_NAME 0x4
   4568 
   4569   typedef struct tagMCGRIDINFO {
   4570     UINT cbSize;
   4571     DWORD dwPart;
   4572     DWORD dwFlags;
   4573     int iCalendar;
   4574     int iRow;
   4575     int iCol;
   4576     WINBOOL bSelected;
   4577     SYSTEMTIME stStart;
   4578     SYSTEMTIME stEnd;
   4579     RECT rc;
   4580     PWSTR pszName;
   4581     size_t cchName;
   4582   } MCGRIDINFO,*PMCGRIDINFO;
   4583 
   4584 #define MCM_GETCALENDARGRIDINFO (MCM_FIRST+24)
   4585 #define MonthCal_GetCalendarGridInfo(hmc, pmcGridInfo) (WINBOOL)SNDMSG (hmc, MCM_GETCALENDARGRIDINFO, 0,(LPARAM) (PMCGRIDINFO) (pmcGridInfo))
   4586 #define MCM_GETCALID (MCM_FIRST+27)
   4587 #define MonthCal_GetCALID(hmc) (CALID)SNDMSG (hmc, MCM_GETCALID, 0, 0)
   4588 #define MCM_SETCALID (MCM_FIRST+28)
   4589 #define MonthCal_SetCALID(hmc, calid) SNDMSG (hmc, MCM_SETCALID,(WPARAM) (calid), 0)
   4590 #define MCM_SIZERECTTOMIN (MCM_FIRST+29)
   4591 #define MonthCal_SizeRectToMin(hmc, prc) SNDMSG (hmc, MCM_SIZERECTTOMIN, 0,(LPARAM) (prc))
   4592 #define MCM_SETCALENDARBORDER (MCM_FIRST+30)
   4593 #define MonthCal_SetCalendarBorder(hmc, fset, xyborder) SNDMSG (hmc, MCM_SETCALENDARBORDER,(WPARAM) (fset),(LPARAM) (xyborder))
   4594 #define MCM_GETCALENDARBORDER (MCM_FIRST+31)
   4595 #define MonthCal_GetCalendarBorder(hmc) (int)SNDMSG (hmc, MCM_GETCALENDARBORDER, 0, 0)
   4596 #define MCM_SETCURRENTVIEW (MCM_FIRST+32)
   4597 #define MonthCal_SetCurrentView(hmc, dwNewView) (WINBOOL)SNDMSG (hmc, MCM_SETCURRENTVIEW, 0,(LPARAM) (dwNewView))
   4598 #endif
   4599 
   4600   typedef struct tagNMSELCHANGE {
   4601     NMHDR nmhdr;
   4602     SYSTEMTIME stSelStart;
   4603     SYSTEMTIME stSelEnd;
   4604   } NMSELCHANGE,*LPNMSELCHANGE;
   4605 
   4606 #define MCN_SELCHANGE (MCN_FIRST-3)
   4607 
   4608   typedef struct tagNMDAYSTATE {
   4609     NMHDR nmhdr;
   4610     SYSTEMTIME stStart;
   4611     int cDayState;
   4612     LPMONTHDAYSTATE prgDayState;
   4613   } NMDAYSTATE,*LPNMDAYSTATE;
   4614 
   4615 #define MCN_GETDAYSTATE (MCN_FIRST+3)
   4616 
   4617   typedef NMSELCHANGE NMSELECT,*LPNMSELECT;
   4618 
   4619 #define MCN_SELECT (MCN_FIRST)
   4620 
   4621   typedef struct tagNMVIEWCHANGE {
   4622     NMHDR nmhdr;
   4623     DWORD dwOldView;
   4624     DWORD dwNewView;
   4625   } NMVIEWCHANGE,*LPNMVIEWCHANGE;
   4626 
   4627 #define MCN_VIEWCHANGE (MCN_FIRST-4)
   4628 
   4629 #define MCS_DAYSTATE 0x1
   4630 #define MCS_MULTISELECT 0x2
   4631 #define MCS_WEEKNUMBERS 0x4
   4632 #define MCS_NOTODAYCIRCLE 0x8
   4633 #define MCS_NOTODAY 0x10
   4634 #if NTDDI_VERSION >= 0x06000000
   4635 #define MCS_NOTRAILINGDATES 0x40
   4636 #define MCS_SHORTDAYSOFWEEK 0x80
   4637 #define MCS_NOSELCHANGEONNAV 0x100
   4638 #endif
   4639 
   4640 #define GMR_VISIBLE 0
   4641 #define GMR_DAYSTATE 1
   4642 #endif
   4643 
   4644 #ifndef NODATETIMEPICK
   4645 #define DATETIMEPICK_CLASSW L"SysDateTimePick32"
   4646 #define DATETIMEPICK_CLASSA "SysDateTimePick32"
   4647 
   4648 #define DATETIMEPICK_CLASS __MINGW_NAME_AW(DATETIMEPICK_CLASS)
   4649 
   4650 #if NTDDI_VERSION >= 0x06000000
   4651   typedef struct tagDATETIMEPICKERINFO {
   4652     DWORD cbSize;
   4653     RECT rcCheck;
   4654     DWORD stateCheck;
   4655     RECT rcButton;
   4656     DWORD stateButton;
   4657     HWND hwndEdit;
   4658     HWND hwndUD;
   4659     HWND hwndDropDown;
   4660   } DATETIMEPICKERINFO,*LPDATETIMEPICKERINFO;
   4661 #endif
   4662 
   4663 #define DTM_FIRST 0x1000
   4664 
   4665 #define DTM_GETSYSTEMTIME (DTM_FIRST+1)
   4666 #define DateTime_GetSystemtime(hdp,pst) (DWORD)SNDMSG(hdp,DTM_GETSYSTEMTIME,0,(LPARAM)(pst))
   4667 #define DTM_SETSYSTEMTIME (DTM_FIRST+2)
   4668 #define DateTime_SetSystemtime(hdp,gd,pst) (WINBOOL)SNDMSG(hdp,DTM_SETSYSTEMTIME,(WPARAM)(gd),(LPARAM)(pst))
   4669 #define DTM_GETRANGE (DTM_FIRST+3)
   4670 #define DateTime_GetRange(hdp,rgst) (DWORD)SNDMSG(hdp,DTM_GETRANGE,0,(LPARAM)(rgst))
   4671 #define DTM_SETRANGE (DTM_FIRST+4)
   4672 #define DateTime_SetRange(hdp,gd,rgst) (WINBOOL)SNDMSG(hdp,DTM_SETRANGE,(WPARAM)(gd),(LPARAM)(rgst))
   4673 #define DTM_SETFORMATA (DTM_FIRST+5)
   4674 #define DTM_SETFORMATW (DTM_FIRST+50)
   4675 
   4676 #define DTM_SETFORMAT __MINGW_NAME_AW(DTM_SETFORMAT)
   4677 
   4678 #define DateTime_SetFormat(hdp,sz) (WINBOOL)SNDMSG(hdp,DTM_SETFORMAT,0,(LPARAM)(sz))
   4679 
   4680 #define DTM_SETMCCOLOR (DTM_FIRST+6)
   4681 #define DateTime_SetMonthCalColor(hdp,iColor,clr) SNDMSG(hdp,DTM_SETMCCOLOR,iColor,clr)
   4682 #define DTM_GETMCCOLOR (DTM_FIRST+7)
   4683 #define DateTime_GetMonthCalColor(hdp,iColor) SNDMSG(hdp,DTM_GETMCCOLOR,iColor,0)
   4684 #define DTM_GETMONTHCAL (DTM_FIRST+8)
   4685 #define DateTime_GetMonthCal(hdp) (HWND)SNDMSG(hdp,DTM_GETMONTHCAL,0,0)
   4686 #define DTM_SETMCFONT (DTM_FIRST+9)
   4687 #define DateTime_SetMonthCalFont(hdp,hfont,fRedraw) SNDMSG(hdp,DTM_SETMCFONT,(WPARAM)(hfont),(LPARAM)(fRedraw))
   4688 #define DTM_GETMCFONT (DTM_FIRST+10)
   4689 #define DateTime_GetMonthCalFont(hdp) SNDMSG(hdp,DTM_GETMCFONT,0,0)
   4690 #if NTDDI_VERSION >= 0x06000000
   4691 #define DTM_SETMCSTYLE (DTM_FIRST+11)
   4692 #define DateTime_SetMonthCalStyle(hdp, dwStyle) SNDMSG (hdp, DTM_SETMCSTYLE, 0,(LPARAM)dwStyle)
   4693 #define DTM_GETMCSTYLE (DTM_FIRST+12)
   4694 #define DateTime_GetMonthCalStyle(hdp) SNDMSG (hdp, DTM_GETMCSTYLE, 0, 0)
   4695 #define DTM_CLOSEMONTHCAL (DTM_FIRST+13)
   4696 #define DateTime_CloseMonthCal(hdp) SNDMSG (hdp, DTM_CLOSEMONTHCAL, 0, 0)
   4697 #define DTM_GETDATETIMEPICKERINFO (DTM_FIRST+14)
   4698 #define DateTime_GetDateTimePickerInfo(hdp, pdtpi) SNDMSG (hdp, DTM_GETDATETIMEPICKERINFO, 0,(LPARAM) (pdtpi))
   4699 #define DTM_GETIDEALSIZE (DTM_FIRST+15)
   4700 #define DateTime_GetIdealSize(hdp, psize) (WINBOOL)SNDMSG ((hdp), DTM_GETIDEALSIZE, 0,(LPARAM) (psize))
   4701 #endif
   4702 
   4703 #define DTS_UPDOWN 0x1
   4704 #define DTS_SHOWNONE 0x2
   4705 #define DTS_SHORTDATEFORMAT 0x0
   4706 #define DTS_LONGDATEFORMAT 0x4
   4707 #define DTS_SHORTDATECENTURYFORMAT 0xc
   4708 #define DTS_TIMEFORMAT 0x9
   4709 #define DTS_APPCANPARSE 0x10
   4710 #define DTS_RIGHTALIGN 0x20
   4711 
   4712 #define DTN_DATETIMECHANGE (DTN_FIRST2-6)
   4713 
   4714   typedef struct tagNMDATETIMECHANGE {
   4715     NMHDR nmhdr;
   4716     DWORD dwFlags;
   4717     SYSTEMTIME st;
   4718   } NMDATETIMECHANGE,*LPNMDATETIMECHANGE;
   4719 
   4720 #define DTN_USERSTRINGA (DTN_FIRST2-5)
   4721 #define DTN_USERSTRINGW (DTN_FIRST-5)
   4722 
   4723   typedef struct tagNMDATETIMESTRINGA {
   4724     NMHDR nmhdr;
   4725     LPCSTR pszUserString;
   4726     SYSTEMTIME st;
   4727     DWORD dwFlags;
   4728   } NMDATETIMESTRINGA,*LPNMDATETIMESTRINGA;
   4729 
   4730   typedef struct tagNMDATETIMESTRINGW {
   4731     NMHDR nmhdr;
   4732     LPCWSTR pszUserString;
   4733     SYSTEMTIME st;
   4734     DWORD dwFlags;
   4735   } NMDATETIMESTRINGW,*LPNMDATETIMESTRINGW;
   4736 
   4737 #define DTN_USERSTRING __MINGW_NAME_AW(DTN_USERSTRING)
   4738 #define NMDATETIMESTRING __MINGW_NAME_AW(NMDATETIMESTRING)
   4739 #define LPNMDATETIMESTRING __MINGW_NAME_AW(LPNMDATETIMESTRING)
   4740 
   4741 #define DTN_WMKEYDOWNA (DTN_FIRST2-4)
   4742 #define DTN_WMKEYDOWNW (DTN_FIRST-4)
   4743 
   4744   typedef struct tagNMDATETIMEWMKEYDOWNA {
   4745     NMHDR nmhdr;
   4746     int nVirtKey;
   4747     LPCSTR pszFormat;
   4748     SYSTEMTIME st;
   4749   } NMDATETIMEWMKEYDOWNA,*LPNMDATETIMEWMKEYDOWNA;
   4750 
   4751   typedef struct tagNMDATETIMEWMKEYDOWNW {
   4752     NMHDR nmhdr;
   4753     int nVirtKey;
   4754     LPCWSTR pszFormat;
   4755     SYSTEMTIME st;
   4756   } NMDATETIMEWMKEYDOWNW,*LPNMDATETIMEWMKEYDOWNW;
   4757 
   4758 #define DTN_WMKEYDOWN __MINGW_NAME_AW(DTN_WMKEYDOWN)
   4759 #define NMDATETIMEWMKEYDOWN __MINGW_NAME_AW(NMDATETIMEWMKEYDOWN)
   4760 #define LPNMDATETIMEWMKEYDOWN __MINGW_NAME_AW(LPNMDATETIMEWMKEYDOWN)
   4761 
   4762 #define DTN_FORMATA (DTN_FIRST2-3)
   4763 #define DTN_FORMATW (DTN_FIRST-3)
   4764 
   4765   typedef struct tagNMDATETIMEFORMATA {
   4766     NMHDR nmhdr;
   4767     LPCSTR pszFormat;
   4768     SYSTEMTIME st;
   4769     LPCSTR pszDisplay;
   4770     CHAR szDisplay[64];
   4771   } NMDATETIMEFORMATA,*LPNMDATETIMEFORMATA;
   4772 
   4773   typedef struct tagNMDATETIMEFORMATW {
   4774     NMHDR nmhdr;
   4775     LPCWSTR pszFormat;
   4776     SYSTEMTIME st;
   4777     LPCWSTR pszDisplay;
   4778     WCHAR szDisplay[64];
   4779   } NMDATETIMEFORMATW,*LPNMDATETIMEFORMATW;
   4780 
   4781 #define DTN_FORMAT __MINGW_NAME_AW(DTN_FORMAT)
   4782 #define NMDATETIMEFORMAT __MINGW_NAME_AW(NMDATETIMEFORMAT)
   4783 #define LPNMDATETIMEFORMAT __MINGW_NAME_AW(LPNMDATETIMEFORMAT)
   4784 
   4785 #define DTN_FORMATQUERYA (DTN_FIRST2-2)
   4786 #define DTN_FORMATQUERYW (DTN_FIRST-2)
   4787 
   4788   typedef struct tagNMDATETIMEFORMATQUERYA {
   4789     NMHDR nmhdr;
   4790     LPCSTR pszFormat;
   4791     SIZE szMax;
   4792   } NMDATETIMEFORMATQUERYA,*LPNMDATETIMEFORMATQUERYA;
   4793 
   4794   typedef struct tagNMDATETIMEFORMATQUERYW {
   4795     NMHDR nmhdr;
   4796     LPCWSTR pszFormat;
   4797     SIZE szMax;
   4798   } NMDATETIMEFORMATQUERYW,*LPNMDATETIMEFORMATQUERYW;
   4799 
   4800 #define DTN_FORMATQUERY __MINGW_NAME_AW(DTN_FORMATQUERY)
   4801 #define NMDATETIMEFORMATQUERY __MINGW_NAME_AW(NMDATETIMEFORMATQUERY)
   4802 #define LPNMDATETIMEFORMATQUERY __MINGW_NAME_AW(LPNMDATETIMEFORMATQUERY)
   4803 
   4804 #define DTN_DROPDOWN (DTN_FIRST2 - 1)
   4805 #define DTN_CLOSEUP (DTN_FIRST2)
   4806 
   4807 #define GDTR_MIN 0x1
   4808 #define GDTR_MAX 0x2
   4809 
   4810 #define GDT_ERROR -1
   4811 #define GDT_VALID 0
   4812 #define GDT_NONE 1
   4813 #endif
   4814 
   4815 #ifndef NOIPADDRESS
   4816 #define IPM_CLEARADDRESS (WM_USER+100)
   4817 #define IPM_SETADDRESS (WM_USER+101)
   4818 #define IPM_GETADDRESS (WM_USER+102)
   4819 #define IPM_SETRANGE (WM_USER+103)
   4820 #define IPM_SETFOCUS (WM_USER+104)
   4821 #define IPM_ISBLANK (WM_USER+105)
   4822 
   4823 #define WC_IPADDRESSW L"SysIPAddress32"
   4824 #define WC_IPADDRESSA "SysIPAddress32"
   4825 
   4826 #define WC_IPADDRESS __MINGW_NAME_AW(WC_IPADDRESS)
   4827 
   4828 #define IPN_FIELDCHANGED (IPN_FIRST - 0)
   4829   typedef struct tagNMIPADDRESS {
   4830     NMHDR hdr;
   4831     int iField;
   4832     int iValue;
   4833   } NMIPADDRESS,*LPNMIPADDRESS;
   4834 
   4835 #define MAKEIPRANGE(low,high) ((LPARAM)(WORD)(((BYTE)(high) << 8)+(BYTE)(low)))
   4836 
   4837 #define MAKEIPADDRESS(b1,b2,b3,b4) ((LPARAM)(((DWORD)(b1)<<24)+((DWORD)(b2)<<16)+((DWORD)(b3)<<8)+((DWORD)(b4))))
   4838 
   4839 #define FIRST_IPADDRESS(x) ((x>>24) & 0xff)
   4840 #define SECOND_IPADDRESS(x) ((x>>16) & 0xff)
   4841 #define THIRD_IPADDRESS(x) ((x>>8) & 0xff)
   4842 #define FOURTH_IPADDRESS(x) (x & 0xff)
   4843 #endif
   4844 
   4845 #ifndef NOPAGESCROLLER
   4846 #define WC_PAGESCROLLERW L"SysPager"
   4847 #define WC_PAGESCROLLERA "SysPager"
   4848 
   4849 #define WC_PAGESCROLLER __MINGW_NAME_AW(WC_PAGESCROLLER)
   4850 
   4851 #define PGS_VERT 0x0
   4852 #define PGS_HORZ 0x1
   4853 #define PGS_AUTOSCROLL 0x2
   4854 #define PGS_DRAGNDROP 0x4
   4855 
   4856 #define PGF_INVISIBLE 0
   4857 #define PGF_NORMAL 1
   4858 #define PGF_GRAYED 2
   4859 #define PGF_DEPRESSED 4
   4860 #define PGF_HOT 8
   4861 
   4862 #define PGB_TOPORLEFT 0
   4863 #define PGB_BOTTOMORRIGHT 1
   4864 
   4865 #define PGM_SETCHILD (PGM_FIRST+1)
   4866 #define Pager_SetChild(hwnd,hwndChild) (void)SNDMSG((hwnd),PGM_SETCHILD,0,(LPARAM)(hwndChild))
   4867 
   4868 #define PGM_RECALCSIZE (PGM_FIRST+2)
   4869 #define Pager_RecalcSize(hwnd) (void)SNDMSG((hwnd),PGM_RECALCSIZE,0,0)
   4870 
   4871 #define PGM_FORWARDMOUSE (PGM_FIRST+3)
   4872 #define Pager_ForwardMouse(hwnd,bForward) (void)SNDMSG((hwnd),PGM_FORWARDMOUSE,(WPARAM)(bForward),0)
   4873 
   4874 #define PGM_SETBKCOLOR (PGM_FIRST+4)
   4875 #define Pager_SetBkColor(hwnd,clr) (COLORREF)SNDMSG((hwnd),PGM_SETBKCOLOR,0,(LPARAM)(clr))
   4876 
   4877 #define PGM_GETBKCOLOR (PGM_FIRST+5)
   4878 #define Pager_GetBkColor(hwnd) (COLORREF)SNDMSG((hwnd),PGM_GETBKCOLOR,0,0)
   4879 
   4880 #define PGM_SETBORDER (PGM_FIRST+6)
   4881 #define Pager_SetBorder(hwnd,iBorder) (int)SNDMSG((hwnd),PGM_SETBORDER,0,(LPARAM)(iBorder))
   4882 
   4883 #define PGM_GETBORDER (PGM_FIRST+7)
   4884 #define Pager_GetBorder(hwnd) (int)SNDMSG((hwnd),PGM_GETBORDER,0,0)
   4885 
   4886 #define PGM_SETPOS (PGM_FIRST+8)
   4887 #define Pager_SetPos(hwnd,iPos) (int)SNDMSG((hwnd),PGM_SETPOS,0,(LPARAM)(iPos))
   4888 
   4889 #define PGM_GETPOS (PGM_FIRST+9)
   4890 #define Pager_GetPos(hwnd) (int)SNDMSG((hwnd),PGM_GETPOS,0,0)
   4891 
   4892 #define PGM_SETBUTTONSIZE (PGM_FIRST+10)
   4893 #define Pager_SetButtonSize(hwnd,iSize) (int)SNDMSG((hwnd),PGM_SETBUTTONSIZE,0,(LPARAM)(iSize))
   4894 
   4895 #define PGM_GETBUTTONSIZE (PGM_FIRST+11)
   4896 #define Pager_GetButtonSize(hwnd) (int)SNDMSG((hwnd),PGM_GETBUTTONSIZE,0,0)
   4897 
   4898 #define PGM_GETBUTTONSTATE (PGM_FIRST+12)
   4899 #define Pager_GetButtonState(hwnd,iButton) (DWORD)SNDMSG((hwnd),PGM_GETBUTTONSTATE,0,(LPARAM)(iButton))
   4900 
   4901 #define PGM_GETDROPTARGET CCM_GETDROPTARGET
   4902 #define Pager_GetDropTarget(hwnd,ppdt) (void)SNDMSG((hwnd),PGM_GETDROPTARGET,0,(LPARAM)(ppdt))
   4903 
   4904 #define PGM_SETSCROLLINFO (PGM_FIRST+13)
   4905 #define Pager_SetScrollInfo(hwnd, cTimeOut, cLinesPer, cPixelsPerLine) (void) SNDMSG ((hwnd), PGM_SETSCROLLINFO, cTimeOut, MAKELONG (cLinesPer, cPixelsPerLine))
   4906 
   4907 #define PGN_SCROLL (PGN_FIRST-1)
   4908 
   4909 #define PGF_SCROLLUP 1
   4910 #define PGF_SCROLLDOWN 2
   4911 #define PGF_SCROLLLEFT 4
   4912 #define PGF_SCROLLRIGHT 8
   4913 
   4914 #define PGK_SHIFT 1
   4915 #define PGK_CONTROL 2
   4916 #define PGK_MENU 4
   4917 
   4918 #include <pshpack1.h>
   4919 
   4920   typedef struct {
   4921     NMHDR hdr;
   4922     WORD fwKeys;
   4923     RECT rcParent;
   4924     int iDir;
   4925     int iXpos;
   4926     int iYpos;
   4927     int iScroll;
   4928   }NMPGSCROLL,*LPNMPGSCROLL;
   4929 
   4930 #include <poppack.h>
   4931 
   4932 #define PGN_CALCSIZE (PGN_FIRST-2)
   4933 
   4934 #define PGF_CALCWIDTH 1
   4935 #define PGF_CALCHEIGHT 2
   4936 
   4937   typedef struct {
   4938     NMHDR hdr;
   4939     DWORD dwFlag;
   4940     int iWidth;
   4941     int iHeight;
   4942   } NMPGCALCSIZE,*LPNMPGCALCSIZE;
   4943 
   4944 #define PGN_HOTITEMCHANGE (PGN_FIRST-3)
   4945 
   4946   typedef struct tagNMPGHOTITEM {
   4947     NMHDR hdr;
   4948     int idOld;
   4949     int idNew;
   4950     DWORD dwFlags;
   4951   } NMPGHOTITEM,*LPNMPGHOTITEM;
   4952 #endif
   4953 
   4954 #ifndef NONATIVEFONTCTL
   4955 
   4956 #define WC_NATIVEFONTCTLW L"NativeFontCtl"
   4957 #define WC_NATIVEFONTCTLA "NativeFontCtl"
   4958 
   4959 #define WC_NATIVEFONTCTL __MINGW_NAME_AW(WC_NATIVEFONTCTL)
   4960 
   4961 #define NFS_EDIT 0x1
   4962 #define NFS_STATIC 0x2
   4963 #define NFS_LISTCOMBO 0x4
   4964 #define NFS_BUTTON 0x8
   4965 #define NFS_ALL 0x10
   4966 #define NFS_USEFONTASSOC 0x20
   4967 #endif
   4968 
   4969 #ifndef NOBUTTON
   4970 #define WC_BUTTONA "Button"
   4971 #define WC_BUTTONW L"Button"
   4972 
   4973 #define WC_BUTTON __MINGW_NAME_AW(WC_BUTTON)
   4974 
   4975 #define BUTTON_IMAGELIST_ALIGN_LEFT 0
   4976 #define BUTTON_IMAGELIST_ALIGN_RIGHT 1
   4977 #define BUTTON_IMAGELIST_ALIGN_TOP 2
   4978 #define BUTTON_IMAGELIST_ALIGN_BOTTOM 3
   4979 #define BUTTON_IMAGELIST_ALIGN_CENTER 4
   4980 
   4981   typedef struct {
   4982     HIMAGELIST himl;
   4983     RECT margin;
   4984     UINT uAlign;
   4985   } BUTTON_IMAGELIST,*PBUTTON_IMAGELIST;
   4986 
   4987 #define BCM_GETIDEALSIZE (BCM_FIRST+0x1)
   4988 #define Button_GetIdealSize(hwnd,psize) (WINBOOL)SNDMSG((hwnd),BCM_GETIDEALSIZE,0,(LPARAM)(psize))
   4989 
   4990 #define BCM_SETIMAGELIST (BCM_FIRST+0x2)
   4991 #define Button_SetImageList(hwnd,pbuttonImagelist) (WINBOOL)SNDMSG((hwnd),BCM_SETIMAGELIST,0,(LPARAM)(pbuttonImagelist))
   4992 
   4993 #define BCM_GETIMAGELIST (BCM_FIRST+0x3)
   4994 #define Button_GetImageList(hwnd,pbuttonImagelist) (WINBOOL)SNDMSG((hwnd),BCM_GETIMAGELIST,0,(LPARAM)(pbuttonImagelist))
   4995 
   4996 #define BCM_SETTEXTMARGIN (BCM_FIRST+0x4)
   4997 #define Button_SetTextMargin(hwnd,pmargin) (WINBOOL)SNDMSG((hwnd),BCM_SETTEXTMARGIN,0,(LPARAM)(pmargin))
   4998 #define BCM_GETTEXTMARGIN (BCM_FIRST+0x5)
   4999 #define Button_GetTextMargin(hwnd,pmargin) (WINBOOL)SNDMSG((hwnd),BCM_GETTEXTMARGIN,0,(LPARAM)(pmargin))
   5000 
   5001   typedef struct tagNMBCHOTITEM {
   5002     NMHDR hdr;
   5003     DWORD dwFlags;
   5004   } NMBCHOTITEM,*LPNMBCHOTITEM;
   5005 
   5006 #define BCN_HOTITEMCHANGE (BCN_FIRST+0x1)
   5007 
   5008 #define BST_HOT 0x0200
   5009 #if NTDDI_VERSION >= 0x06000000
   5010 #define BST_DROPDOWNPUSHED 0x0400
   5011 
   5012 #define BS_SPLITBUTTON __MSABI_LONG (0xc)
   5013 #define BS_DEFSPLITBUTTON __MSABI_LONG (0xd)
   5014 #define BS_COMMANDLINK __MSABI_LONG (0xe)
   5015 #define BS_DEFCOMMANDLINK __MSABI_LONG (0xf)
   5016 
   5017 #define BCSIF_GLYPH 0x0001
   5018 #define BCSIF_IMAGE 0x0002
   5019 #define BCSIF_STYLE 0x0004
   5020 #define BCSIF_SIZE 0x0008
   5021 
   5022 #define BCSS_NOSPLIT 0x0001
   5023 #define BCSS_STRETCH 0x0002
   5024 #define BCSS_ALIGNLEFT 0x0004
   5025 #define BCSS_IMAGE 0x0008
   5026 
   5027   typedef struct tagBUTTON_SPLITINFO {
   5028     UINT mask;
   5029     HIMAGELIST himlGlyph;
   5030     UINT uSplitStyle;
   5031     SIZE size;
   5032   } BUTTON_SPLITINFO,*PBUTTON_SPLITINFO;
   5033 
   5034 #define BCM_SETDROPDOWNSTATE (BCM_FIRST+0x6)
   5035 #define Button_SetDropDownState(hwnd, fDropDown) (WINBOOL)SNDMSG ((hwnd), BCM_SETDROPDOWNSTATE,(WPARAM) (fDropDown), 0)
   5036 #define BCM_SETSPLITINFO (BCM_FIRST+0x7)
   5037 #define Button_SetSplitInfo(hwnd, pInfo) (WINBOOL)SNDMSG ((hwnd), BCM_SETSPLITINFO, 0,(LPARAM) (pInfo))
   5038 #define BCM_GETSPLITINFO (BCM_FIRST+0x8)
   5039 #define Button_GetSplitInfo(hwnd, pInfo) (WINBOOL)SNDMSG ((hwnd), BCM_GETSPLITINFO, 0,(LPARAM) (pInfo))
   5040 #define BCM_SETNOTE (BCM_FIRST+0x9)
   5041 #define Button_SetNote(hwnd, psz) (WINBOOL)SNDMSG ((hwnd), BCM_SETNOTE, 0,(LPARAM) (psz))
   5042 #define BCM_GETNOTE (BCM_FIRST+0xa)
   5043 #define Button_GetNote(hwnd, psz, pcc) (WINBOOL)SNDMSG ((hwnd), BCM_GETNOTE,(WPARAM)pcc,(LPARAM)psz)
   5044 #define BCM_GETNOTELENGTH (BCM_FIRST+0xb)
   5045 #define Button_GetNoteLength(hwnd) \
   5046   (LRESULT)SNDMSG((hwnd), BCM_GETNOTELENGTH, 0, 0)
   5047 #if NTDDI_VERSION >= 0x06000000
   5048 #define BCM_SETSHIELD (BCM_FIRST+0xc)
   5049 #define Button_SetElevationRequiredState(hwnd, fRequired) (LRESULT)SNDMSG ((hwnd), BCM_SETSHIELD, 0,(LPARAM)fRequired)
   5050 #endif
   5051 
   5052 #define BCCL_NOGLYPH (HIMAGELIST) (-1)
   5053 
   5054   typedef struct tagNMBCDROPDOWN {
   5055     NMHDR hdr;
   5056     RECT rcButton;
   5057   } NMBCDROPDOWN,*LPNMBCDROPDOWN;
   5058 
   5059 #define BCN_DROPDOWN (BCN_FIRST + 0x0002)
   5060 #endif
   5061 #endif
   5062 
   5063 #ifndef NOSTATIC
   5064 #define WC_STATICA "Static"
   5065 #define WC_STATICW L"Static"
   5066 
   5067 #define WC_STATIC __MINGW_NAME_AW(WC_STATIC)
   5068 #endif
   5069 
   5070 #ifndef NOEDIT
   5071 #define WC_EDITA "Edit"
   5072 #define WC_EDITW L"Edit"
   5073 
   5074 #define WC_EDIT __MINGW_NAME_AW(WC_EDIT)
   5075 
   5076 #define EM_SETCUEBANNER (ECM_FIRST+1)
   5077 #define Edit_SetCueBannerText(hwnd,lpcwText) (WINBOOL)SNDMSG((hwnd),EM_SETCUEBANNER,0,(LPARAM)(lpcwText))
   5078 #define EM_GETCUEBANNER (ECM_FIRST+2)
   5079 #define Edit_GetCueBannerText(hwnd,lpwText,cchText) (WINBOOL)SNDMSG((hwnd),EM_GETCUEBANNER,(WPARAM)(lpwText),(LPARAM)(cchText))
   5080 
   5081   typedef struct _tagEDITBALLOONTIP {
   5082     DWORD cbStruct;
   5083     LPCWSTR pszTitle;
   5084     LPCWSTR pszText;
   5085     INT ttiIcon;
   5086   } EDITBALLOONTIP,*PEDITBALLOONTIP;
   5087 #define EM_SHOWBALLOONTIP (ECM_FIRST+3)
   5088 #define Edit_ShowBalloonTip(hwnd,peditballoontip) (WINBOOL)SNDMSG((hwnd),EM_SHOWBALLOONTIP,0,(LPARAM)(peditballoontip))
   5089 #define EM_HIDEBALLOONTIP (ECM_FIRST+4)
   5090 #define Edit_HideBalloonTip(hwnd) (WINBOOL)SNDMSG((hwnd),EM_HIDEBALLOONTIP,0,0)
   5091 #if NTDDI_VERSION >= 0x06000000
   5092 #define EM_SETHILITE (ECM_FIRST+5)
   5093 #define Edit_SetHilite(hwndCtl, ichStart, ichEnd) ((void)SNDMSG ((hwndCtl), EM_SETHILITE,(ichStart),(ichEnd)))
   5094 #define EM_GETHILITE (ECM_FIRST+6)
   5095 #define Edit_GetHilite(hwndCtl) ((DWORD)SNDMSG ((hwndCtl), EM_GETHILITE, (WPARAM) 0, (LPARAM) 0))
   5096 #endif
   5097 #define EM_NOSETFOCUS (ECM_FIRST+7)
   5098 #define Edit_NoSetFocus(hwndCtl) ((DWORD)SNDMSG ((hwndCtl), EM_NOSETFOCUS, (WPARAM) 0, (LPARAM) 0))
   5099 #define EM_TAKEFOCUS (ECM_FIRST+8)
   5100 #define Edit_TakeFocus(hwndCtl) ((DWORD)SNDMSG ((hwndCtl), EM_TAKEFOCUS, (WPARAM) 0, (LPARAM) 0))
   5101 
   5102 #endif
   5103 
   5104 #ifndef NOLISTBOX
   5105 #define WC_LISTBOXA "ListBox"
   5106 #define WC_LISTBOXW L"ListBox"
   5107 
   5108 #define WC_LISTBOX __MINGW_NAME_AW(WC_LISTBOX)
   5109 #endif
   5110 
   5111 #ifndef NOCOMBOBOX
   5112 #define WC_COMBOBOXA "ComboBox"
   5113 #define WC_COMBOBOXW L"ComboBox"
   5114 
   5115 #define WC_COMBOBOX __MINGW_NAME_AW(WC_COMBOBOX)
   5116 
   5117 #endif /* This endif is misplaced ... nevertheless it seems to be the same as VS does.  The Combobox defines are always defined.   */
   5118 
   5119 #define CB_SETMINVISIBLE (CBM_FIRST+1)
   5120 #define CB_GETMINVISIBLE (CBM_FIRST+2)
   5121 #define CB_SETCUEBANNER (CBM_FIRST+3)
   5122 #define CB_GETCUEBANNER (CBM_FIRST+4)
   5123 
   5124 #define ComboBox_SetMinVisible(hwnd, iMinVisible) (WINBOOL)SNDMSG ((hwnd), CB_SETMINVISIBLE,(WPARAM) (iMinVisible), 0)
   5125 #define ComboBox_GetMinVisible(hwnd) (int)SNDMSG ((hwnd), CB_GETMINVISIBLE, 0, 0)
   5126 #define ComboBox_SetCueBannerText(hwnd, lpcwText) (WINBOOL)SNDMSG ((hwnd), CB_SETCUEBANNER, 0,(LPARAM) (lpcwText))
   5127 #define ComboBox_GetCueBannerText(hwnd, lpwText, cchText) (WINBOOL)SNDMSG ((hwnd), CB_GETCUEBANNER,(WPARAM) (lpwText),(LPARAM) (cchText))
   5128 
   5129 #ifndef NOSCROLLBAR
   5130 #define WC_SCROLLBARA "ScrollBar"
   5131 #define WC_SCROLLBARW L"ScrollBar"
   5132 
   5133 #define WC_SCROLLBAR __MINGW_NAME_AW(WC_SCROLLBAR)
   5134 
   5135 #endif
   5136 
   5137 #define LWS_TRANSPARENT 0x1
   5138 #define LWS_IGNORERETURN 0x2
   5139 #if NTDDI_VERSION >= 0x06000000
   5140 #define LWS_NOPREFIX 0x4
   5141 #define LWS_USEVISUALSTYLE 0x8
   5142 #define LWS_USECUSTOMTEXT 0x10
   5143 #define LWS_RIGHT 0x20
   5144 #endif
   5145 
   5146 #define LIF_ITEMINDEX 0x1
   5147 #define LIF_STATE 0x2
   5148 #define LIF_ITEMID 0x4
   5149 #define LIF_URL 0x8
   5150 
   5151 #define LIS_FOCUSED 0x1
   5152 #define LIS_ENABLED 0x2
   5153 #define LIS_VISITED 0x4
   5154 #if NTDDI_VERSION >= 0x06000000
   5155 #define LIS_HOTTRACK 0x8
   5156 #define LIS_DEFAULTCOLORS 0x10
   5157 #endif
   5158 
   5159 #define LM_HITTEST (WM_USER+0x300)
   5160 #define LM_GETIDEALHEIGHT (WM_USER+0x301)
   5161 #define LM_SETITEM (WM_USER+0x302)
   5162 #define LM_GETITEM (WM_USER+0x303)
   5163 
   5164 #if NTDDI_VERSION >= 0x06000000
   5165 #ifndef NOTASKDIALOG
   5166 
   5167 #include <pshpack1.h>
   5168 
   5169   typedef HRESULT (CALLBACK *PFTASKDIALOGCALLBACK) (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, LONG_PTR lpRefData);
   5170 
   5171   enum _TASKDIALOG_FLAGS {
   5172     TDF_ENABLE_HYPERLINKS = 0x1,
   5173     TDF_USE_HICON_MAIN = 0x2,
   5174     TDF_USE_HICON_FOOTER = 0x4,
   5175     TDF_ALLOW_DIALOG_CANCELLATION = 0x8,
   5176     TDF_USE_COMMAND_LINKS = 0x10,
   5177     TDF_USE_COMMAND_LINKS_NO_ICON = 0x20,
   5178     TDF_EXPAND_FOOTER_AREA = 0x40,
   5179     TDF_EXPANDED_BY_DEFAULT = 0x80,
   5180     TDF_VERIFICATION_FLAG_CHECKED = 0x100,
   5181     TDF_SHOW_PROGRESS_BAR = 0x0200,
   5182     TDF_SHOW_MARQUEE_PROGRESS_BAR = 0x0400,
   5183     TDF_CALLBACK_TIMER = 0x0800,
   5184     TDF_POSITION_RELATIVE_TO_WINDOW = 0x1000,
   5185     TDF_RTL_LAYOUT = 0x2000,
   5186     TDF_NO_DEFAULT_RADIO_BUTTON = 0x4000,
   5187     TDF_CAN_BE_MINIMIZED = 0x8000,
   5188 #if NTDDI_VERSION >= 0x06020000
   5189     TDF_NO_SET_FOREGROUND = 0x10000,
   5190 #endif
   5191     TDF_SIZE_TO_CONTENT = 0x1000000
   5192   };
   5193 
   5194   typedef int TASKDIALOG_FLAGS;
   5195 
   5196   typedef enum _TASKDIALOG_MESSAGES {
   5197     TDM_NAVIGATE_PAGE = WM_USER+101,
   5198     TDM_CLICK_BUTTON = WM_USER+102,
   5199     TDM_SET_MARQUEE_PROGRESS_BAR = WM_USER+103,
   5200     TDM_SET_PROGRESS_BAR_STATE = WM_USER+104,
   5201     TDM_SET_PROGRESS_BAR_RANGE = WM_USER+105,
   5202     TDM_SET_PROGRESS_BAR_POS = WM_USER+106,
   5203     TDM_SET_PROGRESS_BAR_MARQUEE = WM_USER+107,
   5204     TDM_SET_ELEMENT_TEXT = WM_USER+108,
   5205     TDM_CLICK_RADIO_BUTTON = WM_USER+110,
   5206     TDM_ENABLE_BUTTON = WM_USER+111,
   5207     TDM_ENABLE_RADIO_BUTTON = WM_USER+112,
   5208     TDM_CLICK_VERIFICATION = WM_USER+113,
   5209     TDM_UPDATE_ELEMENT_TEXT = WM_USER+114,
   5210     TDM_SET_BUTTON_ELEVATION_REQUIRED_STATE = WM_USER+115,
   5211     TDM_UPDATE_ICON = WM_USER+116
   5212   } TASKDIALOG_MESSAGES;
   5213 
   5214   typedef enum _TASKDIALOG_NOTIFICATIONS {
   5215     TDN_CREATED = 0,
   5216     TDN_NAVIGATED = 1,
   5217     TDN_BUTTON_CLICKED = 2,
   5218     TDN_HYPERLINK_CLICKED = 3,
   5219     TDN_TIMER = 4,
   5220     TDN_DESTROYED = 5,
   5221     TDN_RADIO_BUTTON_CLICKED = 6,
   5222     TDN_DIALOG_CONSTRUCTED = 7,
   5223     TDN_VERIFICATION_CLICKED = 8,
   5224     TDN_HELP = 9,
   5225     TDN_EXPANDO_BUTTON_CLICKED = 10
   5226   } TASKDIALOG_NOTIFICATIONS;
   5227 
   5228   typedef struct _TASKDIALOG_BUTTON {
   5229     int nButtonID;
   5230     PCWSTR pszButtonText;
   5231   } TASKDIALOG_BUTTON;
   5232 
   5233   typedef enum _TASKDIALOG_ELEMENTS {
   5234     TDE_CONTENT,
   5235     TDE_EXPANDED_INFORMATION,
   5236     TDE_FOOTER,
   5237     TDE_MAIN_INSTRUCTION
   5238   } TASKDIALOG_ELEMENTS;
   5239 
   5240   typedef enum _TASKDIALOG_ICON_ELEMENTS {
   5241     TDIE_ICON_MAIN,
   5242     TDIE_ICON_FOOTER
   5243   } TASKDIALOG_ICON_ELEMENTS;
   5244 
   5245 #define TD_WARNING_ICON MAKEINTRESOURCEW (-1)
   5246 #define TD_ERROR_ICON MAKEINTRESOURCEW (-2)
   5247 #define TD_INFORMATION_ICON MAKEINTRESOURCEW (-3)
   5248 #define TD_SHIELD_ICON MAKEINTRESOURCEW (-4)
   5249 
   5250   enum _TASKDIALOG_COMMON_BUTTON_FLAGS {
   5251     TDCBF_OK_BUTTON = 0x1,
   5252     TDCBF_YES_BUTTON = 0x2,
   5253     TDCBF_NO_BUTTON = 0x4,
   5254     TDCBF_CANCEL_BUTTON = 0x8,
   5255     TDCBF_RETRY_BUTTON = 0x10,
   5256     TDCBF_CLOSE_BUTTON = 0x20
   5257   };
   5258 
   5259   typedef int TASKDIALOG_COMMON_BUTTON_FLAGS;
   5260 
   5261   typedef struct _TASKDIALOGCONFIG {
   5262     UINT cbSize;
   5263     HWND hwndParent;
   5264     HINSTANCE hInstance;
   5265     TASKDIALOG_FLAGS dwFlags;
   5266     TASKDIALOG_COMMON_BUTTON_FLAGS dwCommonButtons;
   5267     PCWSTR pszWindowTitle;
   5268     __C89_NAMELESS union {
   5269       HICON hMainIcon;
   5270       PCWSTR pszMainIcon;
   5271     } DUMMYUNIONNAME;
   5272     PCWSTR pszMainInstruction;
   5273     PCWSTR pszContent;
   5274     UINT cButtons;
   5275     const TASKDIALOG_BUTTON *pButtons;
   5276     int nDefaultButton;
   5277     UINT cRadioButtons;
   5278     const TASKDIALOG_BUTTON *pRadioButtons;
   5279     int nDefaultRadioButton;
   5280     PCWSTR pszVerificationText;
   5281     PCWSTR pszExpandedInformation;
   5282     PCWSTR pszExpandedControlText;
   5283     PCWSTR pszCollapsedControlText;
   5284     __C89_NAMELESS union {
   5285       HICON hFooterIcon;
   5286       PCWSTR pszFooterIcon;
   5287     } DUMMYUNIONNAME2;
   5288     PCWSTR pszFooter;
   5289     PFTASKDIALOGCALLBACK pfCallback;
   5290     LONG_PTR lpCallbackData;
   5291     UINT cxWidth;
   5292   } TASKDIALOGCONFIG;
   5293 
   5294   WINCOMMCTRLAPI HRESULT WINAPI TaskDialogIndirect (const TASKDIALOGCONFIG *pTaskConfig, int *pnButton, int *pnRadioButton, WINBOOL *pfVerificationFlagChecked);
   5295   WINCOMMCTRLAPI HRESULT WINAPI TaskDialog (HWND hwndOwner, HINSTANCE hInstance, PCWSTR pszWindowTitle, PCWSTR pszMainInstruction, PCWSTR pszContent, TASKDIALOG_COMMON_BUTTON_FLAGS dwCommonButtons, PCWSTR pszIcon, int *pnButton);
   5296 
   5297 #include <poppack.h>
   5298 
   5299 #endif
   5300 #endif
   5301 
   5302 #ifndef NOMUI
   5303   void WINAPI InitMUILanguage(LANGID uiLang);
   5304   LANGID WINAPI GetMUILanguage(void);
   5305 #endif
   5306 
   5307 #ifndef NO_COMMCTRL_DA
   5308 #define __COMMCTRL_DA_DEFINED__
   5309 
   5310 #define DA_LAST (0x7fffffff)
   5311 #define DA_ERR (-1)
   5312 
   5313   typedef int (CALLBACK *PFNDAENUMCALLBACK) (void *p, void *pData);
   5314   typedef int (CALLBACK *PFNDAENUMCALLBACKCONST) (const void *p, void *pData);
   5315   typedef int (CALLBACK *PFNDACOMPARE) (void *p1, void *p2, LPARAM lParam);
   5316   typedef int (CALLBACK *PFNDACOMPARECONST) (const void *p1, const void *p2, LPARAM lParam);
   5317   struct _DSA;
   5318   typedef struct _DSA *HDSA;
   5319 
   5320   WINCOMMCTRLAPI HDSA WINAPI DSA_Create (int cbItem, int cItemGrow);
   5321   WINCOMMCTRLAPI WINBOOL WINAPI DSA_Destroy (HDSA hdsa);
   5322   WINCOMMCTRLAPI void WINAPI DSA_DestroyCallback (HDSA hdsa, PFNDAENUMCALLBACK pfnCB, void *pData);
   5323 #ifdef __cplusplus
   5324   extern "C++" __inline void DSA_DestroyCallback (HDSA hdsa, PFNDAENUMCALLBACKCONST pfnCB, void *pData) {
   5325     DSA_DestroyCallback (hdsa,(PFNDAENUMCALLBACK)pfnCB, pData);
   5326   }
   5327 #endif
   5328   WINCOMMCTRLAPI WINBOOL WINAPI DSA_DeleteItem (HDSA hdsa, int i);
   5329   WINCOMMCTRLAPI WINBOOL WINAPI DSA_DeleteAllItems (HDSA hdsa);
   5330   WINCOMMCTRLAPI void WINAPI DSA_EnumCallback (HDSA hdsa, PFNDAENUMCALLBACK pfnCB, void *pData);
   5331 #ifdef __cplusplus
   5332   extern "C++" __inline void DSA_EnumCallback (HDSA hdsa, PFNDAENUMCALLBACKCONST pfnCB, void *pData) {
   5333     DSA_EnumCallback (hdsa,(PFNDAENUMCALLBACK)pfnCB, pData);
   5334   }
   5335 #endif
   5336   WINCOMMCTRLAPI int WINAPI DSA_InsertItem (HDSA hdsa, int i, const void *pitem);
   5337   WINCOMMCTRLAPI PVOID WINAPI DSA_GetItemPtr (HDSA hdsa, int i);
   5338   WINCOMMCTRLAPI WINBOOL WINAPI DSA_GetItem (HDSA hdsa, int i, void *pitem);
   5339   WINCOMMCTRLAPI WINBOOL WINAPI DSA_SetItem (HDSA hdsa, int i, const void *pitem);
   5340 
   5341 #define DSA_GetItemCount(hdsa) (*(int *) (hdsa))
   5342 #define DSA_AppendItem(hdsa, pitem) DSA_InsertItem (hdsa, DA_LAST, pitem)
   5343 
   5344 #if NTDDI_VERSION >= 0x06000000
   5345   WINCOMMCTRLAPI HDSA WINAPI DSA_Clone (HDSA hdsa);
   5346   WINCOMMCTRLAPI ULONGLONG WINAPI DSA_GetSize (HDSA hdsa);
   5347   WINCOMMCTRLAPI WINBOOL WINAPI DSA_Sort (HDSA pdsa, PFNDACOMPARE pfnCompare, LPARAM lParam);
   5348 #ifdef __cplusplus
   5349   extern "C++" __inline WINBOOL DSA_Sort (HDSA hdsa, PFNDACOMPARECONST pfnCompare, LPARAM lParam) {
   5350     return DSA_Sort (hdsa,(PFNDACOMPARE) (pfnCompare), lParam);
   5351   }
   5352 #endif
   5353 #endif
   5354 #define DSA_APPEND DA_LAST
   5355 #define DSA_ERR DA_ERR
   5356 
   5357 #define PFNDSAENUMCALLBACK PFNDAENUMCALLBACK
   5358 #define PFNDSAENUMCALLBACKCONST PFNDAENUMCALLBACKCONST
   5359 #define PFNDSACOMPARE PFNDACOMPARE
   5360 #define PFNDSACOMPARECONST PFNDACOMPARECONST
   5361 
   5362   struct _DPA;
   5363   typedef struct _DPA *HDPA;
   5364   WINCOMMCTRLAPI HDPA WINAPI DPA_Create (int cItemGrow);
   5365   WINCOMMCTRLAPI HDPA WINAPI DPA_CreateEx (int cpGrow, HANDLE hheap);
   5366   WINCOMMCTRLAPI HDPA WINAPI DPA_Clone (const HDPA hdpa, HDPA hdpaNew);
   5367   WINCOMMCTRLAPI WINBOOL WINAPI DPA_Destroy (HDPA hdpa);
   5368   WINCOMMCTRLAPI void WINAPI DPA_DestroyCallback (HDPA hdpa, PFNDAENUMCALLBACK pfnCB, void *pData);
   5369 #ifdef __cplusplus
   5370   extern "C++" __inline void DPA_DestroyCallback (HDPA hdpa, PFNDAENUMCALLBACKCONST pfnCB, void *pData) {
   5371     DPA_DestroyCallback (hdpa,(PFNDAENUMCALLBACK)pfnCB, pData);
   5372   }
   5373 #endif
   5374   WINCOMMCTRLAPI PVOID WINAPI DPA_DeletePtr (HDPA hdpa, int i);
   5375   WINCOMMCTRLAPI WINBOOL WINAPI DPA_DeleteAllPtrs (HDPA hdpa);
   5376   WINCOMMCTRLAPI void WINAPI DPA_EnumCallback (HDPA hdpa, PFNDAENUMCALLBACK pfnCB, void *pData);
   5377 #ifdef __cplusplus
   5378   extern "C++" __inline void DPA_EnumCallback (HDPA hdpa, PFNDAENUMCALLBACKCONST pfnCB, void *pData) {
   5379     DPA_EnumCallback (hdpa,(PFNDAENUMCALLBACK)pfnCB, pData);
   5380   }
   5381 #endif
   5382   WINCOMMCTRLAPI WINBOOL WINAPI DPA_Grow (HDPA pdpa, int cp);
   5383   WINCOMMCTRLAPI int WINAPI DPA_InsertPtr (HDPA hdpa, int i, void *p);
   5384   WINCOMMCTRLAPI WINBOOL WINAPI DPA_SetPtr (HDPA hdpa, int i, void *p);
   5385   WINCOMMCTRLAPI PVOID WINAPI DPA_GetPtr (HDPA hdpa, INT_PTR i);
   5386   WINCOMMCTRLAPI int WINAPI DPA_GetPtrIndex (HDPA hdpa, const void *p);
   5387 
   5388 #define DPA_GetPtrCount(hdpa) (*(int *) (hdpa))
   5389 #define DPA_SetPtrCount(hdpa, cItems) (*(int *) (hdpa) = (cItems))
   5390 #define DPA_FastDeleteLastPtr(hdpa) (-- *(int *) (hdpa))
   5391 #define DPA_GetPtrPtr(hdpa) (*((void ***) ((BYTE *) (hdpa) + sizeof (void *))))
   5392 #define DPA_FastGetPtr(hdpa, i) (DPA_GetPtrPtr (hdpa)[i])
   5393 #define DPA_AppendPtr(hdpa, pitem) DPA_InsertPtr (hdpa, DA_LAST, pitem)
   5394 
   5395 #if NTDDI_VERSION >= 0x06000000
   5396   WINCOMMCTRLAPI ULONGLONG WINAPI DPA_GetSize (HDPA hdpa);
   5397 #endif
   5398   WINCOMMCTRLAPI WINBOOL WINAPI DPA_Sort (HDPA hdpa, PFNDACOMPARE pfnCompare, LPARAM lParam);
   5399 #ifdef __cplusplus
   5400   extern "C++" __inline WINBOOL DPA_Sort (HDPA hdpa, PFNDACOMPARECONST pfnCompare, LPARAM lParam) {
   5401     return DPA_Sort (hdpa,(PFNDACOMPARE) (pfnCompare), lParam);
   5402   }
   5403 #endif
   5404 
   5405   typedef struct _DPASTREAMINFO {
   5406     int iPos;
   5407     void *pvItem;
   5408   } DPASTREAMINFO;
   5409 
   5410   struct IStream;
   5411   typedef HRESULT (CALLBACK *PFNDPASTREAM) (DPASTREAMINFO *pinfo, struct IStream *pstream, void *pvInstData);
   5412   WINCOMMCTRLAPI HRESULT WINAPI DPA_LoadStream (HDPA *phdpa, PFNDPASTREAM pfn, struct IStream *pstream, void *pvInstData);
   5413   WINCOMMCTRLAPI HRESULT WINAPI DPA_SaveStream (HDPA hdpa, PFNDPASTREAM pfn, struct IStream *pstream, void *pvInstData);
   5414 
   5415 #define DPAM_SORTED 0x1
   5416 #define DPAM_NORMAL 0x2
   5417 #define DPAM_UNION 0x4
   5418 #define DPAM_INTERSECT 0x8
   5419 
   5420   typedef void *(CALLBACK *PFNDPAMERGE) (UINT uMsg, void *pvDest, void *pvSrc, LPARAM lParam);
   5421   typedef const void *(CALLBACK *PFNDPAMERGECONST) (UINT uMsg, const void *pvDest, const void *pvSrc, LPARAM lParam);
   5422 
   5423 #define DPAMM_MERGE 1
   5424 #define DPAMM_DELETE 2
   5425 #define DPAMM_INSERT 3
   5426 
   5427   WINCOMMCTRLAPI WINBOOL WINAPI DPA_Merge (HDPA hdpaDest, HDPA hdpaSrc, DWORD dwFlags, PFNDACOMPARE pfnCompare, PFNDPAMERGE pfnMerge, LPARAM lParam);
   5428 #ifdef __cplusplus
   5429   extern "C++" __inline WINBOOL DPA_Merge (HDPA hdpaDest, HDPA hdpaSrc, DWORD dwFlags, PFNDACOMPARECONST pfnCompare, PFNDPAMERGECONST pfnMerge, LPARAM lParam) {
   5430     return DPA_Merge (hdpaDest, hdpaSrc, dwFlags,(PFNDACOMPARE)pfnCompare,(PFNDPAMERGE)pfnMerge, lParam);
   5431   }
   5432 #endif
   5433 
   5434 #define DPAS_SORTED 0x1
   5435 #define DPAS_INSERTBEFORE 0x2
   5436 #define DPAS_INSERTAFTER 0x4
   5437 
   5438   WINCOMMCTRLAPI int WINAPI DPA_Search (HDPA hdpa, void *pFind, int iStart, PFNDACOMPARE pfnCompare, LPARAM lParam, UINT options);
   5439 #ifdef __cplusplus
   5440   extern "C++" __inline int DPA_Search (HDPA hdpa, const void *pFind, int iStart, PFNDACOMPARECONST pfnCompare, LPARAM lParam, UINT options) {
   5441     return DPA_Search (hdpa, const_cast<void *> (pFind), iStart,(PFNDACOMPARE)pfnCompare, lParam, options);
   5442   }
   5443 #endif
   5444 
   5445 #define DPA_SortedInsertPtr(hdpa, pFind, iStart, pfnCompare, lParam, options, pitem) DPA_InsertPtr (hdpa, DPA_Search (hdpa, pFind, iStart, pfnCompare, lParam,(DPAS_SORTED | (options))),(pitem))
   5446 #define DPA_APPEND DA_LAST
   5447 #define DPA_ERR DA_ERR
   5448 
   5449 #define PFNDPAENUMCALLBACK PFNDAENUMCALLBACK
   5450 #define PFNDPAENUMCALLBACKCONST PFNDAENUMCALLBACKCONST
   5451 #define PFNDPACOMPARE PFNDACOMPARE
   5452 #define PFNDPACOMPARECONST PFNDACOMPARECONST
   5453 #endif
   5454 
   5455 WINCOMMCTRLAPI WINBOOL WINAPI Str_SetPtrW (LPWSTR *ppsz, LPCWSTR psz);
   5456 
   5457 #ifndef NOTRACKMOUSEEVENT
   5458 
   5459 #ifndef WM_MOUSEHOVER
   5460 #define WM_MOUSEHOVER 0x2a1
   5461 #define WM_MOUSELEAVE 0x2a3
   5462 #endif
   5463 
   5464 #ifndef TME_HOVER
   5465 #define TME_HOVER 0x1
   5466 #define TME_LEAVE 0x2
   5467 #define TME_NONCLIENT 0x10
   5468 #define TME_QUERY 0x40000000
   5469 #define TME_CANCEL 0x80000000
   5470 
   5471 #define HOVER_DEFAULT 0xffffffff
   5472 
   5473   typedef struct tagTRACKMOUSEEVENT {
   5474     DWORD cbSize;
   5475     DWORD dwFlags;
   5476     HWND hwndTrack;
   5477     DWORD dwHoverTime;
   5478   } TRACKMOUSEEVENT,*LPTRACKMOUSEEVENT;
   5479 #endif
   5480 
   5481   WINCOMMCTRLAPI WINBOOL WINAPI _TrackMouseEvent(LPTRACKMOUSEEVENT lpEventTrack);
   5482 #endif
   5483 
   5484 #ifndef NOFLATSBAPIS
   5485 
   5486 #define WSB_PROP_CYVSCROLL __MSABI_LONG(0x1)
   5487 #define WSB_PROP_CXHSCROLL __MSABI_LONG(0x2)
   5488 #define WSB_PROP_CYHSCROLL __MSABI_LONG(0x4)
   5489 #define WSB_PROP_CXVSCROLL __MSABI_LONG(0x8)
   5490 #define WSB_PROP_CXHTHUMB __MSABI_LONG(0x10)
   5491 #define WSB_PROP_CYVTHUMB __MSABI_LONG(0x20)
   5492 #define WSB_PROP_VBKGCOLOR __MSABI_LONG(0x40)
   5493 #define WSB_PROP_HBKGCOLOR __MSABI_LONG(0x80)
   5494 #define WSB_PROP_VSTYLE __MSABI_LONG(0x100)
   5495 #define WSB_PROP_HSTYLE __MSABI_LONG(0x200)
   5496 #define WSB_PROP_WINSTYLE __MSABI_LONG(0x400)
   5497 #define WSB_PROP_PALETTE __MSABI_LONG(0x800)
   5498 #define WSB_PROP_MASK __MSABI_LONG(0xfff)
   5499 
   5500 #define FSB_FLAT_MODE 2
   5501 #define FSB_ENCARTA_MODE 1
   5502 #define FSB_REGULAR_MODE 0
   5503 
   5504   WINCOMMCTRLAPI WINBOOL WINAPI FlatSB_EnableScrollBar(HWND,int,UINT);
   5505   WINCOMMCTRLAPI WINBOOL WINAPI FlatSB_ShowScrollBar(HWND,int code,WINBOOL);
   5506   WINCOMMCTRLAPI WINBOOL WINAPI FlatSB_GetScrollRange(HWND,int code,LPINT,LPINT);
   5507   WINCOMMCTRLAPI WINBOOL WINAPI FlatSB_GetScrollInfo(HWND,int code,LPSCROLLINFO);
   5508   WINCOMMCTRLAPI int WINAPI FlatSB_GetScrollPos(HWND,int code);
   5509   WINCOMMCTRLAPI WINBOOL WINAPI FlatSB_GetScrollProp(HWND,int propIndex,LPINT);
   5510 #ifdef _WIN64
   5511   WINCOMMCTRLAPI WINBOOL WINAPI FlatSB_GetScrollPropPtr(HWND,int propIndex,PINT_PTR);
   5512 #else
   5513 #define FlatSB_GetScrollPropPtr FlatSB_GetScrollProp
   5514 #endif
   5515 
   5516   WINCOMMCTRLAPI int WINAPI FlatSB_SetScrollPos(HWND,int code,int pos,WINBOOL fRedraw);
   5517   WINCOMMCTRLAPI int WINAPI FlatSB_SetScrollInfo(HWND,int code,LPSCROLLINFO,WINBOOL fRedraw);
   5518   WINCOMMCTRLAPI int WINAPI FlatSB_SetScrollRange(HWND,int code,int min,int max,WINBOOL fRedraw);
   5519   WINCOMMCTRLAPI WINBOOL WINAPI FlatSB_SetScrollProp(HWND,UINT index,INT_PTR newValue,WINBOOL);
   5520 #define FlatSB_SetScrollPropPtr FlatSB_SetScrollProp
   5521   WINCOMMCTRLAPI WINBOOL WINAPI InitializeFlatSB(HWND);
   5522   WINCOMMCTRLAPI HRESULT WINAPI UninitializeFlatSB(HWND);
   5523 #endif
   5524 
   5525   typedef LRESULT (CALLBACK *SUBCLASSPROC)(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam,UINT_PTR uIdSubclass,DWORD_PTR dwRefData);
   5526 
   5527   WINBOOL WINAPI SetWindowSubclass(HWND hWnd,SUBCLASSPROC pfnSubclass,UINT_PTR uIdSubclass,DWORD_PTR dwRefData);
   5528   WINBOOL WINAPI GetWindowSubclass(HWND hWnd,SUBCLASSPROC pfnSubclass,UINT_PTR uIdSubclass,DWORD_PTR *pdwRefData);
   5529   WINBOOL WINAPI RemoveWindowSubclass(HWND hWnd,SUBCLASSPROC pfnSubclass,UINT_PTR uIdSubclass);
   5530   LRESULT WINAPI DefSubclassProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
   5531   int WINAPI DrawShadowText(HDC hdc,LPCWSTR pszText,UINT cch,RECT *prc,DWORD dwFlags,COLORREF crText,COLORREF crShadow,int ixOffset,int iyOffset);
   5532 
   5533 #if NTDDI_VERSION >= 0x06000000
   5534   enum _LI_METRIC {
   5535     LIM_SMALL,
   5536     LIM_LARGE,
   5537   };
   5538 
   5539   WINCOMMCTRLAPI HRESULT WINAPI LoadIconMetric (HINSTANCE hinst, PCWSTR pszName, int lims, HICON *phico);
   5540   WINCOMMCTRLAPI HRESULT WINAPI LoadIconWithScaleDown (HINSTANCE hinst, PCWSTR pszName, int cx, int cy, HICON *phico);
   5541 #endif
   5542 
   5543 #ifdef __cplusplus
   5544 }
   5545 #endif
   5546 
   5547 #endif
   5548 #endif
   5549 #endif
   5550