Ignore:
Timestamp:
Jun 6, 1999, 1:22:57 PM (26 years ago)
Author:
achimha
Message:

* empty log message *

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/win/commctrl.h

    r4 r36  
    1 /* $Id: commctrl.h,v 1.1 1999-05-24 20:19:09 ktk Exp $ */
    2 
    31/*
    4  * Common controls definitions
     2 * Win32 common controls include file
     3 *
     4 * Copyright (C) 1999 Achim Hasenmueller
     5 *
     6 * Based on the work of the WINE group (www.winehq.com)
     7 *
     8 *
     9 * Project Odin Software License can be found in LICENSE.TXT
     10 *
    511 */
    612
    7 #ifndef __WINE_COMMCTRL_H
    8 #define __WINE_COMMCTRL_H
     13#ifndef _H_COMMCTRL
     14#define _H_COMMCTRL
    915
    1016#include "windef.h"
    1117#include "winuser.h"
    12 #include "imagelist.h"
    13 #include "prsht.h"
    14 
    15 /* c++ likes nameless unions whereas c doesnt */
    16 /* (used in property sheet structures)        */
    17 #ifdef __cplusplus
    18 #define DUMMYUNIONNAME
    19 #define DUMMYUNIONNAME1
    20 #define DUMMYUNIONNAME2
    21 #define DUMMYUNIONNAME3
    22 #define DUMMYUNIONNAME4
    23 #define DUMMYUNIONNAME5
    24 #else
    25 #define DUMMYUNIONNAME   u
    26 #define DUMMYUNIONNAME1  u1
    27 #define DUMMYUNIONNAME2  u2
    28 #define DUMMYUNIONNAME3  u3
    29 #define DUMMYUNIONNAME4  u4
    30 #define DUMMYUNIONNAME5  u5
    31 #endif
    32 
    33 #ifdef __cplusplus
    34 extern "C" {
    35 #endif
    36 
    37 BOOL WINAPI ShowHideMenuCtl (HWND, UINT, LPINT);
    38 VOID WINAPI GetEffectiveClientRect (HWND, LPRECT, LPINT);
    39 VOID WINAPI InitCommonControls (VOID);
    40 
    41 typedef struct tagINITCOMMONCONTROLSEX {
    42     DWORD dwSize;
    43     DWORD dwICC;
    44 } INITCOMMONCONTROLSEX, *LPINITCOMMONCONTROLSEX;
    45 
    46 BOOL WINAPI InitCommonControlsEx (LPINITCOMMONCONTROLSEX);
    47 
    48 #define ICC_LISTVIEW_CLASSES   0x00000001  /* listview, header */
    49 #define ICC_TREEVIEW_CLASSES   0x00000002  /* treeview, tooltips */
    50 #define ICC_BAR_CLASSES        0x00000004  /* toolbar, statusbar, trackbar, tooltips */
    51 #define ICC_TAB_CLASSES        0x00000008  /* tab, tooltips */
    52 #define ICC_UPDOWN_CLASS       0x00000010  /* updown */
    53 #define ICC_PROGRESS_CLASS     0x00000020  /* progress */
    54 #define ICC_HOTKEY_CLASS       0x00000040  /* hotkey */
    55 #define ICC_ANIMATE_CLASS      0x00000080  /* animate */
    56 #define ICC_WIN95_CLASSES      0x000000FF
    57 #define ICC_DATE_CLASSES       0x00000100  /* month picker, date picker, time picker, updown */
    58 #define ICC_USEREX_CLASSES     0x00000200  /* comboex */
    59 #define ICC_COOL_CLASSES       0x00000400  /* rebar (coolbar) */
    60 #define ICC_INTERNET_CLASSES   0x00000800  /* IP address, ... */
    61 #define ICC_PAGESCROLLER_CLASS 0x00001000  /* page scroller */
    62 #define ICC_NATIVEFNTCTL_CLASS 0x00002000  /* native font control ???*/
    63 
    6418
    6519/* common control styles */
     
    8539#define CCM_GETDROPTARGET    (CCM_FIRST+4)
    8640#define CCM_SETUNICODEFORMAT (CCM_FIRST+5)
    87 #define CCM_GETUNICODEFORMAT (CCM_FIRST+6)
    88 
     41#define CCM_GETUNICODEFORMAT (CCM_FIRST+6)
    8942
    9043/* common notification codes (WM_NOTIFY)*/
     
    13891#endif
    13992
    140 
    141 /* This is only for Winelib applications. DON't use it wine itself!!! */
    142 #define SNDMSG WINELIB_NAME_AW(SendMessage)
    143 
    144 
    145 
    14693/* Custom Draw messages */
    14794
     
    202149
    203150
    204 
    205 /* StatusWindow */
    206 
    207 #define STATUSCLASSNAME16       "msctls_statusbar"
    208 #define STATUSCLASSNAMEA        "msctls_statusbar32"
    209 /* Does not work. gcc creates 4 byte wide strings.
    210  * #define STATUSCLASSNAME32W   L"msctls_statusbar32"
    211  */
    212 static const WCHAR      _scn32w[] = {
    213 'm','s','c','t','l','s','_','s','t','a','t','u','s','b','a','r','3','2',0
    214 };
    215 #define STATUSCLASSNAMEW        _scn32w
    216 #define STATUSCLASSNAME         WINELIB_NAME_AW(STATUSCLASSNAME)
    217 
    218 #define SBT_NOBORDERS           0x0100
    219 #define SBT_POPOUT              0x0200
    220 #define SBT_RTLREADING          0x0400  /* not supported */
    221 #define SBT_TOOLTIPS            0x0800
    222 #define SBT_OWNERDRAW           0x1000
    223 
    224 #define SBARS_SIZEGRIP          0x0100
    225 
    226 #define SB_SETTEXTA             (WM_USER+1)
    227 #define SB_SETTEXTW             (WM_USER+11)
    228 #define SB_SETTEXT              WINELIB_NAME_AW(SB_SETTEXT)
    229 #define SB_GETTEXTA             (WM_USER+2)
    230 #define SB_GETTEXTW             (WM_USER+13)
    231 #define SB_GETTEXT              WINELIB_NAME_AW(SB_GETTEXT)
    232 #define SB_GETTEXTLENGTHA       (WM_USER+3)
    233 #define SB_GETTEXTLENGTHW       (WM_USER+12)
    234 #define SB_GETTEXTLENGTH        WINELIB_NAME_AW(SB_GETTEXTLENGTH)
    235 #define SB_SETPARTS             (WM_USER+4)
    236 #define SB_GETPARTS             (WM_USER+6)
    237 #define SB_GETBORDERS           (WM_USER+7)
    238 #define SB_SETMINHEIGHT         (WM_USER+8)
    239 #define SB_SIMPLE               (WM_USER+9)
    240 #define SB_GETRECT              (WM_USER+10)
    241 #define SB_ISSIMPLE             (WM_USER+14)
    242 #define SB_SETICON              (WM_USER+15)
    243 #define SB_SETTIPTEXTA  (WM_USER+16)
    244 #define SB_SETTIPTEXTW  (WM_USER+17)
    245 #define SB_SETTIPTEXT           WINELIB_NAME_AW(SB_SETTIPTEXT)
    246 #define SB_GETTIPTEXTA  (WM_USER+18)
    247 #define SB_GETTIPTEXTW  (WM_USER+19)
    248 #define SB_GETTIPTEXT           WINELIB_NAME_AW(SB_GETTIPTEXT)
    249 #define SB_GETICON              (WM_USER+20)
    250 #define SB_SETBKCOLOR           CCM_SETBKCOLOR   /* lParam = bkColor */
    251 #define SB_GETUNICODEFORMAT     CCM_GETUNICODEFORMAT
    252 #define SB_SETUNICODEFORMAT     CCM_SETUNICODEFORMAT
    253 
    254 #define SBN_FIRST               (0U-880U)
    255 #define SBN_LAST                (0U-899U)
    256 #define SBN_SIMPLEMODECHANGE    (SBN_FIRST-0)
    257 
    258 HWND WINAPI CreateStatusWindowA (INT, LPCSTR, HWND, UINT);
    259 HWND WINAPI CreateStatusWindowW (INT, LPCWSTR, HWND, UINT);
    260 #define CreateStatusWindow WINELIB_NAME_AW(CreateStatusWindow)
    261 VOID WINAPI DrawStatusTextA (HDC, LPRECT, LPCSTR, UINT);
    262 VOID WINAPI DrawStatusTextW (HDC, LPRECT, LPCWSTR, UINT);
    263 #define DrawStatusText WINELIB_NAME_AW(DrawStatusText)
    264 VOID WINAPI MenuHelp (UINT, WPARAM, LPARAM, HMENU,
    265                       HINSTANCE, HWND, LPUINT);
    266 
    267 /**************************************************************************
    268  *  Drag List control
    269  */
    270 
    271 typedef struct tagDRAGLISTINFO
    272 {
    273     UINT  uNotification;
    274     HWND  hWnd;
    275     POINT ptCursor;
    276 } DRAGLISTINFO, *LPDRAGLISTINFO;
    277 
    278 #define DL_BEGINDRAG            (WM_USER+133)
    279 #define DL_DRAGGING             (WM_USER+134)
    280 #define DL_DROPPED              (WM_USER+135)
    281 #define DL_CANCELDRAG           (WM_USER+136)
    282 
    283 #define DL_CURSORSET            0
    284 #define DL_STOPCURSOR           1
    285 #define DL_COPYCURSOR           2
    286 #define DL_MOVECURSOR           3
    287 
    288 #define DRAGLISTMSGSTRING       TEXT("commctrl_DragListMsg")
    289 
    290 BOOL WINAPI MakeDragList (HWND);
    291 VOID   WINAPI DrawInsert (HWND, HWND, INT);
    292 INT  WINAPI LBItemFromPt (HWND, POINT, BOOL);
    293 
    294  
    295 /* UpDown */
    296 
    297 #define UPDOWN_CLASS16          "msctls_updown"
    298 #define UPDOWN_CLASSA         "msctls_updown32"
    299 #define UPDOWN_CLASSW         L"msctls_updown32"
    300 #define UPDOWN_CLASS            WINELIB_NAME_AW(UPDOWN_CLASS)
    301 
    302 typedef struct tagUDACCEL
    303 {
    304     UINT nSec;
    305     UINT nInc;
    306 } UDACCEL;
    307 
    308 #define UD_MAXVAL          0x7fff
    309 #define UD_MINVAL          0x8001
    310 
    311 #define UDS_WRAP           0x0001
    312 #define UDS_SETBUDDYINT    0x0002
    313 #define UDS_ALIGNRIGHT     0x0004
    314 #define UDS_ALIGNLEFT      0x0008
    315 #define UDS_AUTOBUDDY      0x0010
    316 #define UDS_ARROWKEYS      0x0020
    317 #define UDS_HORZ           0x0040
    318 #define UDS_NOTHOUSANDS    0x0080
    319 
    320 #define UDN_FIRST          (0U-721)
    321 #define UDN_LAST           (0U-740)
    322 #define UDN_DELTAPOS       (UDN_FIRST-1)
    323 
    324 #define UDM_SETRANGE       (WM_USER+101)
    325 #define UDM_GETRANGE       (WM_USER+102)
    326 #define UDM_SETPOS         (WM_USER+103)
    327 #define UDM_GETPOS         (WM_USER+104)
    328 #define UDM_SETBUDDY       (WM_USER+105)
    329 #define UDM_GETBUDDY       (WM_USER+106)
    330 #define UDM_SETACCEL       (WM_USER+107)
    331 #define UDM_GETACCEL       (WM_USER+108)
    332 #define UDM_SETBASE        (WM_USER+109)
    333 #define UDM_GETBASE        (WM_USER+110)
    334 #define UDM_SETRANGE32     (WM_USER+111)
    335 #define UDM_GETRANGE32     (WM_USER+112)
    336 
    337 HWND WINAPI CreateUpDownControl (DWORD, INT, INT, INT, INT,
    338                                    HWND, INT, HINSTANCE, HWND,
    339                                    INT, INT, INT);
    340 
    341 /* Progress Bar */
    342 
    343 #define PROGRESS_CLASSA   "msctls_progress32"
    344 #define PROGRESS_CLASSW  L"msctls_progress32"
    345 #define PROGRESS_CLASS16    "msctls_progress"
    346 #define PROGRESS_CLASS      WINELIB_NAME_AW(PROGRESS_CLASS)
    347 
    348 #define PBM_SETRANGE        (WM_USER+1)
    349 #define PBM_SETPOS          (WM_USER+2)
    350 #define PBM_DELTAPOS        (WM_USER+3)
    351 #define PBM_SETSTEP         (WM_USER+4)
    352 #define PBM_STEPIT          (WM_USER+5)
    353 #define PBM_SETRANGE32      (WM_USER+6)
    354 #define PBM_GETRANGE        (WM_USER+7)
    355 #define PBM_GETPOS          (WM_USER+8)
    356 #define PBM_SETBARCOLOR     (WM_USER+9)
    357 #define PBM_SETBKCOLOR      CCM_SETBKCOLOR
    358 
    359 #define PBS_SMOOTH          0x01
    360 #define PBS_VERTICAL        0x04
    361 
    362 typedef struct
    363 {
    364     INT iLow;
    365     INT iHigh;
    366 } PBRANGE, *PPBRANGE;
    367 
    368 
    369151/* ImageList */
    370 /*
    371 #if !defined(__WINE__) || !defined(__WINE_IMAGELIST_C)
    372152struct _IMAGELIST;
    373153typedef struct _IMAGELIST *HIMAGELIST;
    374 #endif */  /* __WINE__ */
    375154
    376155#define CLR_NONE         0xFFFFFFFF
     
    478257BOOL     WINAPI ImageList_SetImageCount(HIMAGELIST,INT);
    479258BOOL     WINAPI ImageList_SetOverlayImage(HIMAGELIST,INT,INT);
    480 #ifdef __IStream_INTREFACE_DEFINED__
    481 BOOL     WINAPI ImageList_Write(HIMAGELIST, LPSTREAM);
    482 #endif
    483 
    484 #ifndef __WINE__
    485 #define ImageList_AddIcon(himl,hicon) ImageList_ReplaceIcon(himl,-1,hicon)
    486 #endif
     259//BOOL     WINAPI ImageList_Write(HIMAGELIST, LPSTREAM);
     260
    487261#define ImageList_ExtractIcon(hi,himl,i) ImageList_GetIcon(himl,i,0)
    488262#define ImageList_LoadBitmap(hi,lpbmp,cx,cGrow,crMask) \
     
    491265
    492266
    493 /* Flat Scrollbar control */
    494 
    495 #define FLATSB_CLASS16        "flatsb_class"
    496 #define FLATSB_CLASSA       "flatsb_class32"
    497 #define FLATSB_CLASSW       L"flatsb_class32"
    498 #define FLATSB_CLASS          WINELIB_NAME_AW(FLATSB_CLASS)
    499 
    500 BOOL  WINAPI FlatSB_EnableScrollBar(HWND, INT, UINT);
    501 BOOL  WINAPI FlatSB_ShowScrollBar(HWND, INT, BOOL);
    502 BOOL  WINAPI FlatSB_GetScrollRange(HWND, INT, LPINT, LPINT);
    503 BOOL  WINAPI FlatSB_GetScrollInfo(HWND, INT, LPSCROLLINFO);
    504 INT   WINAPI FlatSB_GetScrollPos(HWND, INT);
    505 BOOL  WINAPI FlatSB_GetScrollProp(HWND, INT, LPINT);
    506 INT   WINAPI FlatSB_SetScrollPos(HWND, INT, INT, BOOL);
    507 INT   WINAPI FlatSB_SetScrollInfo(HWND, INT, LPSCROLLINFO, BOOL);
    508 INT   WINAPI FlatSB_SetScrollRange(HWND, INT, INT, INT, BOOL);
    509 BOOL  WINAPI FlatSB_SetScrollProp(HWND, UINT, INT, BOOL);
    510 BOOL  WINAPI InitializeFlatSB(HWND);
    511 HRESULT WINAPI UninitializeFlatSB(HWND);
    512 
    513 
    514 /* Header control */
    515 
    516 #define WC_HEADER16             "SysHeader"
    517 #define WC_HEADERA              "SysHeader32"
    518 #define WC_HEADERW              L"SysHeader32"
    519 #define WC_HEADER               WINELIB_NAME_AW(WC_HEADER)
    520  
    521 #define HDS_HORZ                0x0000
    522 #define HDS_BUTTONS             0x0002
    523 #define HDS_HOTTRACK            0x0004
    524 #define HDS_HIDDEN              0x0008
    525 #define HDS_DRAGDROP            0x0040
    526 #define HDS_FULLDRAG            0x0080
    527 
    528 #define HDI_WIDTH               0x0001
    529 #define HDI_HEIGHT              HDI_WIDTH
    530 #define HDI_TEXT                0x0002
    531 #define HDI_FORMAT              0x0004
    532 #define HDI_LPARAM              0x0008
    533 #define HDI_BITMAP              0x0010
    534 #define HDI_IMAGE               0x0020
    535 #define HDI_DI_SETITEM          0x0040
    536 #define HDI_ORDER               0x0080
    537 
    538 #define HDF_LEFT                0x0000
    539 #define HDF_RIGHT               0x0001
    540 #define HDF_CENTER              0x0002
    541 #define HDF_JUSTIFYMASK         0x0003
    542 
    543 #define HDF_IMAGE               0x0800
    544 #define HDF_BITMAP_ON_RIGHT     0x1000
    545 #define HDF_BITMAP              0x2000
    546 #define HDF_STRING              0x4000
    547 #define HDF_OWNERDRAW           0x8000
    548 
    549 #define HHT_NOWHERE             0x0001
    550 #define HHT_ONHEADER            0x0002
    551 #define HHT_ONDIVIDER           0x0004
    552 #define HHT_ONDIVOPEN           0x0008
    553 #define HHT_ABOVE               0x0100
    554 #define HHT_BELOW               0x0200
    555 #define HHT_TORIGHT             0x0400
    556 #define HHT_TOLEFT              0x0800
    557 
    558 #define HDM_FIRST               0x1200
    559 #define HDM_GETITEMCOUNT        (HDM_FIRST+0)
    560 #define HDM_INSERTITEMA       (HDM_FIRST+1)
    561 #define HDM_INSERTITEMW       (HDM_FIRST+10)
    562 #define HDM_INSERTITEM          WINELIB_NAME_AW(HDM_INSERTITEM)
    563 #define HDM_DELETEITEM          (HDM_FIRST+2)
    564 #define HDM_GETITEMA          (HDM_FIRST+3)
    565 #define HDM_GETITEMW          (HDM_FIRST+11)
    566 #define HDM_GETITEM             WINELIB_NAME_AW(HDM_GETITEM)
    567 #define HDM_SETITEMA          (HDM_FIRST+4)
    568 #define HDM_SETITEMW          (HDM_FIRST+12)
    569 #define HDM_SETITEM             WINELIB_NAME_AW(HDM_SETITEM)
    570 #define HDM_LAYOUT              (HDM_FIRST+5)
    571 #define HDM_HITTEST             (HDM_FIRST+6)
    572 #define HDM_GETITEMRECT         (HDM_FIRST+7)
    573 #define HDM_SETIMAGELIST        (HDM_FIRST+8)
    574 #define HDM_GETIMAGELIST        (HDM_FIRST+9)
    575 
    576 #define HDM_ORDERTOINDEX        (HDM_FIRST+15)
    577 #define HDM_CREATEDRAGIMAGE     (HDM_FIRST+16)
    578 #define HDM_GETORDERARRAY       (HDM_FIRST+17)
    579 #define HDM_SETORDERARRAY       (HDM_FIRST+18)
    580 #define HDM_SETHOTDIVIDER       (HDM_FIRST+19)
    581 #define HDM_GETUNICODEFORMAT    CCM_GETUNICODEFORMAT
    582 #define HDM_SETUNICODEFORMAT    CCM_SETUNICODEFORMAT
    583 
    584 #define HDN_FIRST               (0U-300U)
    585 #define HDN_LAST                (0U-399U)
    586 #define HDN_ITEMCHANGINGA     (HDN_FIRST-0)
    587 #define HDN_ITEMCHANGINGW     (HDN_FIRST-20)
    588 #define HDN_ITEMCHANGING WINELIB_NAME_AW(HDN_ITEMCHANGING)
    589 #define HDN_ITEMCHANGEDA      (HDN_FIRST-1)
    590 #define HDN_ITEMCHANGEDW      (HDN_FIRST-21)
    591 #define HDN_ITEMCHANGED WINELIB_NAME_AW(HDN_ITEMCHANGED)
    592 #define HDN_ITEMCLICKA        (HDN_FIRST-2)
    593 #define HDN_ITEMCLICKW        (HDN_FIRST-22)
    594 #define HDN_ITEMCLICK WINELIB_NAME_AW(HDN_ITEMCLICK)
    595 #define HDN_ITEMDBLCLICKA     (HDN_FIRST-3)
    596 #define HDN_ITEMDBLCLICKW     (HDN_FIRST-23)
    597 #define HDN_ITEMDBLCLICK WINELIB_NAME_AW(HDN_ITEMDBLCLICK)
    598 #define HDN_DIVIDERDBLCLICKA  (HDN_FIRST-5)
    599 #define HDN_DIVIDERDBLCLICKW  (HDN_FIRST-25)
    600 #define HDN_DIVIDERDBLCLICK WINELIB_NAME_AW(HDN_DIVIDERDBLCLICK)
    601 #define HDN_BEGINTRACKA       (HDN_FIRST-6)
    602 #define HDN_BEGINTRACKW       (HDN_FIRST-26)
    603 #define HDN_BEGINTRACK WINELIB_NAME_AW(HDN_BEGINTRACK)
    604 #define HDN_ENDTRACKA         (HDN_FIRST-7)
    605 #define HDN_ENDTRACKW         (HDN_FIRST-27)
    606 #define HDN_ENDTRACK WINELIB_NAME_AW(HDN_ENDTRACK)
    607 #define HDN_TRACKA            (HDN_FIRST-8)
    608 #define HDN_TRACKW            (HDN_FIRST-28)
    609 #define HDN_TRACK WINELIB_NAME_AW(HDN_TRACK)
    610 #define HDN_GETDISPINFOA      (HDN_FIRST-9)
    611 #define HDN_GETDISPINFOW      (HDN_FIRST-29)
    612 #define HDN_GETDISPINFO WINELIB_NAME_AW(HDN_GETDISPINFO)
    613 #define HDN_BEGINDRACK          (HDN_FIRST-10)
    614 #define HDN_ENDDRACK            (HDN_FIRST-11)
    615 
    616 typedef struct _HD_LAYOUT
    617 {
    618     RECT      *prc;
    619     WINDOWPOS *pwpos;
    620 } HDLAYOUT, *LPHDLAYOUT;
    621 
    622 #define HD_LAYOUT   HDLAYOUT
    623 
    624 typedef struct _HD_ITEMA
    625 {
    626     UINT    mask;
    627     INT     cxy;
    628     LPSTR     pszText;
    629     HBITMAP hbm;
    630     INT     cchTextMax;
    631     INT     fmt;
    632     LPARAM    lParam;
    633     INT     iImage;
    634     INT     iOrder;
    635 } HDITEMA, *LPHDITEMA;
    636 
    637 typedef struct _HD_ITEMW
    638 {
    639     UINT    mask;
    640     INT     cxy;
    641     LPWSTR    pszText;
    642     HBITMAP hbm;
    643     INT     cchTextMax;
    644     INT     fmt;
    645     LPARAM    lParam;
    646     INT     iImage;
    647     INT     iOrder;
    648 } HDITEMW, *LPHDITEMW;
    649 
    650 #define HDITEM   WINELIB_NAME_AW(HDITEM)
    651 #define LPHDITEM WINELIB_NAME_AW(LPHDITEM)
    652 #define HD_ITEM  HDITEM
    653 
    654 #define HDITEM_V1_SIZEA CCSIZEOF_STRUCT(HDITEMA, lParam)
    655 #define HDITEM_V1_SIZEW CCSIZEOF_STRUCT(HDITEMW, lParam)
    656 #define HDITEM_V1_SIZE WINELIB_NAME_AW(HDITEM_V1_SIZE)
    657 
    658 typedef struct _HD_HITTESTINFO
    659 {
    660     POINT pt;
    661     UINT  flags;
    662     INT   iItem;
    663 } HDHITTESTINFO, *LPHDHITTESTINFO;
    664 
    665 #define HD_HITTESTINFO   HDHITTESTINFO
    666 
    667 typedef struct tagNMHEADERA
    668 {
    669     NMHDR     hdr;
    670     INT     iItem;
    671     INT     iButton;
    672     HDITEMA *pitem;
    673 } NMHEADERA, *LPNMHEADERA;
    674 
    675 typedef struct tagNMHEADERW
    676 {
    677     NMHDR     hdr;
    678     INT     iItem;
    679     INT     iButton;
    680     HDITEMW *pitem;
    681 } NMHEADERW, *LPNMHEADERW;
    682 
    683 #define NMHEADER                WINELIB_NAME_AW(NMHEADER)
    684 #define LPNMHEADER              WINELIB_NAME_AW(LPNMHEADER)
    685 #define HD_NOTIFY               NMHEADER
    686 
    687 typedef struct tagNMHDDISPINFOA
    688 {
    689     NMHDR     hdr;
    690     INT     iItem;
    691     UINT    mask;
    692     LPSTR     pszText;
    693     INT     cchTextMax;
    694     INT     iImage;
    695     LPARAM    lParam;
    696 } NMHDDISPINFOA, *LPNMHDDISPINFOA;
    697 
    698 typedef struct tagNMHDDISPINFOW
    699 {
    700     NMHDR     hdr;
    701     INT     iItem;
    702     UINT    mask;
    703     LPWSTR    pszText;
    704     INT     cchTextMax;
    705     INT     iImage;
    706     LPARAM    lParam;
    707 } NMHDDISPINFOW, *LPNMHDDISPINFOW;
    708 
    709 #define NMHDDISPINFO            WINELIB_NAME_AW(NMHDDISPINFO)
    710 #define LPNMHDDISPINFO          WINELIB_NAME_AW(LPNMHDDISPINFO)
    711 
    712 #define Header_GetItemCount(hwndHD) \
    713   (INT)SendMessageA((hwndHD),HDM_GETITEMCOUNT,0,0L)
    714 #define Header_InsertItemA(hwndHD,i,phdi) \
    715   (INT)SendMessageA((hwndHD),HDM_INSERTITEMA,(WPARAM)(INT)(i),(LPARAM)(const HDITEMA*)(phdi))
    716 #define Header_InsertItemW(hwndHD,i,phdi) \
    717   (INT)SendMessageW((hwndHD),HDM_INSERTITEMW,(WPARAM)(INT)(i),(LPARAM)(const HDITEMW*)(phdi))
    718 #define Header_InsertItem WINELIB_NAME_AW(Header_InsertItem)
    719 #define Header_DeleteItem(hwndHD,i) \
    720   (BOOL)SendMessageA((hwndHD),HDM_DELETEITEM,(WPARAM)(INT)(i),0L)
    721 #define Header_GetItemA(hwndHD,i,phdi) \
    722   (BOOL)SendMessageA((hwndHD),HDM_GETITEMA,(WPARAM)(INT)(i),(LPARAM)(HDITEMA*)(phdi))
    723 #define Header_GetItemW(hwndHD,i,phdi) \
    724   (BOOL)SendMessageW((hwndHD),HDM_GETITEMW,(WPARAM)(INT)(i),(LPARAM)(HDITEMW*)(phdi))
    725 #define Header_GetItem WINELIB_NAME_AW(Header_GetItem)
    726 #define Header_SetItemA(hwndHD,i,phdi) \
    727   (BOOL)SendMessageA((hwndHD),HDM_SETITEMA,(WPARAM)(INT)(i),(LPARAM)(const HDITEMA*)(phdi))
    728 #define Header_SetItemW(hwndHD,i,phdi) \
    729   (BOOL)SendMessageW((hwndHD),HDM_SETITEMW,(WPARAM)(INT)(i),(LPARAM)(const HDITEMW*)(phdi))
    730 #define Header_SetItem WINELIB_NAME_AW(Header_SetItem)
    731 #define Header_Layout(hwndHD,playout) \
    732   (BOOL)SendMessageA((hwndHD),HDM_LAYOUT,0,(LPARAM)(LPHDLAYOUT)(playout))
    733 #define Header_GetItemRect(hwnd,iItem,lprc) \
    734   (BOOL)SendMessageA((hwnd),HDM_GETITEMRECT,(WPARAM)iItem,(LPARAM)lprc)
    735 #define Header_SetImageList(hwnd,himl) \
    736   (HIMAGELIST)SendMessageA((hwnd),HDM_SETIMAGELIST,0,(LPARAM)himl)
    737 #define Header_GetImageList(hwnd) \
    738   (HIMAGELIST)SendMessageA((hwnd),HDM_GETIMAGELIST,0,0)
    739 #define Header_OrderToIndex(hwnd,i) \
    740   (INT)SendMessageA((hwnd),HDM_ORDERTOINDEX,(WPARAM)i,0)
    741 #define Header_CreateDragImage(hwnd,i) \
    742   (HIMAGELIST)SendMessageA((hwnd),HDM_CREATEDRAGIMAGE,(WPARAM)i,0)
    743 #define Header_GetOrderArray(hwnd,iCount,lpi) \
    744   (BOOL)SendMessageA((hwnd),HDM_GETORDERARRAY,(WPARAM)iCount,(LPARAM)lpi)
    745 #define Header_SetOrderArray(hwnd,iCount,lpi) \
    746   (BOOL)SendMessageA((hwnd),HDM_SETORDERARRAY,(WPARAM)iCount,(LPARAM)lpi)
    747 #define Header_SetHotDivider(hwnd,fPos,dw) \
    748   (INT)SendMessageA((hwnd),HDM_SETHOTDIVIDER,(WPARAM)fPos,(LPARAM)dw)
    749 #define Header_SetUnicodeFormat(hwnd,fUnicode) \
    750   (BOOL)SendMessageA((hwnd),HDM_SETUNICODEFORMAT,(WPARAM)(fUnicode),0)
    751 #define Header_GetUnicodeFormat(hwnd) \
    752   (BOOL)SendMessageA((hwnd),HDM_GETUNICODEFORMAT,0,0)
     267
     268
     269/* PROGRESS BAR CONTROL */
     270
     271#define PROGRESS_CLASSA   "msctls_progress32"
     272#define PROGRESS_CLASSW  L"msctls_progress32"
     273#define PROGRESS_CLASS    WINELIB_NAME_AW(PROGRESS_CLASS)
     274
     275#define PBM_SETRANGE        (WM_USER+1)
     276#define PBM_SETPOS          (WM_USER+2)
     277#define PBM_DELTAPOS        (WM_USER+3)
     278#define PBM_SETSTEP         (WM_USER+4)
     279#define PBM_STEPIT          (WM_USER+5)
     280#define PBM_SETRANGE32      (WM_USER+6)
     281#define PBM_GETRANGE        (WM_USER+7)
     282#define PBM_GETPOS          (WM_USER+8)
     283#define PBM_SETBARCOLOR     (WM_USER+9)
     284#define PBM_SETBKCOLOR      CCM_SETBKCOLOR
     285
     286#define PBS_SMOOTH          0x01
     287#define PBS_VERTICAL        0x04
     288
     289typedef struct
     290{
     291    INT iLow;
     292    INT iHigh;
     293} PBRANGE, *PPBRANGE;
     294
     295
     296/* StatusWindow */
     297
     298#define STATUSCLASSNAME16       "msctls_statusbar"
     299#define STATUSCLASSNAMEA        "msctls_statusbar32"
     300/* Does not work. gcc creates 4 byte wide strings.
     301 * #define STATUSCLASSNAME32W   L"msctls_statusbar32"
     302 */
     303static const WCHAR      _scn32w[] = {
     304'm','s','c','t','l','s','_','s','t','a','t','u','s','b','a','r','3','2',0
     305};
     306#define STATUSCLASSNAMEW        _scn32w
     307#define STATUSCLASSNAME         WINELIB_NAME_AW(STATUSCLASSNAME)
     308
     309#define SBT_NOBORDERS           0x0100
     310#define SBT_POPOUT              0x0200
     311#define SBT_RTLREADING          0x0400  /* not supported */
     312#define SBT_TOOLTIPS            0x0800
     313#define SBT_OWNERDRAW           0x1000
     314
     315#define SBARS_SIZEGRIP          0x0100
     316
     317#define SB_SETTEXTA             (WM_USER+1)
     318#define SB_SETTEXTW             (WM_USER+11)
     319#define SB_SETTEXT              WINELIB_NAME_AW(SB_SETTEXT)
     320#define SB_GETTEXTA             (WM_USER+2)
     321#define SB_GETTEXTW             (WM_USER+13)
     322#define SB_GETTEXT              WINELIB_NAME_AW(SB_GETTEXT)
     323#define SB_GETTEXTLENGTHA       (WM_USER+3)
     324#define SB_GETTEXTLENGTHW       (WM_USER+12)
     325#define SB_GETTEXTLENGTH        WINELIB_NAME_AW(SB_GETTEXTLENGTH)
     326#define SB_SETPARTS             (WM_USER+4)
     327#define SB_GETPARTS             (WM_USER+6)
     328#define SB_GETBORDERS           (WM_USER+7)
     329#define SB_SETMINHEIGHT         (WM_USER+8)
     330#define SB_SIMPLE               (WM_USER+9)
     331#define SB_GETRECT              (WM_USER+10)
     332#define SB_ISSIMPLE             (WM_USER+14)
     333#define SB_SETICON              (WM_USER+15)
     334#define SB_SETTIPTEXTA  (WM_USER+16)
     335#define SB_SETTIPTEXTW  (WM_USER+17)
     336#define SB_SETTIPTEXT           WINELIB_NAME_AW(SB_SETTIPTEXT)
     337#define SB_GETTIPTEXTA  (WM_USER+18)
     338#define SB_GETTIPTEXTW  (WM_USER+19)
     339#define SB_GETTIPTEXT           WINELIB_NAME_AW(SB_GETTIPTEXT)
     340#define SB_GETICON              (WM_USER+20)
     341#define SB_SETBKCOLOR           CCM_SETBKCOLOR   /* lParam = bkColor */
     342#define SB_GETUNICODEFORMAT     CCM_GETUNICODEFORMAT
     343#define SB_SETUNICODEFORMAT     CCM_SETUNICODEFORMAT
     344
     345#define SBN_FIRST               (0U-880U)
     346#define SBN_LAST                (0U-899U)
     347#define SBN_SIMPLEMODECHANGE    (SBN_FIRST-0)
     348
     349HWND WINAPI CreateStatusWindowA (INT, LPCSTR, HWND, UINT);
     350HWND WINAPI CreateStatusWindowW (INT, LPCWSTR, HWND, UINT);
     351#define CreateStatusWindow WINELIB_NAME_AW(CreateStatusWindow)
     352VOID WINAPI DrawStatusTextA (HDC, LPRECT, LPCSTR, UINT);
     353VOID WINAPI DrawStatusTextW (HDC, LPRECT, LPCWSTR, UINT);
     354#define DrawStatusText WINELIB_NAME_AW(DrawStatusText)
     355VOID WINAPI MenuHelp (UINT, WPARAM, LPARAM, HMENU,
     356                      HINSTANCE, HWND, LPUINT);
    753357
    754358
     
    1062666
    1063667
     668
    1064669/* Tool tips */
    1065670
     
    1236841
    1237842
    1238 /* Rebar control */
    1239 
    1240 #define REBARCLASSNAME16        "ReBarWindow"
    1241 #define REBARCLASSNAMEA       "ReBarWindow32"
    1242 #define REBARCLASSNAMEW       L"ReBarWindow32"
    1243 #define REBARCLASSNAME          WINELIB_NAME_AW(REBARCLASSNAME)
    1244 
    1245 #define RBS_TOOLTIPS            0x0100
    1246 #define RBS_VARHEIGHT           0x0200
    1247 #define RBS_BANDBORDERS         0x0400
    1248 #define RBS_FIXEDORDER          0x0800
    1249 #define RBS_REGISTERDROP        0x1000
    1250 #define RBS_AUTOSIZE            0x2000
    1251 #define RBS_VERTICALGRIPPER     0x4000
    1252 #define RBS_DBLCLKTOGGLE        0x8000
    1253 
    1254 #define RBIM_IMAGELIST          0x00000001
    1255 
    1256 #define RBBIM_STYLE             0x00000001
    1257 #define RBBIM_COLORS            0x00000002
    1258 #define RBBIM_TEXT              0x00000004
    1259 #define RBBIM_IMAGE             0x00000008
    1260 #define RBBIM_CHILD             0x00000010
    1261 #define RBBIM_CHILDSIZE         0x00000020
    1262 #define RBBIM_SIZE              0x00000040
    1263 #define RBBIM_BACKGROUND        0x00000080
    1264 #define RBBIM_ID                0x00000100
    1265 #define RBBIM_IDEALSIZE         0x00000200
    1266 #define RBBIM_LPARAM            0x00000400
    1267 #define RBBIM_HEADERSIZE        0x00000800
    1268 
    1269 #define RBBS_BREAK              0x00000001
    1270 #define RBBS_FIXEDSIZE          0x00000002
    1271 #define RBBS_CHILDEDGE          0x00000004
    1272 #define RBBS_HIDDEN             0x00000008
    1273 #define RBBS_NOVERT             0x00000010
    1274 #define RBBS_FIXEDBMP           0x00000020
    1275 #define RBBS_VARIABLEHEIGHT     0x00000040
    1276 #define RBBS_GRIPPERALWAYS      0x00000080
    1277 #define RBBS_NOGRIPPER          0x00000100
    1278 
    1279 #define RBNM_ID                 0x00000001
    1280 #define RBNM_STYLE              0x00000002
    1281 #define RBNM_LPARAM             0x00000004
    1282 
    1283 #define RBHT_NOWHERE            0x0001
    1284 #define RBHT_CAPTION            0x0002
    1285 #define RBHT_CLIENT             0x0003
    1286 #define RBHT_GRABBER            0x0004
    1287 
    1288 #define RB_INSERTBANDA        (WM_USER+1)
    1289 #define RB_INSERTBANDW        (WM_USER+10)
    1290 #define RB_INSERTBAND           WINELIB_NAME_AW(RB_INSERTBAND)
    1291 #define RB_DELETEBAND           (WM_USER+2)
    1292 #define RB_GETBARINFO           (WM_USER+3)
    1293 #define RB_SETBARINFO           (WM_USER+4)
    1294 #define RB_GETBANDINFO        (WM_USER+5)   /* just for compatibility */
    1295 #define RB_SETBANDINFOA       (WM_USER+6)
    1296 #define RB_SETBANDINFOW       (WM_USER+11)
    1297 #define RB_SETBANDINFO          WINELIB_NAME_AW(RB_SETBANDINFO)
    1298 #define RB_SETPARENT            (WM_USER+7)
    1299 #define RB_HITTEST              (WM_USER+8)
    1300 #define RB_GETRECT              (WM_USER+9)
    1301 #define RB_GETBANDCOUNT         (WM_USER+12)
    1302 #define RB_GETROWCOUNT          (WM_USER+13)
    1303 #define RB_GETROWHEIGHT         (WM_USER+14)
    1304 #define RB_IDTOINDEX            (WM_USER+16)
    1305 #define RB_GETTOOLTIPS          (WM_USER+17)
    1306 #define RB_SETTOOLTIPS          (WM_USER+18)
    1307 #define RB_SETBKCOLOR           (WM_USER+19)
    1308 #define RB_GETBKCOLOR           (WM_USER+20)
    1309 #define RB_SETTEXTCOLOR         (WM_USER+21)
    1310 #define RB_GETTEXTCOLOR         (WM_USER+22)
    1311 #define RB_SIZETORECT           (WM_USER+23)
    1312 #define RB_BEGINDRAG            (WM_USER+24)
    1313 #define RB_ENDDRAG              (WM_USER+25)
    1314 #define RB_DRAGMOVE             (WM_USER+26)
    1315 #define RB_GETBARHEIGHT         (WM_USER+27)
    1316 #define RB_GETBANDINFOW       (WM_USER+28)
    1317 #define RB_GETBANDINFOA       (WM_USER+29)
    1318 #define RB_GETBANDINFO16          WINELIB_NAME_AW(RB_GETBANDINFO16)
    1319 #define RB_MINIMIZEBAND         (WM_USER+30)
    1320 #define RB_MAXIMIZEBAND         (WM_USER+31)
    1321 #define RB_GETBANDBORDERS       (WM_USER+34)
    1322 #define RB_SHOWBAND             (WM_USER+35)
    1323 #define RB_SETPALETTE           (WM_USER+37)
    1324 #define RB_GETPALETTE           (WM_USER+38)
    1325 #define RB_MOVEBAND             (WM_USER+39)
    1326 #define RB_GETDROPTARGET        CCM_GETDROPTARGET
    1327 #define RB_SETCOLORSCHEME       CCM_SETCOLORSCHEME
    1328 #define RB_GETCOLORSCHEME       CCM_GETCOLORSCHEME
    1329 #define RB_SETUNICODEFORMAT     CCM_SETUNICODEFORMAT
    1330 #define RB_GETUNICODEFORMAT     CCM_GETUNICODEFORMAT
    1331 
    1332 #define RBN_FIRST               (0U-831U)
    1333 #define RBN_LAST                (0U-859U)
    1334 #define RBN_HEIGHTCHANGE        (RBN_FIRST-0)
    1335 #define RBN_GETOBJECT           (RBN_FIRST-1)
    1336 #define RBN_LAYOUTCHANGED       (RBN_FIRST-2)
    1337 #define RBN_AUTOSIZE            (RBN_FIRST-3)
    1338 #define RBN_BEGINDRAG           (RBN_FIRST-4)
    1339 #define RBN_ENDDRAG             (RBN_FIRST-5)
    1340 #define RBN_DELETINGBAND        (RBN_FIRST-6)
    1341 #define RBN_DELETEDBAND         (RBN_FIRST-7)
    1342 #define RBN_CHILDSIZE           (RBN_FIRST-8)
    1343 
    1344 typedef struct tagREBARINFO
    1345 {
    1346     UINT     cbSize;
    1347     UINT     fMask;
    1348     HIMAGELIST himl;
    1349 } REBARINFO, *LPREBARINFO;
    1350 
    1351 typedef struct tagREBARBANDINFOA
    1352 {
    1353     UINT    cbSize;
    1354     UINT    fMask;
    1355     UINT    fStyle;
    1356     COLORREF  clrFore;
    1357     COLORREF  clrBack;
    1358     LPSTR     lpText;
    1359     UINT    cch;
    1360     INT     iImage;
    1361     HWND    hwndChild;
    1362     UINT    cxMinChild;
    1363     UINT    cyMinChild;
    1364     UINT    cx;
    1365     HBITMAP hbmBack;
    1366     UINT    wID;
    1367     UINT    cyChild;
    1368     UINT    cyMaxChild;
    1369     UINT    cyIntegral;
    1370     UINT    cxIdeal;
    1371     LPARAM    lParam;
    1372     UINT    cxHeader;
    1373 } REBARBANDINFOA, *LPREBARBANDINFOA;
    1374 
    1375 typedef REBARBANDINFOA const *LPCREBARBANDINFOA;
    1376 
    1377 typedef struct tagREBARBANDINFOW
    1378 {
    1379     UINT    cbSize;
    1380     UINT    fMask;
    1381     UINT    fStyle;
    1382     COLORREF  clrFore;
    1383     COLORREF  clrBack;
    1384     LPWSTR    lpText;
    1385     UINT    cch;
    1386     INT     iImage;
    1387     HWND    hwndChild;
    1388     UINT    cxMinChild;
    1389     UINT    cyMinChild;
    1390     UINT    cx;
    1391     HBITMAP hbmBack;
    1392     UINT    wID;
    1393     UINT    cyChild;
    1394     UINT    cyMaxChild;
    1395     UINT    cyIntegral;
    1396     UINT    cxIdeal;
    1397     LPARAM    lParam;
    1398     UINT    cxHeader;
    1399 } REBARBANDINFOW, *LPREBARBANDINFOW;
    1400 
    1401 typedef REBARBANDINFOW const *LPCREBARBANDINFOW;
    1402 
    1403 #define REBARBANDINFO    WINELIB_NAME_AW(REBARBANDINFO)
    1404 #define LPREBARBANDINFO  WINELIB_NAME_AW(LPREBARBANDINFO)
    1405 #define LPCREBARBANDINFO WINELIB_NAME_AW(LPCREBARBANDINFO)
    1406 
    1407 #define REBARBANDINFO_V3_SIZEA CCSIZEOF_STRUCT(REBARBANDINFOA, wID)
    1408 #define REBARBANDINFO_V3_SIZEW CCSIZEOF_STRUCT(REBARBANDINFOW, wID)
    1409 #define REBARBANDINFO_V3_SIZE WINELIB_NAME_AW(REBARBANDINFO_V3_SIZE)
    1410 
    1411 typedef struct tagNMREBARCHILDSIZE
    1412 {
    1413     NMHDR  hdr;
    1414     UINT uBand;
    1415     UINT wID;
    1416     RECT rcChild;
    1417     RECT rcBand;
    1418 } NMREBARCHILDSIZE, *LPNMREBARCHILDSIZE;
    1419 
    1420 typedef struct tagNMREBAR
    1421 {
    1422     NMHDR  hdr;
    1423     DWORD  dwMask;
    1424     UINT uBand;
    1425     UINT fStyle;
    1426     UINT wID;
    1427     LPARAM lParam;
    1428 } NMREBAR, *LPNMREBAR;
    1429 
    1430 typedef struct tagNMRBAUTOSIZE
    1431 {
    1432     NMHDR hdr;
    1433     BOOL fChanged;
    1434     RECT rcTarget;
    1435     RECT rcActual;
    1436 } NMRBAUTOSIZE, *LPNMRBAUTOSIZE;
    1437 
    1438 typedef struct _RB_HITTESTINFO
    1439 {
    1440     POINT pt;
    1441     UINT  flags;
    1442     INT   iBand;
    1443 } RBHITTESTINFO, *LPRBHITTESTINFO;
    1444 
    1445 
    1446 /* Trackbar control */
    1447 
    1448 #define TRACKBAR_CLASS16        "msctls_trackbar"
    1449 #define TRACKBAR_CLASSA       "msctls_trackbar32"
    1450 #define TRACKBAR_CLASSW       L"msctls_trackbar32"
    1451 #define TRACKBAR_CLASS  WINELIB_NAME_AW(TRACKBAR_CLASS)
    1452 
    1453 #define TBS_AUTOTICKS           0x0001
    1454 #define TBS_VERT                0x0002
    1455 #define TBS_HORZ                0x0000
    1456 #define TBS_TOP                 0x0004
    1457 #define TBS_BOTTOM              0x0000
    1458 #define TBS_LEFT                0x0004
    1459 #define TBS_RIGHT               0x0000
    1460 #define TBS_BOTH                0x0008
    1461 #define TBS_NOTICKS             0x0010
    1462 #define TBS_ENABLESELRANGE      0x0020
    1463 #define TBS_FIXEDLENGTH         0x0040
    1464 #define TBS_NOTHUMB             0x0080
    1465 #define TBS_TOOLTIPS            0x0100
    1466 
    1467 #define TBTS_TOP                0
    1468 #define TBTS_LEFT               1
    1469 #define TBTS_BOTTOM             2
    1470 #define TBTS_RIGHT              3
    1471 
    1472 #define TB_LINEUP               0
    1473 #define TB_LINEDOWN             1
    1474 #define TB_PAGEUP               2
    1475 #define TB_PAGEDOWN             3
    1476 #define TB_THUMBPOSITION        4
    1477 #define TB_THUMBTRACK           5
    1478 #define TB_TOP                  6
    1479 #define TB_BOTTOM               7
    1480 #define TB_ENDTRACK             8
    1481 
    1482 #define TBCD_TICS               0x0001
    1483 #define TBCD_THUMB              0x0002
    1484 #define TBCD_CHANNEL            0x0003
    1485 
    1486 #define TBM_GETPOS              (WM_USER)
    1487 #define TBM_GETRANGEMIN         (WM_USER+1)
    1488 #define TBM_GETRANGEMAX         (WM_USER+2)
    1489 #define TBM_GETTIC              (WM_USER+3)
    1490 #define TBM_SETTIC              (WM_USER+4)
    1491 #define TBM_SETPOS              (WM_USER+5)
    1492 #define TBM_SETRANGE            (WM_USER+6)
    1493 #define TBM_SETRANGEMIN         (WM_USER+7)
    1494 #define TBM_SETRANGEMAX         (WM_USER+8)
    1495 #define TBM_CLEARTICS           (WM_USER+9)
    1496 #define TBM_SETSEL              (WM_USER+10)
    1497 #define TBM_SETSELSTART         (WM_USER+11)
    1498 #define TBM_SETSELEND           (WM_USER+12)
    1499 #define TBM_GETPTICS            (WM_USER+14)
    1500 #define TBM_GETTICPOS           (WM_USER+15)
    1501 #define TBM_GETNUMTICS          (WM_USER+16)
    1502 #define TBM_GETSELSTART         (WM_USER+17)
    1503 #define TBM_GETSELEND           (WM_USER+18)
    1504 #define TBM_CLEARSEL            (WM_USER+19)
    1505 #define TBM_SETTICFREQ          (WM_USER+20)
    1506 #define TBM_SETPAGESIZE         (WM_USER+21)
    1507 #define TBM_GETPAGESIZE         (WM_USER+22)
    1508 #define TBM_SETLINESIZE         (WM_USER+23)
    1509 #define TBM_GETLINESIZE         (WM_USER+24)
    1510 #define TBM_GETTHUMBRECT        (WM_USER+25)
    1511 #define TBM_GETCHANNELRECT      (WM_USER+26)
    1512 #define TBM_SETTHUMBLENGTH      (WM_USER+27)
    1513 #define TBM_GETTHUMBLENGTH      (WM_USER+28)
    1514 #define TBM_SETTOOLTIPS         (WM_USER+29)
    1515 #define TBM_GETTOOLTIPS         (WM_USER+30)
    1516 #define TBM_SETTIPSIDE          (WM_USER+31)
    1517 #define TBM_SETBUDDY            (WM_USER+32)
    1518 #define TBM_GETBUDDY            (WM_USER+33)
    1519 #define TBM_SETUNICODEFORMAT    CCM_SETUNICODEFORMAT
    1520 #define TBM_GETUNICODEFORMAT    CCM_GETUNICODEFORMAT
    1521 
    1522 
    1523 /* Pager control */
    1524 
    1525 #define WC_PAGESCROLLERA      "SysPager"
    1526 #define WC_PAGESCROLLERW      L"SysPager"
    1527 #define WC_PAGESCROLLER  WINELIB_NAME_AW(WC_PAGESCROLLER)
    1528 
    1529 #define PGS_VERT                0x00000000
    1530 #define PGS_HORZ                0x00000001
    1531 #define PGS_AUTOSCROLL          0x00000002
    1532 #define PGS_DRAGNDROP           0x00000004
    1533 
    1534 #define PGF_INVISIBLE           0
    1535 #define PGF_NORMAL              1
    1536 #define PGF_GRAYED              2
    1537 #define PGF_DEPRESSED           4
    1538 #define PGF_HOT                 8
    1539 
    1540 #define PGB_TOPORLEFT           0
    1541 #define PGB_BOTTOMORRIGHT       1
    1542 
    1543 /* only used with PGN_SCROLL */
    1544 #define PGF_SCROLLUP            1
    1545 #define PGF_SCROLLDOWN          2
    1546 #define PGF_SCROLLLEFT          4
    1547 #define PGF_SCROLLRIGHT         8
    1548 
    1549 #define PGK_SHIFT               1
    1550 #define PGK_CONTROL             2
    1551 #define PGK_MENU                4
    1552 
    1553 /* only used with PGN_CALCSIZE */
    1554 #define PGF_CALCWIDTH           1
    1555 #define PGF_CALCHEIGHT          2
    1556 
    1557 #define PGM_FIRST               0x1400
    1558 #define PGM_SETCHILD            (PGM_FIRST+1)
    1559 #define PGM_RECALCSIZE          (PGM_FIRST+2)
    1560 #define PGM_FORWARDMOUSE        (PGM_FIRST+3)
    1561 #define PGM_SETBKCOLOR          (PGM_FIRST+4)
    1562 #define PGM_GETBKCOLOR          (PGM_FIRST+5)
    1563 #define PGM_SETBORDER           (PGM_FIRST+6)
    1564 #define PGM_GETBORDER           (PGM_FIRST+7)
    1565 #define PGM_SETPOS              (PGM_FIRST+8)
    1566 #define PGM_GETPOS              (PGM_FIRST+9)
    1567 #define PGM_SETBUTTONSIZE       (PGM_FIRST+10)
    1568 #define PGM_GETBUTTONSIZE       (PGM_FIRST+11)
    1569 #define PGM_GETBUTTONSTATE      (PGM_FIRST+12)
    1570 #define PGM_GETDROPTARGET       CCM_GETDROPTARGET
    1571 
    1572 #define PGN_FIRST               (0U-900U)
    1573 #define PGN_LAST                (0U-950U)
    1574 #define PGN_SCROLL              (PGN_FIRST-1)
    1575 #define PGN_CALCSIZE            (PGN_FIRST-2)
    1576 
    1577 typedef struct
    1578 {
    1579     NMHDR hdr;
    1580     WORD  fwKeys;
    1581     RECT rcParent;
    1582     INT  iDir;
    1583     INT  iXpos;
    1584     INT  iYpos;
    1585     INT  iScroll;
    1586 } NMPGSCROLL, *LPNMPGSCROLL;
    1587 
    1588 typedef struct
    1589 {
    1590     NMHDR hdr;
    1591     DWORD dwFlag;
    1592     INT iWidth;
    1593     INT iHeight;
    1594 } NMPGCALCSIZE, *LPNMPGCALCSIZE;
    1595 
    1596 
    1597 /* Treeview control */
    1598 
    1599 #define WC_TREEVIEWA          "SysTreeView32"
    1600 #define WC_TREEVIEWW          L"SysTreeView32"
    1601 #define WC_TREEVIEW             WINELIB_NAME_AW(WC_TREEVIEW)
    1602 
    1603 #define TVSIL_NORMAL            0
    1604 #define TVSIL_STATE             2
    1605 
    1606 #define TV_FIRST                0x1100
    1607 #define TVM_INSERTITEMA       (TV_FIRST+0)
    1608 #define TVM_INSERTITEMW       (TV_FIRST+50)
    1609 #define TVM_INSERTITEM          WINELIB_NAME_AW(TVM_INSERTITEM)
    1610 #define TVM_DELETEITEM          (TV_FIRST+1)
    1611 #define TVM_EXPAND              (TV_FIRST+2)
    1612 #define TVM_GETITEMRECT         (TV_FIRST+4)
    1613 #define TVM_GETCOUNT            (TV_FIRST+5)
    1614 #define TVM_GETINDENT           (TV_FIRST+6)
    1615 #define TVM_SETINDENT           (TV_FIRST+7)
    1616 #define TVM_GETIMAGELIST        (TV_FIRST+8)
    1617 #define TVM_SETIMAGELIST        (TV_FIRST+9)
    1618 #define TVM_GETNEXTITEM         (TV_FIRST+10)
    1619 #define TVM_SELECTITEM          (TV_FIRST+11)
    1620 #define TVM_GETITEMA          (TV_FIRST+12)
    1621 #define TVM_GETITEMW          (TV_FIRST+62)
    1622 #define TVM_GETITEM             WINELIB_NAME_AW(TVM_GETITEM)
    1623 #define TVM_SETITEMA          (TV_FIRST+13)
    1624 #define TVM_SETITEMW          (TV_FIRST+63)
    1625 #define TVM_SETITEM             WINELIB_NAME_AW(TVM_SETITEM)
    1626 #define TVM_EDITLABELA        (TV_FIRST+14)
    1627 #define TVM_EDITLABELW        (TV_FIRST+65)
    1628 #define TVM_EDITLABEL           WINELIB_NAME_AW(TVM_EDITLABEL)
    1629 #define TVM_GETEDITCONTROL      (TV_FIRST+15)
    1630 #define TVM_GETVISIBLECOUNT     (TV_FIRST+16)
    1631 #define TVM_HITTEST             (TV_FIRST+17)
    1632 #define TVM_CREATEDRAGIMAGE     (TV_FIRST+18)
    1633 #define TVM_SORTCHILDREN        (TV_FIRST+19)
    1634 #define TVM_ENSUREVISIBLE       (TV_FIRST+20)
    1635 #define TVM_SORTCHILDRENCB      (TV_FIRST+21)
    1636 #define TVM_ENDEDITLABELNOW     (TV_FIRST+22)
    1637 #define TVM_GETISEARCHSTRINGA (TV_FIRST+23)
    1638 #define TVM_GETISEARCHSTRINGW (TV_FIRST+64)
    1639 #define TVM_GETISEARCHSTRING    WINELIB_NAME_AW(TVM_GETISEARCHSTRING)
    1640 #define TVM_SETTOOLTIPS         (TV_FIRST+24)
    1641 #define TVM_GETTOOLTIPS         (TV_FIRST+25)
    1642 #define TVM_SETINSERTMARK       (TV_FIRST+26)
    1643 #define TVM_SETITEMHEIGHT       (TV_FIRST+27)
    1644 #define TVM_GETITEMHEIGHT       (TV_FIRST+28)
    1645 #define TVM_SETBKCOLOR          (TV_FIRST+29)
    1646 #define TVM_SETTEXTCOLOR        (TV_FIRST+30)
    1647 #define TVM_GETBKCOLOR          (TV_FIRST+31)
    1648 #define TVM_GETTEXTCOLOR        (TV_FIRST+32)
    1649 #define TVM_SETSCROLLTIME       (TV_FIRST+33)
    1650 #define TVM_GETSCROLLTIME       (TV_FIRST+34)
    1651 #define TVM_UNKNOWN35           (TV_FIRST+35)
    1652 #define TVM_UNKNOWN36           (TV_FIRST+36)
    1653 #define TVM_SETINSERTMARKCOLOR  (TV_FIRST+37)
    1654 #define TVM_GETINSERTMARKCOLOR  (TV_FIRST+38)
    1655 #define TVM_SETUNICODEFORMAT    CCM_SETUNICODEFORMAT
    1656 #define TVM_GETUNICODEFORMAT    CCM_GETUNICODEFORMAT
    1657 
    1658 #define TVN_FIRST               (0U-400U)
    1659 #define TVN_LAST                (0U-499U)
    1660 
    1661 #define TVN_SELCHANGING         (TVN_FIRST-1)
    1662 #define TVN_SELCHANGED          (TVN_FIRST-2)
    1663 #define TVN_GETDISPINFO         (TVN_FIRST-3)
    1664 #define TVN_SETDISPINFO         (TVN_FIRST-4)
    1665 #define TVN_ITEMEXPANDING       (TVN_FIRST-5)
    1666 #define TVN_ITEMEXPANDED        (TVN_FIRST-6)
    1667 #define TVN_BEGINDRAG           (TVN_FIRST-7)
    1668 #define TVN_BEGINRDRAG          (TVN_FIRST-8)
    1669 #define TVN_DELETEITEM          (TVN_FIRST-9)
    1670 #define TVN_BEGINLABELEDIT      (TVN_FIRST-10)
    1671 #define TVN_ENDLABELEDIT        (TVN_FIRST-11)
    1672 #define TVN_KEYDOWN             (TVN_FIRST-12)
    1673 #define TVN_GETINFOTIPA         (TVN_FIRST-13)
    1674 #define TVN_GETINFOTIPW         (TVN_FIRST-14)
    1675 #define TVN_SINGLEEXPAND        (TVN_FIRST-15)
    1676 
    1677 
    1678 #define TVN_SELCHANGINGW        (TVN_FIRST-50)
    1679 #define TVN_SELCHANGEDW         (TVN_FIRST-51)
    1680 #define TVN_GETDISPINFOW        (TVN_FIRST-52)
    1681 #define TVN_SETDISPINFOW        (TVN_FIRST-53)
    1682 #define TVN_ITEMEXPANDINGW      (TVN_FIRST-54)
    1683 #define TVN_ITEMEXPANDEDW       (TVN_FIRST-55)
    1684 #define TVN_BEGINDRAGW          (TVN_FIRST-56)
    1685 #define TVN_BEGINRDRAGW         (TVN_FIRST-57)
    1686 #define TVN_DELETEITEMW         (TVN_FIRST-58)
    1687 #define TVN_BEGINLABELEDITW     (TVN_FIRST-59)
    1688 #define TVN_ENDLABELEDITW       (TVN_FIRST-60)
    1689 
    1690 
    1691 
    1692 #define TVIF_TEXT             0x0001
    1693 #define TVIF_IMAGE            0x0002
    1694 #define TVIF_PARAM            0x0004
    1695 #define TVIF_STATE            0x0008
    1696 #define TVIF_HANDLE           0x0010
    1697 #define TVIF_SELECTEDIMAGE    0x0020
    1698 #define TVIF_CHILDREN         0x0040
    1699 #define TVIF_INTEGRAL         0x0080
    1700 #define TVIF_DI_SETITEM           0x1000
    1701 
    1702 #define TVI_ROOT              ((HTREEITEM)0xffff0000)     /* -65536 */
    1703 #define TVI_FIRST             ((HTREEITEM)0xffff0001)     /* -65535 */
    1704 #define TVI_LAST              ((HTREEITEM)0xffff0002)     /* -65534 */
    1705 #define TVI_SORT              ((HTREEITEM)0xffff0003)     /* -65533 */
    1706 
    1707 #define TVIS_FOCUSED          0x0001
    1708 #define TVIS_SELECTED         0x0002
    1709 #define TVIS_CUT              0x0004
    1710 #define TVIS_DROPHILITED      0x0008
    1711 #define TVIS_BOLD             0x0010
    1712 #define TVIS_EXPANDED         0x0020
    1713 #define TVIS_EXPANDEDONCE     0x0040
    1714 #define TVIS_OVERLAYMASK      0x0f00
    1715 #define TVIS_STATEIMAGEMASK   0xf000
    1716 #define TVIS_USERMASK         0xf000
    1717 
    1718 #define TVHT_NOWHERE          0x0001
    1719 #define TVHT_ONITEMICON       0x0002
    1720 #define TVHT_ONITEMLABEL      0x0004
    1721 #define TVHT_ONITEMINDENT     0x0008
    1722 #define TVHT_ONITEMBUTTON     0x0010
    1723 #define TVHT_ONITEMRIGHT      0x0020
    1724 #define TVHT_ONITEMSTATEICON  0x0040
    1725 #define TVHT_ONITEM           0x0046
    1726 #define TVHT_ABOVE            0x0100
    1727 #define TVHT_BELOW            0x0200
    1728 #define TVHT_TORIGHT          0x0400
    1729 #define TVHT_TOLEFT           0x0800
    1730 
    1731 #define TVS_HASBUTTONS        0x0001
    1732 #define TVS_HASLINES          0x0002
    1733 #define TVS_LINESATROOT       0x0004
    1734 #define TVS_EDITLABELS        0x0008
    1735 #define TVS_DISABLEDRAGDROP   0x0010
    1736 #define TVS_SHOWSELALWAYS     0x0020
    1737 #define TVS_RTLREADING        0x0040
    1738 #define TVS_NOTOOLTIPS        0x0080
    1739 #define TVS_CHECKBOXES        0x0100
    1740 #define TVS_TRACKSELECT       0x0200
    1741 #define TVS_SINGLEEXPAND          0x0400
    1742 #define TVS_INFOTIP               0x0800
    1743 #define TVS_FULLROWSELECT         0x1000
    1744 #define TVS_NOSCROLL              0x2000
    1745 #define TVS_NONEVENHEIGHT         0x4000
    1746 
    1747 #define TVS_SHAREDIMAGELISTS  0x0000
    1748 #define TVS_PRIVATEIMAGELISTS 0x0400
    1749 
    1750 
    1751 #define TVE_COLLAPSE          0x0001
    1752 #define TVE_EXPAND            0x0002
    1753 #define TVE_TOGGLE            0x0003
    1754 #define TVE_EXPANDPARTIAL     0x4000
    1755 #define TVE_COLLAPSERESET     0x8000
    1756 
    1757 #define TVGN_ROOT             0
    1758 #define TVGN_NEXT             1
    1759 #define TVGN_PREVIOUS         2
    1760 #define TVGN_PARENT           3
    1761 #define TVGN_CHILD            4
    1762 #define TVGN_FIRSTVISIBLE     5
    1763 #define TVGN_NEXTVISIBLE      6
    1764 #define TVGN_PREVIOUSVISIBLE  7
    1765 #define TVGN_DROPHILITE       8
    1766 #define TVGN_CARET            9
    1767 #define TVGN_LASTVISIBLE      10
    1768 
    1769 #define TVC_UNKNOWN           0x00
    1770 #define TVC_BYMOUSE           0x01
    1771 #define TVC_BYKEYBOARD        0x02
    1772 
    1773 
    1774 typedef struct _TREEITEM *HTREEITEM;
    1775 
    1776 typedef struct {
    1777       UINT mask;
    1778       HTREEITEM hItem;
    1779       UINT state;
    1780       UINT stateMask;
    1781       LPSTR  pszText;
    1782       INT  cchTextMax;
    1783       INT  iImage;
    1784       INT  iSelectedImage;
    1785       INT  cChildren;
    1786       LPARAM lParam;
    1787 } TVITEMA, *LPTVITEMA;
    1788 
    1789 typedef struct {
    1790       UINT mask;
    1791       HTREEITEM hItem;
    1792       UINT state;
    1793       UINT stateMask;
    1794       LPWSTR pszText;
    1795       INT cchTextMax;
    1796       INT iImage;
    1797       INT iSelectedImage;
    1798       INT cChildren;
    1799       LPARAM lParam;
    1800 } TVITEMW, *LPTVITEMW;
    1801 
    1802 #define TVITEM     WINELIB_NAME_AW(TVITEM)
    1803 #define LPTVITEM   WINELIB_NAME_AW(LPTVITEM)
    1804 #define TV_ITEM     TVITEM
    1805 
    1806 typedef struct {
    1807       UINT mask;
    1808       HTREEITEM hItem;
    1809       UINT state;
    1810       UINT stateMask;
    1811       LPSTR  pszText;
    1812       INT  cchTextMax;
    1813       INT  iImage;
    1814       INT  iSelectedImage;
    1815       INT  cChildren;
    1816       LPARAM lParam;
    1817       INT iIntegral;
    1818 } TVITEMEXA, *LPTVITEMEXA;
    1819 
    1820 typedef struct {
    1821       UINT mask;
    1822       HTREEITEM hItem;
    1823       UINT state;
    1824       UINT stateMask;
    1825       LPWSTR pszText;
    1826       INT cchTextMax;
    1827       INT iImage;
    1828       INT iSelectedImage;
    1829       INT cChildren;
    1830       LPARAM lParam;
    1831       INT iIntegral;
    1832 } TVITEMEXW, *LPTVITEMEXW;
    1833 
    1834 #define TVITEMEX   WINELIB_NAME_AW(TVITEMEX)
    1835 #define LPTVITEMEX WINELIB_NAME_AW(LPTVITEMEX)
    1836 
    1837 typedef struct tagTVINSERTSTRUCTA {
    1838         HTREEITEM hParent;
    1839         HTREEITEM hInsertAfter;
    1840         union {
    1841            TVITEMEXA itemex;
    1842            TVITEMA   item;
    1843         } DUMMYUNIONNAME;
    1844 } TVINSERTSTRUCTA, *LPTVINSERTSTRUCTA;
    1845 
    1846 typedef struct tagTVINSERTSTRUCTW {
    1847         HTREEITEM hParent;
    1848         HTREEITEM hInsertAfter;
    1849         union {
    1850            TVITEMEXW itemex;
    1851            TVITEMW   item;
    1852         } DUMMYUNIONNAME;
    1853 } TVINSERTSTRUCTW, *LPTVINSERTSTRUCTW;
    1854 
    1855 #define TV_INSERTSTRUCT   WINELIB_NAME_AW(TVINSERTSTRUCT)
    1856 #define LPTV_INSERTSTRUCT WINELIB_NAME_AW(LPTVINSERTSTRUCT)
    1857 
    1858 #define TVINSERTSTRUCT_V1_SIZEA CCSIZEOF_STRUCT(TVINSERTSTRUCTA, item)
    1859 #define TVINSERTSTRUCT_V1_SIZEW CCSIZEOF_STRUCT(TVINSERTSTRUCTW, item)
    1860 #define TVINSERTSTRUCT_V1_SIZE    WINELIB_NAME_AW(TVINSERTSTRUCT_V1_SIZE)
    1861 
    1862 
    1863 
    1864 typedef struct tagNMTREEVIEWA {
    1865         NMHDR   hdr;
    1866         UINT    action;
    1867         TVITEMA itemOld;
    1868         TVITEMA itemNew;
    1869         POINT   ptDrag;
    1870 } NMTREEVIEWA, *LPNMTREEVIEWA;
    1871 
    1872 typedef struct tagNMTREEVIEWW {
    1873         NMHDR   hdr;
    1874         UINT    action;
    1875         TVITEMW itemOld;
    1876         TVITEMW itemNew;
    1877         POINT   ptDrag;
    1878 } NMTREEVIEWW, *LPNMTREEVIEWW;
    1879 
    1880 #define NMTREEVIEW     WINELIB_NAME_AW(NMTREEVIEW)
    1881 #define NM_TREEVIEW    WINELIB_NAME_AW(NMTREEVIEW)
    1882 #define LPNMTREEVIEW   WINELIB_NAME_AW(LPNMTREEVIEW)
    1883 
    1884 typedef struct tagTVDISPINFOA {
    1885         NMHDR   hdr;
    1886         TVITEMA item;
    1887 } NMTVDISPINFOA, *LPNMTVDISPINFOA;
    1888 
    1889 typedef struct tagTVDISPINFOW {
    1890         NMHDR   hdr;
    1891         TVITEMW item;
    1892 } NMTVDISPINFOW, *LPNMTVDISPINFOW;
    1893 
    1894 #define NMTVDISPINFO            WINELIB_NAME_AW(NMTVDISPINFO)
    1895 #define LPNMTVDISPINFO          WINELIB_NAME_AW(LPNMTVDISPINFO)
    1896 #define TV_DISPINFO             NMTVDISPINFO
    1897 
    1898 typedef INT (CALLBACK *PFNTVCOMPARE)(LPARAM, LPARAM, LPARAM);
    1899 
    1900 typedef struct tagTVSORTCB
    1901 {
    1902         HTREEITEM hParent;
    1903         PFNTVCOMPARE lpfnCompare;
    1904         LPARAM lParam;
    1905 } TVSORTCB, *LPTVSORTCB;
    1906 
    1907 #define TV_SORTCB TVSORTCB
    1908 #define LPTV_SORTCB LPTVSORTCB
    1909 
    1910 typedef struct tagTVHITTESTINFO {
    1911         POINT pt;
    1912         UINT flags;
    1913         HTREEITEM hItem;
    1914 } TVHITTESTINFO, *LPTVHITTESTINFO;
    1915 
    1916 #define TV_HITTESTINFO TVHITTESTINFO
    1917 
    1918 
    1919 /* Custom Draw Treeview */
    1920 
    1921 #define NMTVCUSTOMDRAW_V3_SIZE CCSIZEOF_STRUCT(NMTVCUSTOMDRAW, clrTextBk)
    1922 
    1923 #define TVCDRF_NOIMAGES     0x00010000
    1924 
    1925 typedef struct tagNMTVCUSTOMDRAW
    1926 {
    1927     NMCUSTOMDRAW nmcd;
    1928     COLORREF     clrText;
    1929     COLORREF     clrTextBk;
    1930     INT iLevel;                 /* IE>0x0400 */
    1931 } NMTVCUSTOMDRAW, *LPNMTVCUSTOMDRAW;
    1932 
    1933 /* Treeview tooltips */
    1934 
    1935 typedef struct tagNMTVGETINFOTIPA
    1936 {
    1937     NMHDR hdr;
    1938     LPSTR pszText;
    1939     INT cchTextMax;
    1940     HTREEITEM hItem;
    1941     LPARAM lParam;
    1942 } NMTVGETINFOTIPA, *LPNMTVGETINFOTIPA;
    1943 
    1944 typedef struct tagNMTVGETINFOTIPW
    1945 {
    1946     NMHDR hdr;
    1947     LPWSTR pszText;
    1948     INT cchTextMax;
    1949     HTREEITEM hItem;
    1950     LPARAM lParam;
    1951 } NMTVGETINFOTIPW, *LPNMTVGETINFOTIPW;
    1952 
    1953 
    1954 
    1955 
    1956 
    1957 
    1958 
    1959 #define TreeView_InsertItemA(hwnd, phdi) \
    1960   (INT)SendMessageA((hwnd), TVM_INSERTITEMA, 0, \
    1961                             (LPARAM)(LPTVINSERTSTRUCTA)(phdi))
    1962 #define TreeView_DeleteItem(hwnd, hItem) \
    1963   (BOOL)SendMessageA((hwnd), TVM_DELETEITEM, 0, (LPARAM)(HTREEITEM)(hItem))
    1964 #define TreeView_DeleteAllItems(hwnd) \
    1965   (BOOL)SendMessageA((hwnd), TVM_DELETEITEM, 0, (LPARAM)TVI_ROOT)
    1966 #define TreeView_Expand(hwnd, hitem, code) \
    1967  (BOOL)SendMessageA((hwnd), TVM_EXPAND, (WPARAM)code, \
    1968         (LPARAM)(HTREEITEM)(hitem))
    1969 
    1970 #define TreeView_GetItemRect(hwnd, hitem, prc, code) \
    1971  (*(HTREEITEM *)prc = (hitem), (BOOL)SendMessageA((hwnd), \
    1972                         TVM_GETITEMRECT, (WPARAM)(code), (LPARAM)(RECT *)(prc)))
    1973 
    1974 #define TreeView_GetCount(hwnd) \
    1975     (UINT)SendMessageA((hwnd), TVM_GETCOUNT, 0, 0)
    1976 #define TreeView_GetIndent(hwnd) \
    1977     (UINT)SendMessageA((hwnd), TVM_GETINDENT, 0, 0)
    1978 #define TreeView_SetIndent(hwnd, indent) \
    1979     (BOOL)SendMessageA((hwnd), TVM_SETINDENT, (WPARAM)indent, 0)
    1980 
    1981 #define TreeView_GetImageList(hwnd, iImage) \
    1982     (HIMAGELIST)SendMessageA((hwnd), TVM_GETIMAGELIST, iImage, 0)
    1983 
    1984 #define TreeView_SetImageList(hwnd, himl, iImage) \
    1985     (HIMAGELIST)SendMessageA((hwnd), TVM_SETIMAGELIST, iImage, \
    1986  (LPARAM)(UINT)(HIMAGELIST)(himl))
    1987 
    1988 #define TreeView_GetNextItem(hwnd, hitem, code) \
    1989     (HTREEITEM)SendMessageA((hwnd), TVM_GETNEXTITEM, (WPARAM)code,\
    1990 (LPARAM)(HTREEITEM) (hitem))
    1991 
    1992 #define TreeView_GetChild(hwnd, hitem) \
    1993                  TreeView_GetNextItem(hwnd, hitem , TVGN_CHILD)
    1994 #define TreeView_GetNextSibling(hwnd, hitem) \
    1995                 TreeView_GetNextItem(hwnd, hitem , TVGN_NEXT)
    1996 #define TreeView_GetPrevSibling(hwnd, hitem) \
    1997                 TreeView_GetNextItem(hwnd, hitem , TVGN_PREVIOUS)
    1998 #define TreeView_GetParent(hwnd, hitem) \
    1999                 TreeView_GetNextItem(hwnd, hitem , TVGN_PARENT)
    2000 #define TreeView_GetFirstVisible(hwnd)  \
    2001                 TreeView_GetNextItem(hwnd, NULL, TVGN_FIRSTVISIBLE)
    2002 #define TreeView_GetLastVisible(hwnd)   \
    2003                 TreeView_GetNextItem(hwnd, NULL, TVGN_LASTVISIBLE)
    2004 #define TreeView_GetNextVisible(hwnd, hitem) \
    2005                 TreeView_GetNextItem(hwnd, hitem , TVGN_NEXTVISIBLE)
    2006 #define TreeView_GetPrevVisible(hwnd, hitem) \
    2007                 TreeView_GetNextItem(hwnd, hitem , TVGN_PREVIOUSVISIBLE)
    2008 #define TreeView_GetSelection(hwnd) \
    2009                 TreeView_GetNextItem(hwnd, NULL, TVGN_CARET)
    2010 #define TreeView_GetDropHilight(hwnd) \
    2011                 TreeView_GetNextItem(hwnd, NULL, TVGN_DROPHILITE)
    2012 #define TreeView_GetRoot(hwnd) \
    2013                 TreeView_GetNextItem(hwnd, NULL, TVGN_ROOT)
    2014 #define TreeView_GetLastVisible(hwnd) \
    2015                 TreeView_GetNextItem(hwnd, NULL, TVGN_LASTVISIBLE)
    2016 
    2017 
    2018 #define TreeView_Select(hwnd, hitem, code) \
    2019  (UINT)SendMessageA((hwnd), TVM_SELECTITEM, (WPARAM)code, \
    2020 (LPARAM)(UINT)(hitem))
    2021 
    2022 
    2023 #define TreeView_SelectItem(hwnd, hitem) \
    2024                 TreeView_Select(hwnd, hitem, TVGN_CARET)
    2025 #define TreeView_SelectDropTarget(hwnd, hitem) \
    2026                 TreeView_Select(hwnd, hitem, TVGN_DROPHILITE)
    2027 /* FIXME
    2028 #define TreeView_SelectSetFirstVisible(hwnd, hitem)  \
    2029                 TreeView_Select(hwnd, hitem, TVGN_FIRSTVISIBLE)
    2030 */
    2031 
    2032 #define TreeView_GetItemA(hwnd, pitem) \
    2033  (BOOL)SendMessageA((hwnd), TVM_GETITEMA, 0, (LPARAM) (TVITEMA *)(pitem))
    2034 
    2035 #define TreeView_SetItemA(hwnd, pitem) \
    2036  (BOOL)SendMessageA((hwnd), TVM_SETITEMA, 0, (LPARAM)(const TVITEMA *)(pitem))
    2037 
    2038 #define TreeView_EditLabel(hwnd, hitem) \
    2039     (HWND)SendMessageA((hwnd), TVM_EDITLABEL, 0, (LPARAM)(HTREEITEM)(hitem))
    2040 
    2041 
    2042 #define TreeView_GetEditControl(hwnd) \
    2043     (HWND)SendMessageA((hwnd), TVM_GETEDITCONTROL, 0, 0)
    2044 
    2045 #define TreeView_GetVisibleCount(hwnd) \
    2046     (UINT)SendMessageA((hwnd), TVM_GETVISIBLECOUNT, 0, 0)
    2047 
    2048 #define TreeView_HitTest(hwnd, lpht) \
    2049     (HTREEITEM)SendMessageA((hwnd), TVM_HITTEST, 0,\
    2050 (LPARAM)(LPTVHITTESTINFO)(lpht))
    2051 
    2052 #define TreeView_CreateDragImage(hwnd, hitem) \
    2053     (HIMAGELIST)SendMessageA((hwnd), TVM_CREATEDRAGIMAGE, 0,\
    2054 (LPARAM)(HTREEITEM)(hitem))
    2055 
    2056 #define TreeView_SortChildren(hwnd, hitem, recurse) \
    2057     (BOOL)SendMessageA((hwnd), TVM_SORTCHILDREN, (WPARAM)recurse,\
    2058 (LPARAM)(HTREEITEM)(hitem))
    2059 
    2060 #define TreeView_EnsureVisible(hwnd, hitem) \
    2061     (BOOL)SendMessageA((hwnd), TVM_ENSUREVISIBLE, 0, (LPARAM)(UINT)(hitem))
    2062 
    2063 #define TreeView_SortChildrenCB(hwnd, psort, recurse) \
    2064     (BOOL)SendMessageA((hwnd), TVM_SORTCHILDRENCB, (WPARAM)recurse, \
    2065     (LPARAM)(LPTV_SORTCB)(psort))
    2066 
    2067 #define TreeView_EndEditLabelNow(hwnd, fCancel) \
    2068     (BOOL)SendMessageA((hwnd), TVM_ENDEDITLABELNOW, (WPARAM)fCancel, 0)
    2069 
    2070 #define TreeView_GetISearchString(hwndTV, lpsz) \
    2071     (BOOL)SendMessageA((hwndTV), TVM_GETISEARCHSTRING, 0, \
    2072                                                         (LPARAM)(LPTSTR)lpsz)
    2073 
    2074 #define TreeView_SetItemHeight(hwnd,  iHeight) \
    2075     (INT)SendMessageA((hwnd), TVM_SETITEMHEIGHT, (WPARAM)iHeight, 0)
    2076 #define TreeView_GetItemHeight(hwnd) \
    2077     (INT)SendMessageA((hwnd), TVM_GETITEMHEIGHT, 0, 0)
    2078 
    2079 #define TreeView_SetBkColor(hwnd, clr) \
    2080     (COLORREF)SendMessageA((hwnd), TVM_SETBKCOLOR, 0, (LPARAM)clr)
    2081 
    2082 #define TreeView_SetTextColor(hwnd, clr) \
    2083     (COLORREF)SendMessageA((hwnd), TVM_SETTEXTCOLOR, 0, (LPARAM)clr)
    2084 
    2085 #define TreeView_GetBkColor(hwnd) \
    2086     (COLORREF)SendMessageA((hwnd), TVM_GETBKCOLOR, 0, 0)
    2087 
    2088 #define TreeView_GetTextColor(hwnd) \
    2089     (COLORREF)SendMessageA((hwnd), TVM_GETTEXTCOLOR, 0, 0)
    2090 
    2091 #define TreeView_SetScrollTime(hwnd, uTime) \
    2092     (UINT)SendMessageA((hwnd), TVM_SETSCROLLTIME, uTime, 0)
    2093 
    2094 #define TreeView_GetScrollTime(hwnd) \
    2095     (UINT)SendMessageA((hwnd), TVM_GETSCROLLTIME, 0, 0)
    2096 
    2097 #define TreeView_SetInsertMarkColor(hwnd, clr) \
    2098     (COLORREF)SendMessageA((hwnd), TVM_SETINSERTMARKCOLOR, 0, (LPARAM)clr)
    2099 #define TreeView_GetInsertMarkColor(hwnd) \
    2100     (COLORREF)SendMessageA((hwnd), TVM_GETINSERTMARKCOLOR, 0, 0)
    2101 
    2102 
    2103 
    2104 
    2105 
    2106 
    2107 
    2108 
    2109 
    2110 /* Listview control */
    2111 
    2112 #define WC_LISTVIEWA          "SysListView32"
    2113 #define WC_LISTVIEWW          L"SysListView32"
    2114 #define WC_LISTVIEW  WINELIB_NAME_AW(WC_LISTVIEW)
    2115 
    2116 #define LVS_ICON                0x0000
    2117 #define LVS_REPORT              0x0001
    2118 #define LVS_SMALLICON           0x0002
    2119 #define LVS_LIST                0x0003
    2120 #define LVS_TYPEMASK            0x0003
    2121 #define LVS_SINGLESEL           0x0004
    2122 #define LVS_SHOWSELALWAYS       0x0008
    2123 #define LVS_SORTASCENDING       0x0010
    2124 #define LVS_SORTDESCENDING      0x0020
    2125 #define LVS_SHAREIMAGELISTS     0x0040
    2126 #define LVS_NOLABELWRAP         0x0080
    2127 #define LVS_AUTOARRANGE         0x0100
    2128 #define LVS_EDITLABELS          0x0200
    2129 #define LVS_OWNERDATA           0x1000
    2130 #define LVS_NOSCROLL            0x2000
    2131 #define LVS_TYPESTYLEMASK       0xfc00
    2132 #define LVS_ALIGNTOP            0x0000
    2133 #define LVS_ALIGNLEFT           0x0800
    2134 #define LVS_ALIGNMASK           0x0c00
    2135 #define LVS_OWNERDRAWFIXED      0x0400
    2136 #define LVS_NOCOLUMNHEADER      0x4000
    2137 #define LVS_NOSORTHEADER        0x8000
    2138 
    2139 #define LVCF_FMT                0x0001
    2140 #define LVCF_WIDTH              0x0002
    2141 #define LVCF_TEXT               0x0004
    2142 #define LVCF_SUBITEM            0x0008
    2143 #define LVCF_IMAGE              0x0010
    2144 #define LVCF_ORDER              0x0020
    2145 
    2146 #define LVCFMT_LEFT             0x0000
    2147 #define LVCFMT_RIGHT            0x0001
    2148 #define LVCFMT_CENTER           0x0002
    2149 #define LVCFMT_JUSTIFYMASK      0x0003
    2150 #define LVCFMT_IMAGE            0x0800
    2151 #define LVCFMT_BITMAP_ON_RIGHT  0x1000
    2152 #define LVCFMT_COL_HAS_IMAGES   0x8000
    2153 
    2154 #define LVSIL_NORMAL            0
    2155 #define LVSIL_SMALL             1
    2156 #define LVSIL_STATE             2
    2157 
    2158 #define LVIS_FOCUSED            0x0001
    2159 #define LVIS_SELECTED           0x0002
    2160 #define LVIS_CUT                0x0004
    2161 #define LVIS_DROPHILITED        0x0008
    2162 #define LVIS_ACTIVATING         0x0020
    2163 
    2164 #define LVFI_PARAM              0X0001
    2165 #define LVFI_STRING             0X0002
    2166 #define LVFI_PARTIAL            0X0008
    2167 #define LVFI_WRAP               0X0020 
    2168 #define LVFI_NEARESTXY          0X0040
    2169 
    2170 #define LVIF_TEXT               0x0001
    2171 #define LVIF_IMAGE              0x0002
    2172 #define LVIF_PARAM              0x0004
    2173 #define LVIF_STATE              0x0008
    2174 #define LVIF_INDENT             0x0010
    2175 #define LVIF_NORECOMPUTE        0x0800
    2176 #define LVIF_DI_SETITEM         0x1000
    2177 
    2178 #define LVIR_BOUNDS             0x0000
    2179 #define LVIR_LABEL              0x0002
    2180 #define LVIR_ICON               0x0001
    2181 #define LVIR_SELECTBOUNDS       0x0003
    2182 
    2183 #define LVIS_FOCUSED            0x0001
    2184 #define LVIS_SELECTED           0x0002
    2185 #define LVIS_CUT                0x0004
    2186 #define LVIS_DROPHILITED        0x0008
    2187 #define LVIS_ACTIVATING         0x0020
    2188 
    2189 #define LVIS_OVERLAYMASK        0x0F00
    2190 #define LVIS_STATEIMAGEMASK     0xF000
    2191 
    2192 #define LVNI_ALL                0x0000
    2193 #define LVNI_FOCUSED            0x0001
    2194 #define LVNI_SELECTED           0x0002
    2195 #define LVNI_CUT                0x0004
    2196 #define LVNI_DROPHILITED        0x0008
    2197 
    2198 #define LVNI_ABOVE              0x0100
    2199 #define LVNI_BELOW              0x0200
    2200 #define LVNI_TOLEFT             0x0400
    2201 #define LVNI_TORIGHT            0x0800
    2202 
    2203 #define LVHT_NOWHERE            0x0001
    2204 #define LVHT_ONITEMICON         0x0002
    2205 #define LVHT_ONITEMLABEL        0x0004
    2206 #define LVHT_ONITEMSTATEICON    0x0008
    2207 #define LVHT_ONITEM             (LVHT_ONITEMICON|LVHT_ONITEMLABEL|LVHT_ONITEMSTATEICON)
    2208 
    2209 #define LVHT_ABOVE              0x0008
    2210 #define LVHT_BELOW              0x0010
    2211 #define LVHT_TORIGHT            0x0020
    2212 #define LVHT_TOLEFT             0x0040
    2213 
    2214 #define LVM_FIRST               0x1000
    2215 #define LVM_GETBKCOLOR          (LVM_FIRST+0)
    2216 #define LVM_SETBKCOLOR          (LVM_FIRST+1)
    2217 #define LVM_GETIMAGELIST        (LVM_FIRST+2)
    2218 #define LVM_SETIMAGELIST        (LVM_FIRST+3)
    2219 #define LVM_GETITEMCOUNT        (LVM_FIRST+4)
    2220 #define LVM_GETITEMA          (LVM_FIRST+5)
    2221 #define LVM_GETITEMW          (LVM_FIRST+75)
    2222 #define LVM_GETITEM             WINELIB_NAME_AW(LVM_GETITEM)
    2223 #define LVM_SETITEMA          (LVM_FIRST+6)
    2224 #define LVM_SETITEMW          (LVM_FIRST+76)
    2225 #define LVM_SETITEM             WINELIB_NAME_AW(LVM_SETITEM)
    2226 #define LVM_INSERTITEMA       (LVM_FIRST+7)
    2227 #define LVM_INSERTITEMW       (LVM_FIRST+77)
    2228 #define LVM_INSERTITEM          WINELIB_NAME_AW(LVM_INSERTITEM)
    2229 #define LVM_DELETEITEM          (LVM_FIRST+8)
    2230 #define LVM_DELETEALLITEMS      (LVM_FIRST+9)
    2231 #define LVM_GETCALLBACKMASK     (LVM_FIRST+10)
    2232 #define LVM_SETCALLBACKMASK     (LVM_FIRST+11)
    2233 #define LVM_GETNEXTITEM         (LVM_FIRST+12)
    2234 #define LVM_FINDITEMA         (LVM_FIRST+13)
    2235 #define LVM_FINDITEMW         (LVM_FIRST+83)
    2236 #define LVM_FINDITEM            WINELIB_NAME_AW(LVM_FINDITEM)
    2237 #define LVM_GETITEMRECT         (LVM_FIRST+14)
    2238 #define LVM_SETITEMPOSITION     (LVM_FIRST+15)
    2239 #define LVM_GETITEMPOSITION     (LVM_FIRST+16)
    2240 #define LVM_GETSTRINGWIDTHA   (LVM_FIRST+17)
    2241 #define LVM_GETSTRINGWIDTHW   (LVM_FIRST+87)
    2242 #define LVM_GETSTRINGWIDTH      WINELIB_NAME_AW(LVM_GETSTRINGWIDTH)
    2243 #define LVM_HITTEST             (LVM_FIRST+18)
    2244 #define LVM_ENSUREVISIBLE       (LVM_FIRST+19)
    2245 #define LVM_SCROLL              (LVM_FIRST+20)
    2246 #define LVM_REDRAWITEMS         (LVM_FIRST+21)
    2247 #define LVM_ARRANGE             (LVM_FIRST+22)
    2248 #define LVM_EDITLABELA        (LVM_FIRST+23)
    2249 #define LVM_EDITLABELW        (LVM_FIRST+118)
    2250 #define LVM_EDITLABEL           WINELIB_NAME_AW(LVM_EDITLABEL)
    2251 #define LVM_GETEDITCONTROL      (LVM_FIRST+24)
    2252 #define LVM_GETCOLUMNA        (LVM_FIRST+25)
    2253 #define LVM_GETCOLUMNW        (LVM_FIRST+95)
    2254 #define LVM_GETCOLUMN           WINELIB_NAME_AW(LVM_GETCOLUMN)
    2255 #define LVM_SETCOLUMNA        (LVM_FIRST+26)
    2256 #define LVM_SETCOLUMNW        (LVM_FIRST+96)
    2257 #define LVM_SETCOLUMN           WINELIB_NAME_AW(LVM_SETCOLUMN)
    2258 #define LVM_INSERTCOLUMNA     (LVM_FIRST+27)
    2259 #define LVM_INSERTCOLUMNW     (LVM_FIRST+97)
    2260 #define LVM_INSERTCOLUMN        WINELIB_NAME_AW(LVM_INSERTCOLUMN)
    2261 #define LVM_DELETECOLUMN        (LVM_FIRST+28)
    2262 #define LVM_GETCOLUMNWIDTH      (LVM_FIRST+29)
    2263 #define LVM_SETCOLUMNWIDTH      (LVM_FIRST+30)
    2264 #define LVM_GETHEADER           (LVM_FIRST+31)
    2265 
    2266 #define LVM_CREATEDRAGIMAGE     (LVM_FIRST+33)
    2267 #define LVM_GETVIEWRECT         (LVM_FIRST+34)
    2268 #define LVM_GETTEXTCOLOR        (LVM_FIRST+35)
    2269 #define LVM_SETTEXTCOLOR        (LVM_FIRST+36)
    2270 #define LVM_GETTEXTBKCOLOR      (LVM_FIRST+37)
    2271 #define LVM_SETTEXTBKCOLOR      (LVM_FIRST+38)
    2272 #define LVM_GETTOPINDEX         (LVM_FIRST+39)
    2273 #define LVM_GETCOUNTPERPAGE     (LVM_FIRST+40)
    2274 #define LVM_GETORIGIN           (LVM_FIRST+41)
    2275 #define LVM_UPDATE              (LVM_FIRST+42)
    2276 #define LVM_SETITEMSTATE        (LVM_FIRST+43)
    2277 #define LVM_GETITEMSTATE        (LVM_FIRST+44)
    2278 #define LVM_GETITEMTEXTA      (LVM_FIRST+45)
    2279 #define LVM_GETITEMTEXTW      (LVM_FIRST+115)
    2280 #define LVM_GETITEMTEXT         WINELIB_NAME_AW(LVM_GETITEMTEXT)
    2281 #define LVM_SETITEMTEXTA      (LVM_FIRST+46)
    2282 #define LVM_SETITEMTEXTW      (LVM_FIRST+116)
    2283 #define LVM_SETITEMTEXT         WINELIB_NAME_AW(LVM_SETITEMTEXT)
    2284 #define LVM_SETITEMCOUNT        (LVM_FIRST+47)
    2285 #define LVM_SORTITEMS           (LVM_FIRST+48)
    2286 #define LVM_SETITEMPOSITION32   (LVM_FIRST+49)
    2287 #define LVM_GETSELECTEDCOUNT    (LVM_FIRST+50)
    2288 #define LVM_GETITEMSPACING      (LVM_FIRST+51)
    2289 #define LVM_GETISEARCHSTRINGA (LVM_FIRST+52)
    2290 #define LVM_GETISEARCHSTRINGW (LVM_FIRST+117)
    2291 #define LVM_GETISEARCHSTRING    WINELIB_NAME_AW(LVM_GETISEARCHSTRING)
    2292 #define LVM_SETICONSPACING      (LVM_FIRST+53)
    2293 #define LVM_SETEXTENDEDLISTVIEWSTYLE (LVM_FIRST+54)
    2294 #define LVM_GETEXTENDEDLISTVIEWSTYLE (LVM_FIRST+55)
    2295 #define LVM_GETSUBITEMRECT      (LVM_FIRST+56)
    2296 #define LVM_SUBITEMHITTEST      (LVM_FIRST+57)
    2297 #define LVM_SETCOLUMNORDERARRAY (LVM_FIRST+58)
    2298 #define LVM_GETCOLUMNORDERARRAY (LVM_FIRST+59)
    2299 #define LVM_SETHOTITEM          (LVM_FIRST+60)
    2300 #define LVM_GETHOTITEM          (LVM_FIRST+61)
    2301 #define LVM_SETHOTCURSOR        (LVM_FIRST+62)
    2302 #define LVM_GETHOTCURSOR        (LVM_FIRST+63)
    2303 #define LVM_APPROXIMATEVIEWRECT (LVM_FIRST+64)
    2304 #define LVM_SETWORKAREAS        (LVM_FIRST+65)
    2305 #define LVM_GETSELECTIONMARK    (LVM_FIRST+66)
    2306 #define LVM_SETSELECTIONMARK    (LVM_FIRST+67)
    2307 #define LVM_SETBKIMAGEA       (LVM_FIRST+68)
    2308 #define LVM_SETBKIMAGEW       (LVM_FIRST+138)
    2309 #define LVM_SETBKIMAGE          WINELIB_NAME_AW(LVM_SETBKIMAGE)
    2310 #define LVM_GETBKIMAGEA       (LVM_FIRST+69)
    2311 #define LVM_GETBKIMAGEW       (LVM_FIRST+139)
    2312 #define LVM_GETBKIMAGE          WINELIB_NAME_AW(LVM_GETBKIMAGE)
    2313 #define LVM_GETWORKAREAS        (LVM_FIRST+70)
    2314 #define LVM_SETHOVERTIME        (LVM_FIRST+71)
    2315 #define LVM_GETHOVERTIME        (LVM_FIRST+72)
    2316 #define LVM_GETNUMBEROFWORKAREAS (LVM_FIRST+73)
    2317 #define LVM_SETTOOLTIPS         (LVM_FIRST+74)
    2318 
    2319 #define LVM_GETTOOLTIPS         (LVM_FIRST+78)
    2320 
    2321 #define LVN_FIRST               (0U-100U)
    2322 #define LVN_LAST                (0U-199U)
    2323 #define LVN_ITEMCHANGING        (LVN_FIRST-0)
    2324 #define LVN_ITEMCHANGED         (LVN_FIRST-1)
    2325 #define LVN_INSERTITEM          (LVN_FIRST-2)
    2326 #define LVN_DELETEITEM          (LVN_FIRST-3)
    2327 #define LVN_DELETEALLITEMS      (LVN_FIRST-4)
    2328 #define LVN_BEGINLABELEDITA   (LVN_FIRST-5)
    2329 #define LVN_BEGINLABELEDITW   (LVN_FIRST-75)
    2330 #define LVN_BEGINLABELEDIT WINELIB_NAME_AW(LVN_BEGINLABELEDIT)
    2331 #define LVN_ENDLABELEDITA     (LVN_FIRST-6)
    2332 #define LVN_ENDLABELEDITW     (LVN_FIRST-76)
    2333 #define LVN_ENDLABELEDIT WINELIB_NAME_AW(LVN_ENDLABELEDIT)
    2334 #define LVN_COLUMNCLICK         (LVN_FIRST-8)
    2335 #define LVN_BEGINDRAG           (LVN_FIRST-9)
    2336 #define LVN_BEGINRDRAG          (LVN_FIRST-11)
    2337 #define LVN_ODCACHEHINT         (LVN_FIRST-13)
    2338 #define LVN_ODFINDITEMA       (LVN_FIRST-52)
    2339 #define LVN_ODFINDITEMW       (LVN_FIRST-79)
    2340 #define LVN_ODFINDITEM WINELIB_NAME_AW(LVN_ODFINDITEM)
    2341 #define LVN_ITEMACTIVATE        (LVN_FIRST-14)
    2342 #define LVN_ODSTATECHANGED      (LVN_FIRST-15)
    2343 #define LVN_HOTTRACK            (LVN_FIRST-21)
    2344 #define LVN_GETDISPINFOA      (LVN_FIRST-50)
    2345 #define LVN_GETDISPINFOW      (LVN_FIRST-77)
    2346 #define LVN_GETDISPINFO WINELIB_NAME_AW(LVN_GETDISPINFO)
    2347 #define LVN_SETDISPINFOA      (LVN_FIRST-51)
    2348 #define LVN_SETDISPINFOW      (LVN_FIRST-78)
    2349 #define LVN_SETDISPINFO WINELIB_NAME_AW(LVN_SETDISPINFO)
    2350 
    2351 #define LVA_ALIGNLEFT           0x0000
    2352 #define LVA_DEFAULT             0x0001
    2353 #define LVA_ALIGNTOP            0x0002
    2354 #define LVA_SNAPTOGRID          0x0005
    2355 
    2356 typedef struct tagLVITEMA
    2357 {
    2358     UINT mask;
    2359     INT  iItem;
    2360     INT  iSubItem;
    2361     UINT state;
    2362     UINT stateMask;
    2363     LPSTR  pszText;
    2364     INT  cchTextMax;
    2365     INT  iImage;
    2366     LPARAM lParam;
    2367     INT  iIndent;       /* (_WIN32_IE >= 0x0300) */
    2368 } LVITEMA, *LPLVITEMA;
    2369 
    2370 typedef struct tagLVITEMW
    2371 {
    2372     UINT mask;
    2373     INT  iItem;
    2374     INT  iSubItem;
    2375     UINT state;
    2376     UINT stateMask;
    2377     LPWSTR pszText;
    2378     INT  cchTextMax;
    2379     INT  iImage;
    2380     LPARAM lParam;
    2381     INT  iIndent;       /* (_WIN32_IE >= 0x0300) */
    2382 } LVITEMW, *LPLVITEMW;
    2383 
    2384 #define LVITEM   WINELIB_NAME_AW(LVITEM)
    2385 #define LPLVITEM WINELIB_NAME_AW(LPLVITEM)
    2386 
    2387 #define LVITEM_V1_SIZEA CCSIZEOF_STRUCT(LVITEMA, lParam)
    2388 #define LVITEM_V1_SIZEW CCSIZEOF_STRUCT(LVITEMW, lParam)
    2389 #define LVITEM_V1_SIZE WINELIB_NAME_AW(LVITEM_V1_SIZE)
    2390 
    2391 #define LV_ITEM LVITEM
    2392 
    2393 typedef struct tagLVCOLUMNA
    2394 {
    2395     UINT mask;
    2396     INT  fmt;
    2397     INT  cx;
    2398     LPSTR  pszText;
    2399     INT  cchTextMax;
    2400     INT  iSubItem;
    2401     INT  iImage;  /* (_WIN32_IE >= 0x0300) */
    2402     INT  iOrder;  /* (_WIN32_IE >= 0x0300) */
    2403 } LVCOLUMNA, *LPLVCOLUMNA;
    2404 
    2405 typedef struct tagLVCOLUMNW
    2406 {
    2407     UINT mask;
    2408     INT  fmt;
    2409     INT  cx;
    2410     LPWSTR pszText;
    2411     INT  cchTextMax;
    2412     INT  iSubItem;
    2413     INT  iImage;        /* (_WIN32_IE >= 0x0300) */
    2414     INT  iOrder;        /* (_WIN32_IE >= 0x0300) */
    2415 } LVCOLUMNW, *LPLVCOLUMNW;
    2416 
    2417 #define LVCOLUMN   WINELIB_NAME_AW(LVCOLUMN)
    2418 #define LPLVCOLUMN WINELIB_NAME_AW(LPLVCOLUMN)
    2419 
    2420 #define LVCOLUMN_V1_SIZEA CCSIZEOF_STRUCT(LVCOLUMNA, iSubItem)
    2421 #define LVCOLUMN_V1_SIZEW CCSIZEOF_STRUCT(LVCOLUMNW, iSubItem)
    2422 #define LVCOLUMN_V1_SIZE WINELIB_NAME_AW(LVCOLUMN_V1_SIZE)
    2423 
    2424 #define LV_COLUMN       LVCOLUMN
    2425 
    2426 
    2427 typedef struct tagNMLISTVIEW
    2428 {
    2429     NMHDR   hdr;
    2430     INT   iItem;
    2431     INT   iSubItem;
    2432     UINT  uNewState;
    2433     UINT  uOldState;
    2434     UINT  uChanged;
    2435     POINT ptAction;
    2436     LPARAM  lParam;
    2437 } NMLISTVIEW, *LPNMLISTVIEW;
    2438 
    2439 #define LPNM_LISTVIEW   LPNMLISTVIEW
    2440 #define NM_LISTVIEW     NMLISTVIEW
    2441 
    2442 
    2443 typedef struct tagLVDISPINFO
    2444 {
    2445     NMHDR     hdr;
    2446     LVITEMA item;
    2447 } NMLVDISPINFOA, *LPNMLVDISPINFOA;
    2448 
    2449 typedef struct tagLVDISPINFOW
    2450 {
    2451     NMHDR     hdr;
    2452     LVITEMW item;
    2453 } NMLVDISPINFOW, *LPNMLVDISPINFOW;
    2454 
    2455 #define NMLVDISPINFO   WINELIB_NAME_AW(NMLVDISPINFO)
    2456 #define LPNMLVDISPINFO WINELIB_NAME_AW(LPNMLVDISPINFO)
    2457 
    2458 #define LV_DISPINFO     NMLVDISPINFO
    2459 
    2460 #define LVN_KEYDOWN     (LVN_FIRST-55)
    2461 
    2462 typedef struct tagLVKEYDOWN
    2463 {
    2464   NMHDR hdr;
    2465   WORD  wVKey;
    2466   UINT flags;
    2467 } NMLVKEYDOWN, *LPNMLVKEYDOWN;
    2468 
    2469 #define LV_KEYDOWN     NMLVKEYDOWN
    2470 
    2471 typedef struct tagLVHITTESTINFO
    2472 {
    2473     POINT pt;
    2474     UINT  flags;
    2475     INT   iItem;
    2476     INT   iSubItem;
    2477 } LVHITTESTINFO, *LPLVHITTESTINFO;
    2478 
    2479 #define LV_HITTESTINFO LVHITTESTINFO
    2480 #define _LV_HITTESTINFO tagLVHITTESTINFO
    2481 #define LVHITTESTINFO_V1_SIZE CCSIZEOF_STRUCT(LVHITTESTINFO,iItem)
    2482 
    2483 typedef struct tagLVFINDINFO
    2484 {
    2485         UINT flags;
    2486         LPCSTR psz;
    2487         LPARAM lParam;
    2488         POINT pt;
    2489         UINT vkDirection;
    2490 } LVFINDINFO, *LPLVFINDINFO;
    2491 
    2492 #define LV_FINDINFO LVFINDINFO
    2493 
    2494 typedef struct tagTCHITTESTINFO
    2495 {
    2496         POINT pt;
    2497         UINT flags;
    2498 } TCHITTESTINFO, *LPTCHITTESTINFO;
    2499 
    2500 #define TC_HITTESTINFO TCHITTESTINFO
    2501 
    2502 typedef INT (CALLBACK *PFNLVCOMPARE)(LPARAM, LPARAM, LPARAM);
    2503 
    2504 #define ListView_Arrange(hwnd,code) \
    2505     (INT)SendMessageA((hwnd),LVM_ARRANGE,(WPARAM)(INT)(code),0L)
    2506 #define ListView_GetItemPosition(hwnd,i,ppt) \
    2507     (INT)SendMessageA((hwnd),LVM_GETITEMPOSITION,(WPARAM)(INT)(i),(LPARAM)(LPPOINT)(ppt))
    2508 #define ListView_GetItemRect(hwnd,i,prc) \
    2509     (INT)SendMessageA((hwnd),LVM_GETITEMRECT,(WPARAM)(INT)(i),(LPARAM)(LPRECT)(prc))
    2510 #define ListView_SetItemA(hwnd,pitem) \
    2511     (INT)SendMessageA((hwnd),LVM_SETITEMA,0,(LPARAM)(const LVITEMA *)(pitem))
    2512 #define ListView_SetItemState(hwnd,i,pitem) \
    2513     (BOOL)SendMessageA((hwnd),LVM_SETITEMSTATE,(WPARAM)(UINT)(i),(LPARAM)(LPLVITEMA)(pitem))
    2514 #define ListView_GetItemState(hwnd,i,mask) \
    2515     (BOOL)SendMessageA((hwnd),LVM_GETITEMSTATE,(WPARAM)(UINT)(i),(LPARAM)(UINT)(mask))
    2516 #define ListView_GetCountPerPage(hwnd) \
    2517     (BOOL)SendMessageW((hwnd),LVM_GETCOUNTPERPAGE,0,0L)
    2518 #define ListView_GetImageList(hwnd,iImageList) \
    2519     (HIMAGELIST)SendMessageA((hwnd),LVM_GETIMAGELIST,(WPARAM)(INT)(iImageList),0L)
    2520 #define ListView_GetStringWidthA(hwnd,pstr) \
    2521     (INT)SendMessageA((hwnd),LVM_GETSTRINGWIDTHA,0,(LPARAM)(LPCSTR)(pstr))
    2522 #define ListView_GetTopIndex(hwnd) \
    2523     (BOOL)SendMessageA((hwnd),LVM_GETTOPINDEX,0,0L)
    2524 #define ListView_Scroll(hwnd,dx,dy) \
    2525     (BOOL)SendMessageA((hwnd),LVM_SCROLL,(WPARAM)(INT)(dx),(LPARAM)(INT)(dy))
    2526 #define ListView_EnsureVisible(hwnd,i,fPartialOk) \
    2527     (BOOL)SendMessageA((hwnd),LVM_ENSUREVISIBLE,(WPARAM)(INT)i,(LPARAM)(BOOL)fPartialOk)
    2528 #define ListView_SetBkColor(hwnd,clrBk) \
    2529     (BOOL)SendMessageA((hwnd),LVM_SETBKCOLOR,0,(LPARAM)(COLORREF)(clrBk))
    2530 #define ListView_GetImageList(hwnd,iImageList) \
    2531     (HIMAGELIST)SendMessageA((hwnd),LVM_GETIMAGELIST,(WPARAM)(INT)(iImageList),0L)
    2532 #define ListView_SetImageList(hwnd,himl,iImageList) \
    2533     (HIMAGELIST)(UINT)SendMessageA((hwnd),LVM_SETIMAGELIST,(WPARAM)(iImageList),(LPARAM)(UINT)(HIMAGELIST)(himl))
    2534 #define ListView_GetItemCount(hwnd) \
    2535     (INT)SendMessageA((hwnd),LVM_GETITEMCOUNT,0,0L)
    2536 #define ListView_GetItemA(hwnd,pitem) \
    2537     (BOOL)SendMessageA((hwnd),LVM_GETITEMA,0,(LPARAM)(LVITEMA *)(pitem))
    2538 #define ListView_GetItemW(hwnd,pitem) \
    2539     (BOOL)SendMessageW((hwnd),LVM_GETITEMW,0,(LPARAM)(LVITEMW *)(pitem))
    2540 #define ListView_GetItem WINELIB_NAME_AW(ListView_GetItem)
    2541 #define ListView_HitTest(hwnd,pinfo) \
    2542     (INT)SendMessageA((hwnd),LVM_HITTEST,0,(LPARAM)(LPLVHITTESTINFO)(pinfo))
    2543 #define ListView_InsertItemA(hwnd,pitem) \
    2544     (INT)SendMessageA((hwnd),LVM_INSERTITEMA,0,(LPARAM)(const LVITEMA *)(pitem))
    2545 #define ListView_InsertItemW(hwnd,pitem) \
    2546     (INT)SendMessageW((hwnd),LVM_INSERTITEMW,0,(LPARAM)(const LVITEMW *)(pitem))
    2547 #define ListView_InsertItem WINELIB_NAME_AW(ListView_InsertItem)
    2548 #define ListView_DeleteAllItems(hwnd) \
    2549     (BOOL)SendMessageA((hwnd),LVM_DELETEALLITEMS,0,0L)
    2550 #define ListView_InsertColumnA(hwnd,iCol,pcol) \
    2551     (INT)SendMessageA((hwnd),LVM_INSERTCOLUMNA,(WPARAM)(INT)(iCol),(LPARAM)(const LVCOLUMNA *)(pcol))
    2552 #define ListView_InsertColumnW(hwnd,iCol,pcol) \
    2553     (INT)SendMessageW((hwnd),LVM_INSERTCOLUMNW,(WPARAM)(INT)(iCol),(LPARAM)(const LVCOLUMNW *)(pcol))
    2554 #define ListView_InsertColumn WINELIB_NAME_AW(ListView_InsertColumn)
    2555 #define ListView_SortItems(hwndLV,_pfnCompare,_lPrm) \
    2556     (BOOL)SendMessageA((hwndLV),LVM_SORTITEMS,(WPARAM)(LPARAM)_lPrm,(LPARAM)(PFNLVCOMPARE)_pfnCompare)
    2557 #define ListView_SetItemPosition(hwndLV, i, x, y) \
    2558     (BOOL)SendMessageA((hwndLV),LVM_SETITEMPOSITION,(WPARAM)(INT)(i),MAKELPARAM((x),(y)))
    2559 #define ListView_GetSelectedCount(hwndLV) \
    2560     (UINT)SendMessageA((hwndLV),LVM_GETSELECTEDCOUNT,0,0L)
    2561 
    2562 
    2563 /* Tab Control */
    2564 
    2565 #define WC_TABCONTROL16          "SysTabControl"
    2566 #define WC_TABCONTROLA   "SysTabControl32"
    2567 #define WC_TABCONTROLW  L"SysTabControl32"
    2568 
    2569 #define WC_TABCONTROL           WINELIB_NAME_AW(WC_TABCONTROL)
    2570 
    2571 /* tab control styles */
    2572 #define TCS_SCROLLOPPOSITE      0x0001   /* assumes multiline tab */
    2573 #define TCS_BOTTOM              0x0002
    2574 #define TCS_RIGHT               0x0002
    2575 #define TCS_MULTISELECT         0x0004  /* allow multi-select in button mode */
    2576 #define TCS_FLATBUTTONS         0x0008
    2577 #define TCS_FORCEICONLEFT       0x0010
    2578 #define TCS_FORCELABELLEFT      0x0020
    2579 #define TCS_HOTTRACK            0x0040
    2580 #define TCS_VERTICAL            0x0080
    2581 #define TCS_TABS                0x0000
    2582 #define TCS_BUTTONS             0x0100
    2583 #define TCS_SINGLELINE          0x0000
    2584 #define TCS_MULTILINE           0x0200
    2585 #define TCS_RIGHTJUSTIFY        0x0000
    2586 #define TCS_FIXEDWIDTH          0x0400
    2587 #define TCS_RAGGEDRIGHT         0x0800
    2588 #define TCS_FOCUSONBUTTONDOWN   0x1000
    2589 #define TCS_OWNERDRAWFIXED      0x2000
    2590 #define TCS_TOOLTIPS            0x4000
    2591 #define TCS_FOCUSNEVER          0x8000
    2592 #define TCS_EX_FLATSEPARATORS   0x00000001  /* to be used with */
    2593 #define TCS_EX_REGISTERDROP     0x00000002  /* TCM_SETEXTENDEDSTYLE */
    2594 
    2595 
    2596 #define TCM_FIRST               0x1300
    2597 
    2598 #define TCM_GETIMAGELIST        (TCM_FIRST + 2)
    2599 #define TCM_SETIMAGELIST        (TCM_FIRST + 3)
    2600 #define TCM_GETITEMCOUNT        (TCM_FIRST + 4)
    2601 #define TCM_GETITEM                             WINELIB_NAME_AW(TCM_GETITEM)
    2602 #define TCM_GETITEMA                    (TCM_FIRST + 5)
    2603 #define TCM_GETITEMW                    (TCM_FIRST + 60)
    2604 #define TCM_SETITEMA                    (TCM_FIRST + 6)
    2605 #define TCM_SETITEMW                    (TCM_FIRST + 61)
    2606 #define TCM_SETITEM                             WINELIB_NAME_AW(TCM_SETITEM)
    2607 #define TCM_INSERTITEMA         (TCM_FIRST + 7)
    2608 #define TCM_INSERTITEMW         (TCM_FIRST + 62)
    2609 #define TCM_INSERTITEM                  WINELIB_NAME_AW(TCM_INSERTITEM)
    2610 #define TCM_DELETEITEM          (TCM_FIRST + 8)
    2611 #define TCM_DELETEALLITEMS      (TCM_FIRST + 9)
    2612 #define TCM_GETITEMRECT         (TCM_FIRST + 10)
    2613 #define TCM_GETCURSEL           (TCM_FIRST + 11)
    2614 #define TCM_SETCURSEL           (TCM_FIRST + 12)
    2615 #define TCM_HITTEST             (TCM_FIRST + 13)
    2616 #define TCM_SETITEMEXTRA        (TCM_FIRST + 14)
    2617 #define TCM_ADJUSTRECT          (TCM_FIRST + 40)
    2618 #define TCM_SETITEMSIZE         (TCM_FIRST + 41)
    2619 #define TCM_REMOVEIMAGE         (TCM_FIRST + 42)
    2620 #define TCM_SETPADDING          (TCM_FIRST + 43)
    2621 #define TCM_GETROWCOUNT         (TCM_FIRST + 44)
    2622 #define TCM_GETTOOLTIPS         (TCM_FIRST + 45)
    2623 #define TCM_SETTOOLTIPS         (TCM_FIRST + 46)
    2624 #define TCM_GETCURFOCUS         (TCM_FIRST + 47)
    2625 #define TCM_SETCURFOCUS         (TCM_FIRST + 48)
    2626 #define TCM_SETMINTTABWIDTH     (TCM_FIRST + 49)
    2627 #define TCM_DESELECTALL         (TCM_FIRST + 50)
    2628 #define TCM_HIGHLIGHTITEM               (TCM_FIRST + 51)
    2629 #define TCM_SETEXTENDEDSTYLE    (TCM_FIRST + 52)
    2630 #define TCM_GETEXTENDEDSTYLE    (TCM_FIRST + 53)
    2631 #define TCM_SETUNICODEFORMAT    CCM_SETUNICODEFORMAT
    2632 #define TCM_GETUNICODEFORMAT    CCM_GETUNICODEFORMAT
    2633 
    2634 
    2635 #define TCIF_TEXT               0x0001
    2636 #define TCIF_IMAGE              0x0002
    2637 #define TCIF_RTLREADING         0x0004
    2638 #define TCIF_PARAM              0x0008
    2639 #define TCIF_STATE              0x0010
    2640 
    2641 #define TCIS_BUTTONPRESSED      0x0001
    2642 #define TCIS_HIGHLIGHTED 0x0002
    2643 
    2644 /* TabCtrl Macros */
    2645 #define TabCtrl_GetImageList(hwnd) \
    2646                                     (HIMAGELIST)SNDMSG((hwnd), TCM_GETIMAGELIST, 0, 0L)
    2647 
    2648 #define TabCtrl_SetImageList(hwnd, himl) \
    2649                                     (HIMAGELIST)SNDMSG((hwnd), TCM_SETIMAGELIST, 0, (LPARAM)(UINT)(HIMAGELIST)(himl))
    2650 
    2651 #define TabCtrl_GetItemCount(hwnd) \
    2652                                     (int)SNDMSG((hwnd), TCM_GETITEMCOUNT, 0, 0L)
    2653 
    2654 #define TabCtrl_GetItem(hwnd, iItem, pitem) \
    2655                                     (BOOL)SNDMSG((hwnd), TCM_GETITEM, (WPARAM)(int)iItem, (LPARAM)(TC_ITEM FAR*)(pitem))
    2656 
    2657 #define TabCtrl_SetItem(hwnd, iItem, pitem) \
    2658                                     (BOOL)SNDMSG((hwnd), TCM_SETITEM, (WPARAM)(int)iItem, (LPARAM)(TC_ITEM FAR*)(pitem))
    2659                                  
    2660 #define TabCtrl_InsertItem(hwnd, iItem, pitem)   \
    2661                                     (int)SNDMSG((hwnd), TCM_INSERTITEM, (WPARAM)(int)iItem, (LPARAM)(const TC_ITEM FAR*)(pitem))
    2662 
    2663 #define TabCtrl_DeleteItem(hwnd, i) \
    2664                                     (BOOL)SNDMSG((hwnd), TCM_DELETEITEM, (WPARAM)(int)(i), 0L)
    2665 
    2666 #define TabCtrl_DeleteAllItems(hwnd) \
    2667                                     (BOOL)SNDMSG((hwnd), TCM_DELETEALLITEMS, 0, 0L)
    2668 
    2669 #define TabCtrl_GetItemRect(hwnd, i, prc) \
    2670                                     (BOOL)SNDMSG((hwnd), TCM_GETITEMRECT, (WPARAM)(int)(i), (LPARAM)(RECT FAR*)(prc))
    2671 
    2672 #define TabCtrl_GetCurSel(hwnd) \
    2673                                     (int)::SNDMSG((hwnd), TCM_GETCURSEL, 0, 0)
    2674 
    2675 #define TabCtrl_SetCurSel(hwnd, i) \
    2676                                     (int)SNDMSG((hwnd), TCM_SETCURSEL, (WPARAM)i, 0)
    2677 
    2678 #define TabCtrl_HitTest(hwndTC, pinfo) \
    2679                                     (int)SNDMSG((hwndTC), TCM_HITTEST, 0, (LPARAM)(TC_HITTESTINFO FAR*)(pinfo))
    2680 
    2681 #define TabCtrl_SetItemExtra(hwndTC, cb) \
    2682                                     (BOOL)SNDMSG((hwndTC), TCM_SETITEMEXTRA, (WPARAM)(cb), 0L)
    2683 
    2684 #define TabCtrl_AdjustRect(hwnd, bLarger, prc) \
    2685                                     (int)SNDMSG(hwnd, TCM_ADJUSTRECT, (WPARAM)(BOOL)bLarger, (LPARAM)(RECT FAR *)prc)
    2686 
    2687 #define TabCtrl_SetItemSize(hwnd, x, y) \
    2688                                     (DWORD)SNDMSG((hwnd), TCM_SETITEMSIZE, 0, MAKELPARAM(x,y))
    2689 
    2690 #define TabCtrl_RemoveImage(hwnd, i) \
    2691                                         (void)SNDMSG((hwnd), TCM_REMOVEIMAGE, i, 0L)
    2692 
    2693 #define TabCtrl_SetPadding(hwnd,  cx, cy) \
    2694                                         (void)SNDMSG((hwnd), TCM_SETPADDING, 0, MAKELPARAM(cx, cy))
    2695 
    2696 #define TabCtrl_GetRowCount(hwnd) \
    2697                                         (int)SNDMSG((hwnd), TCM_GETROWCOUNT, 0, 0L)
    2698 
    2699 #define TabCtrl_GetToolTips(hwnd) \
    2700                                         (HWND)SNDMSG((hwnd), TCM_GETTOOLTIPS, 0, 0L)
    2701 
    2702 #define TabCtrl_SetToolTips(hwnd, hwndTT) \
    2703                                         (void)SNDMSG((hwnd), TCM_SETTOOLTIPS, (WPARAM)hwndTT, 0L)
    2704 
    2705 #define TabCtrl_GetCurFocus(hwnd) \
    2706                                     (int)SNDMSG((hwnd), TCM_GETCURFOCUS, 0, 0)
    2707 
    2708 #define TabCtrl_SetCurFocus(hwnd, i) \
    2709                                     SNDMSG((hwnd),TCM_SETCURFOCUS, i, 0)
    2710 
    2711 #define TabCtrl_SetMinTabWidth(hwnd, x) \
    2712                                         (int)SNDMSG((hwnd), TCM_SETMINTABWIDTH, 0, x)
    2713 
    2714 #define TabCtrl_DeselectAll(hwnd, fExcludeFocus)\
    2715                                         (void)SNDMSG((hwnd), TCM_DESELECTALL, fExcludeFocus, 0)
    2716 
    2717 
    2718 /* constants for TCHITTESTINFO */
    2719 
    2720 #define TCHT_NOWHERE      0x01
    2721 #define TCHT_ONITEMICON   0x02
    2722 #define TCHT_ONITEMLABEL  0x04
    2723 #define TCHT_ONITEM       (TCHT_ONITEMICON | TCHT_ONITEMLABEL)
    2724 
    2725 
    2726 typedef struct tagTCITEMA {
    2727     UINT mask;
    2728     UINT dwState;
    2729     UINT dwStateMask;
    2730     LPSTR  pszText;
    2731     INT  cchTextMax;
    2732     INT  iImage;
    2733     LPARAM lParam;
    2734 } TCITEMA, *LPTCITEMA;
    2735 
    2736 typedef struct tagTCITEMW
    2737 {
    2738     UINT mask;
    2739     DWORD  dwState;
    2740     DWORD  dwStateMask;
    2741     LPWSTR pszText;
    2742     INT  cchTextMax;
    2743     INT  iImage;
    2744     LPARAM lParam;
    2745 } TCITEMW, *LPTCITEMW;
    2746 
    2747 #define TCITEM   WINELIB_NAME_AW(TCITEM)
    2748 #define LPTCITEM WINELIB_NAME_AW(LPTCITEM)
    2749 #define TC_ITEM  TCITEM
    2750 
    2751 #define TCN_FIRST               (0U-550U)
    2752 #define TCN_LAST                (0U-580U)
    2753 #define TCN_KEYDOWN             (TCN_FIRST - 0)
    2754 #define TCN_SELCHANGE           (TCN_FIRST - 1)
    2755 #define TCN_SELCHANGING         (TCN_FIRST - 2)
    2756 #define TCN_GETOBJECT      (TCN_FIRST - 3)
    2757 
    2758 
    2759 /* ComboBoxEx control */
    2760 
    2761 #define WC_COMBOBOXEXA        "ComboBoxEx32"
    2762 #define WC_COMBOBOXEXW        L"ComboBoxEx32"
    2763 #define WC_COMBOBOXEX           WINELIB_NAME_AW(WC_COMBOBOXEX)
    2764 
    2765 #define CBEM_INSERTITEMA      (WM_USER+1)
    2766 #define CBEM_INSERTITEMW      (WM_USER+11)
    2767 #define CBEM_INSERTITEM         WINELIB_NAME_AW(CBEM_INSERTITEM)
    2768 #define CBEM_SETIMAGELIST       (WM_USER+2)
    2769 #define CBEM_GETIMAGELIST       (WM_USER+3)
    2770 #define CBEM_GETITEMA         (WM_USER+4)
    2771 #define CBEM_GETITEMW         (WM_USER+13)
    2772 #define CBEM_GETITEM            WINELIB_NAME_AW(CBEM_GETITEM)
    2773 #define CBEM_SETITEMA         (WM_USER+5)
    2774 #define CBEM_SETITEMW         (WM_USER+12)
    2775 #define CBEM_SETITEM            WINELIB_NAME_AW(CBEM_SETITEM)
    2776 #define CBEM_GETCOMBOCONTROL    (WM_USER+6)
    2777 #define CBEM_GETEDITCONTROL     (WM_USER+7)
    2778 #define CBEM_SETEXSTYLE         (WM_USER+8)
    2779 #define CBEM_GETEXSTYLE         (WM_USER+9)
    2780 #define CBEM_GETEXTENDEDSTYLE   (WM_USER+9)
    2781 #define CBEM_SETEXTENDEDSTYLE   (WM_USER+14)
    2782 #define CBEM_HASEDITCHANGED     (WM_USER+10)
    2783 #define CBEM_SETUNICODEFORMAT   CCM_SETUNICODEFORMAT
    2784 #define CBEM_GETUNICODEFORMAT   CCM_GETUNICODEFORMAT
    2785 
    2786 #define CBEN_FIRST              (0U-800U)
    2787 #define CBEN_LAST               (0U-830U)
    2788 
    2789 
    2790 /* Hotkey control */
    2791 
    2792 #define HOTKEY_CLASS16          "msctls_hotkey"
    2793 #define HOTKEY_CLASSA         "msctls_hotkey32"
    2794 #define HOTKEY_CLASSW         L"msctls_hotkey32"
    2795 #define HOTKEY_CLASS            WINELIB_NAME_AW(HOTKEY_CLASS)
    2796 
    2797 #define HOTKEYF_SHIFT           0x01
    2798 #define HOTKEYF_CONTROL         0x02
    2799 #define HOTKEYF_ALT             0x04
    2800 #define HOTKEYF_EXT             0x08
    2801 
    2802 #define HKCOMB_NONE             0x0001
    2803 #define HKCOMB_S                0x0002
    2804 #define HKCOMB_C                0x0004
    2805 #define HKCOMB_A                0x0008
    2806 #define HKCOMB_SC               0x0010
    2807 #define HKCOMB_SA               0x0020
    2808 #define HKCOMB_CA               0x0040
    2809 #define HKCOMB_SCA              0x0080
    2810 
    2811 #define HKM_SETHOTKEY           (WM_USER+1)
    2812 #define HKM_GETHOTKEY           (WM_USER+2)
    2813 #define HKM_SETRULES            (WM_USER+3)
    2814 
    2815 
    2816 /* animate control */
    2817 
    2818 #define ANIMATE_CLASSA        "SysAnimate32"
    2819 #define ANIMATE_CLASSW        L"SysAnimate32"
    2820 #define ANIMATE_CLASS           WINELIB_NAME_AW(ANIMATE_CLASS)
    2821 
    2822 #define ACS_CENTER              0x0001
    2823 #define ACS_TRANSPARENT         0x0002
    2824 #define ACS_AUTOPLAY            0x0004
    2825 #define ACS_TIMER               0x0008  /* no threads, just timers */
    2826 
    2827 #define ACM_OPENA             (WM_USER+100)
    2828 #define ACM_OPENW             (WM_USER+103)
    2829 #define ACM_OPEN                WINELIB_NAME_AW(ACM_OPEN)
    2830 #define ACM_PLAY                (WM_USER+101)
    2831 #define ACM_STOP                (WM_USER+102)
    2832 
    2833 #define ACN_START               1
    2834 #define ACN_STOP                2
    2835 
    2836 #define Animate_CreateA(hwndP,id,dwStyle,hInstance) \
    2837     CreateWindowA(ANIMATE_CLASSA,NULL,dwStyle,0,0,0,0,hwndP,(HMENU)(id),hInstance,NULL)
    2838 #define Animate_CreateW(hwndP,id,dwStyle,hInstance) \
    2839     CreateWindowW(ANIMATE_CLASSW,NULL,dwStyle,0,0,0,0,hwndP,(HMENU)(id),hInstance,NULL)
    2840 #define Animate_Create WINELIB_NAME_AW(Animate_Create)
    2841 #define Animate_OpenA(hwnd,szName) \
    2842     (BOOL)SendMessageA(hwnd,ACM_OPENA,0,(LPARAM)(LPSTR)(szName))
    2843 #define Animate_OpenW(hwnd,szName) \
    2844     (BOOL)SendMessageW(hwnd,ACM_OPENW,0,(LPARAM)(LPWSTR)(szName))
    2845 #define Animate_Open WINELIB_NAME_AW(Animate_Open)
    2846 #define Animate_OpenExA(hwnd,hInst,szName) \
    2847     (BOOL)SendMessageA(hwnd,ACM_OPENA,(WPARAM)hInst,(LPARAM)(LPSTR)(szName))
    2848 #define Animate_OpenExW(hwnd,hInst,szName) \
    2849     (BOOL)SendMessageW(hwnd,ACM_OPENW,(WPARAM)hInst,(LPARAM)(LPWSTR)(szName))
    2850 #define Animate_OpenEx WINELIB_NAME_AW(Animate_OpenEx)
    2851 #define Animate_Play(hwnd,from,to,rep) \
    2852     (BOOL)SendMessageA(hwnd,ACM_PLAY,(WPARAM)(UINT)(rep),(LPARAM)MAKELONG(from,to))
    2853 #define Animate_Stop(hwnd) \
    2854     (BOOL)SendMessageA(hwnd,ACM_STOP,0,0)
    2855 #define Animate_Close(hwnd) \
    2856     (BOOL)SendMessageA(hwnd,ACM_OPENA,0,0)
    2857 #define Animate_Seek(hwnd,frame) \
    2858     (BOOL)SendMessageA(hwnd,ACM_PLAY,1,(LPARAM)MAKELONG(frame,frame))
    2859 
    2860 
    2861 /**************************************************************************
    2862  * IP Address control
    2863  */
    2864 
    2865 #define WC_IPADDRESSA           "SysIPAddress32"
    2866 #define WC_IPADDRESSW           L"SysIPAddress32"
    2867 #define WC_IPADDRESS            WINELIB_NAME_AW(WC_IPADDRESS)
    2868 
    2869 #define IPM_CLEARADDRESS        (WM_USER+100)
    2870 #define IPM_SETADDRESS          (WM_USER+101)
    2871 #define IPM_GETADDRESS          (WM_USER+102)
    2872 #define IPM_SETRANGE            (WM_USER+103)
    2873 #define IPM_SETFOCUS            (WM_USER+104)
    2874 #define IPM_ISBLANK             (WM_USER+105)
    2875 
    2876 #define IPN_FIRST               (0U-860U)
    2877 #define IPN_LAST                (0U-879U)
    2878 #define IPN_FIELDCHANGED    (IPN_FIRST-0)
    2879 
    2880 typedef struct tagNMIPADDRESS
    2881 {
    2882     NMHDR hdr;
    2883     INT iField;
    2884     INT iValue;
    2885 } NMIPADDRESS, *LPNMIPADDRESS;
    2886 
    2887 #define MAKEIPRANGE(low,high) \
    2888     ((LPARAM)(WORD)(((BYTE)(high)<<8)+(BYTE)(low)))
    2889 #define MAKEIPADDRESS(b1,b2,b3,b4) \
    2890     ((LPARAM)(((DWORD)(b1)<<24)+((DWORD)(b2)<16)+((DWORD)(b3)<<8)+((DWORD)(b4))))
    2891 
    2892 #define FIRST_IPADDRESS(x)      (((x)>>24)&0xff)
    2893 #define SECOND_IPADDRESS(x)     (((x)>>16)&0xff)
    2894 #define THIRD_IPADDRESS(x)      (((x)>>8)&0xff)
    2895 #define FOURTH_IPADDRESS(x)     ((x)&0xff)
    2896 
    2897 
    2898 /**************************************************************************
    2899  * Native Font control
    2900  */
    2901 
    2902 #define WC_NATIVEFONTCTLA       "NativeFontCtl"
    2903 #define WC_NATIVEFONTCTLW       L"NativeFontCtl"
    2904 #define WC_NATIVEFONTCTL        WINELIB_NAME_AW(WC_NATIVEFONTCTL)
    2905 
    2906 #define NFS_EDIT                0x0001
    2907 #define NFS_STATIC              0x0002
    2908 #define NFS_LISTCOMBO           0x0004
    2909 #define NFS_BUTTON              0x0008
    2910 #define NFS_ALL                 0x0010
    2911 
    2912 
    2913 /**************************************************************************
    2914  * Month calendar control
    2915  */
    2916 
    2917 #define MONTHCAL_CLASSA "SysMonthCal32"
    2918 #define MONTHCAL_CLASSW L"SysMonthCal32"
    2919 #define MONTHCAL_CLASS          WINELIB_NAME_AW(MONTHCAL_CLASS)
    2920 
    2921 
    2922 /**************************************************************************
    2923  * Date and time picker control
    2924  */
    2925 
    2926 #define DATETIMEPICK_CLASSA     "SysDateTimePick32"
    2927 #define DATETIMEPICK_CLASSW     L"SysDateTimePick32"
    2928 #define DATETIMEPICK_CLASS      WINELIB_NAME_AW(DATETIMEPICK_CLASS)
    2929 
    2930 #define DTM_FIRST        0x1000
    2931 
    2932 #define DTM_GETSYSTEMTIME       (DTM_FIRST+1)
    2933 #define DTM_SETSYSTEMTIME       (DTM_FIRST+2)
    2934 #define DTM_GETRANGE            (DTM_FIRST+3)
    2935 #define DTM_SETRANGE            (DTM_FIRST+4)
    2936 #define DTM_SETFORMATA  (DTM_FIRST+5)
    2937 #define DTM_SETFORMATW  (DTM_FIRST + 50)
    2938 #define DTM_SETFORMAT           WINELIB_NAME_AW(DTM_SETFORMAT)
    2939 #define DTM_SETMCCOLOR          (DTM_FIRST+6)
    2940 #define DTM_GETMCCOLOR          (DTM_FIRST+7)
    2941 
    2942 #define DTM_GETMONTHCAL         (DTM_FIRST+8)
    2943 
    2944 #define DTM_SETMCFONT           (DTM_FIRST+9)
    2945 #define DTM_GETMCFONT           (DTM_FIRST+10)
    2946 
    2947 
    2948 
    2949 
    2950 #define GDT_ERROR    -1
    2951 #define GDT_VALID    0
    2952 #define GDT_NONE     1
    2953 
    2954 #define GDTR_MIN     0x0001
    2955 #define GDTR_MAX     0x0002
    2956 
    2957 
    2958 
    2959 /**************************************************************************
    2960  *  UNDOCUMENTED functions
    2961  */
    2962 
    2963 /* private heap memory functions */
    2964 
    2965 LPVOID WINAPI COMCTL32_Alloc (DWORD);
    2966 LPVOID WINAPI COMCTL32_ReAlloc (LPVOID, DWORD);
    2967 BOOL WINAPI COMCTL32_Free (LPVOID);
    2968 DWORD  WINAPI COMCTL32_GetSize (LPVOID);
    2969 
    2970 
    2971 INT  WINAPI Str_GetPtrA (LPCSTR, LPSTR, INT);
    2972 BOOL WINAPI Str_SetPtrA (LPSTR *, LPCSTR);
    2973 INT  WINAPI Str_GetPtrW (LPCWSTR, LPWSTR, INT);
    2974 BOOL WINAPI Str_SetPtrW (LPWSTR *, LPCWSTR);
    2975 #define Str_GetPtr WINELIB_NAME_AW(Str_GetPtr)
    2976 #define Str_SetPtr WINELIB_NAME_AW(Str_SetPtr)
    2977 
    2978 
    2979 /* Dynamic Storage Array */
    2980 
    2981 typedef struct _DSA
    2982 {
    2983     INT  nItemCount;
    2984     LPVOID pData;
    2985     INT  nMaxCount;
    2986     INT  nItemSize;
    2987     INT  nGrow;
    2988 } DSA, *HDSA;
    2989 
    2990 HDSA   WINAPI DSA_Create (INT, INT);
    2991 BOOL WINAPI DSA_DeleteAllItems (const HDSA);
    2992 INT  WINAPI DSA_DeleteItem (const HDSA, INT);
    2993 BOOL WINAPI DSA_Destroy (const HDSA);
    2994 BOOL WINAPI DSA_GetItem (const HDSA, INT, LPVOID);
    2995 LPVOID WINAPI DSA_GetItemPtr (const HDSA, INT);
    2996 INT  WINAPI DSA_InsertItem (const HDSA, INT, LPVOID);
    2997 BOOL WINAPI DSA_SetItem (const HDSA, INT, LPVOID);
    2998 
    2999 typedef INT (CALLBACK *DSAENUMPROC)(LPVOID, DWORD);
    3000 VOID   WINAPI DSA_EnumCallback (const HDSA, DSAENUMPROC, LPARAM);
    3001 BOOL WINAPI DSA_DestroyCallback (const HDSA, DSAENUMPROC, LPARAM);
    3002 
    3003 
    3004 /* Dynamic Pointer Array */
    3005 
    3006 typedef struct _DPA
    3007 {
    3008     INT    nItemCount;
    3009     LPVOID   *ptrs;
    3010     HANDLE hHeap;
    3011     INT    nGrow;
    3012     INT    nMaxCount;
    3013 } DPA, *HDPA;
    3014 
    3015 HDPA   WINAPI DPA_Create (INT);
    3016 HDPA   WINAPI DPA_CreateEx (INT, HANDLE);
    3017 BOOL WINAPI DPA_Destroy (const HDPA);
    3018 HDPA   WINAPI DPA_Clone (const HDPA, const HDPA);
    3019 LPVOID WINAPI DPA_GetPtr (const HDPA, INT);
    3020 INT  WINAPI DPA_GetPtrIndex (const HDPA, LPVOID);
    3021 BOOL WINAPI DPA_Grow (const HDPA, INT);
    3022 BOOL WINAPI DPA_SetPtr (const HDPA, INT, LPVOID);
    3023 INT  WINAPI DPA_InsertPtr (const HDPA, INT, LPVOID);
    3024 LPVOID WINAPI DPA_DeletePtr (const HDPA, INT);
    3025 BOOL WINAPI DPA_DeleteAllPtrs (const HDPA);
    3026 
    3027 typedef INT (CALLBACK *PFNDPACOMPARE)(LPVOID, LPVOID, LPARAM);
    3028 BOOL WINAPI DPA_Sort (const HDPA, PFNDPACOMPARE, LPARAM);
    3029 
    3030 #define DPAS_SORTED             0x0001
    3031 #define DPAS_INSERTBEFORE       0x0002
    3032 #define DPAS_INSERTAFTER        0x0004
    3033  
    3034 INT  WINAPI DPA_Search (const HDPA, LPVOID, INT, PFNDPACOMPARE, LPARAM, UINT);
    3035 
    3036 #define DPAM_SORT               0x0001
    3037 
    3038 BOOL WINAPI DPA_Merge (const HDPA, const HDPA, DWORD, PFNDPACOMPARE, LPVOID, LPARAM);
    3039 
    3040 typedef INT (CALLBACK *DPAENUMPROC)(LPVOID, DWORD);
    3041 VOID   WINAPI DPA_EnumCallback (const HDPA, DPAENUMPROC, LPARAM);
    3042 BOOL WINAPI DPA_DestroyCallback (const HDPA, DPAENUMPROC, LPARAM);
    3043 
    3044 
    3045 #define DPA_GetPtrCount(hdpa)  (*(INT*)(hdpa))
    3046 #define DPA_GetPtrPtr(hdpa)    (*((LPVOID**)((BYTE*)(hdpa)+sizeof(INT))))
    3047 #define DPA_FastGetPtr(hdpa,i) (DPA_GetPtrPtr(hdpa)[i])
    3048 
    3049 
    3050 /* notification helper functions */
    3051 
    3052 LRESULT WINAPI COMCTL32_SendNotify (HWND, HWND, UINT, LPNMHDR);
    3053 
    3054 /* type and functionality of last parameter is still unknown */
    3055 LRESULT WINAPI COMCTL32_SendNotifyEx (HWND, HWND, UINT, LPNMHDR, DWORD);
    3056 
    3057 #ifdef __cplusplus
    3058 }
    3059 #endif
    3060 
    3061 #endif  /* __WINE_COMMCTRL_H */
    3062 
    3063 
     843
     844
     845
     846#endif /* _H_COMMCTRL */
Note: See TracChangeset for help on using the changeset viewer.