Ignore:
Timestamp:
Jun 7, 1999, 12:29:46 PM (26 years ago)
Author:
achimha
Message:

* empty log message *

File:
1 edited

Legend:

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

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