blob: 305531d652132d9a4d29a7ab6c3f0f4657bbdd13 [file] [log] [blame]
Alexandre Julliard8cc3a5e1996-08-11 15:49:51 +00001/*
2 * Common controls definitions
Alexandre Julliard0799c1a2002-03-09 23:29:33 +00003 *
4 * Copyright (C) the Wine project
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Alexandre Julliard8cc3a5e1996-08-11 15:49:51 +000019 */
20
21#ifndef __WINE_COMMCTRL_H
22#define __WINE_COMMCTRL_H
23
Dimitrie O. Paun53f9c212003-08-28 21:43:34 +000024#include <prsht.h>
Alexandre Julliard8cc3a5e1996-08-11 15:49:51 +000025
Uwe Bonnes627702d1998-11-08 13:14:55 +000026#ifdef __cplusplus
27extern "C" {
28#endif
29
Frank Richter9e570912005-08-30 10:07:17 +000030BOOL WINAPI ShowHideMenuCtl (HWND, UINT_PTR, LPINT);
Alexandre Julliarda3960291999-02-26 11:11:13 +000031VOID WINAPI GetEffectiveClientRect (HWND, LPRECT, LPINT);
Alexandre Julliard642d3131998-07-12 19:29:36 +000032VOID WINAPI InitCommonControls (VOID);
Alexandre Julliard8cc3a5e1996-08-11 15:49:51 +000033
Alexandre Julliarddadf78f1998-05-17 17:13:43 +000034typedef struct tagINITCOMMONCONTROLSEX {
35 DWORD dwSize;
36 DWORD dwICC;
37} INITCOMMONCONTROLSEX, *LPINITCOMMONCONTROLSEX;
38
Alexandre Julliarda3960291999-02-26 11:11:13 +000039BOOL WINAPI InitCommonControlsEx (LPINITCOMMONCONTROLSEX);
Alexandre Julliarddadf78f1998-05-17 17:13:43 +000040
Eric Kohlb3f681e2000-06-03 21:06:44 +000041LANGID WINAPI GetMUILanguage (VOID);
42VOID WINAPI InitMUILanguage (LANGID uiLang);
43
44
Eric Kohl2b51c941999-11-23 23:32:03 +000045#define COMCTL32_VERSION 5 /* dll version */
46
Ian Schmidt2d127002000-02-26 18:30:12 +000047#ifndef _WIN32_IE
48#define _WIN32_IE 0x0400
49#endif
50
Alexandre Julliarddadf78f1998-05-17 17:13:43 +000051#define ICC_LISTVIEW_CLASSES 0x00000001 /* listview, header */
52#define ICC_TREEVIEW_CLASSES 0x00000002 /* treeview, tooltips */
53#define ICC_BAR_CLASSES 0x00000004 /* toolbar, statusbar, trackbar, tooltips */
54#define ICC_TAB_CLASSES 0x00000008 /* tab, tooltips */
55#define ICC_UPDOWN_CLASS 0x00000010 /* updown */
56#define ICC_PROGRESS_CLASS 0x00000020 /* progress */
57#define ICC_HOTKEY_CLASS 0x00000040 /* hotkey */
58#define ICC_ANIMATE_CLASS 0x00000080 /* animate */
59#define ICC_WIN95_CLASSES 0x000000FF
60#define ICC_DATE_CLASSES 0x00000100 /* month picker, date picker, time picker, updown */
61#define ICC_USEREX_CLASSES 0x00000200 /* comboex */
62#define ICC_COOL_CLASSES 0x00000400 /* rebar (coolbar) */
63#define ICC_INTERNET_CLASSES 0x00000800 /* IP address, ... */
64#define ICC_PAGESCROLLER_CLASS 0x00001000 /* page scroller */
65#define ICC_NATIVEFNTCTL_CLASS 0x00002000 /* native font control ???*/
Robert Reiff2603802004-03-11 03:49:49 +000066#define ICC_STANDARD_CLASSES 0x00004000
67#define ICC_LINK_CLASS 0x00008000
Alexandre Julliarddadf78f1998-05-17 17:13:43 +000068
69
Alexandre Julliard54c27111998-03-29 19:44:57 +000070/* common control styles */
Alexandre Julliard54c27111998-03-29 19:44:57 +000071#define CCS_TOP 0x00000001L
72#define CCS_NOMOVEY 0x00000002L
73#define CCS_BOTTOM 0x00000003L
74#define CCS_NORESIZE 0x00000004L
75#define CCS_NOPARENTALIGN 0x00000008L
76#define CCS_ADJUSTABLE 0x00000020L
77#define CCS_NODIVIDER 0x00000040L
78#define CCS_VERT 0x00000080L
79#define CCS_LEFT (CCS_VERT|CCS_TOP)
80#define CCS_RIGHT (CCS_VERT|CCS_BOTTOM)
81#define CCS_NOMOVEX (CCS_VERT|CCS_NOMOVEY)
82
83
Alexandre Julliardc7c217b1998-04-13 12:21:30 +000084/* common control shared messages */
Alexandre Julliard642d3131998-07-12 19:29:36 +000085#define CCM_FIRST 0x2000
Alexandre Julliardc7c217b1998-04-13 12:21:30 +000086
Robert Shearmanead9e562004-08-25 02:14:28 +000087#define CCM_SETBKCOLOR (CCM_FIRST+0x1) /* lParam = bkColor */
88#define CCM_SETCOLORSCHEME (CCM_FIRST+0x2) /* lParam = COLORSCHEME struct ptr */
89#define CCM_GETCOLORSCHEME (CCM_FIRST+0x3) /* lParam = COLORSCHEME struct ptr */
90#define CCM_GETDROPTARGET (CCM_FIRST+0x4)
91#define CCM_SETUNICODEFORMAT (CCM_FIRST+0x5)
92#define CCM_GETUNICODEFORMAT (CCM_FIRST+0x6)
93#define CCM_SETVERSION (CCM_FIRST+0x7)
94#define CCM_GETVERSION (CCM_FIRST+0x8)
95#define CCM_SETNOTIFYWINDOW (CCM_FIRST+0x9) /* wParam = hwndParent */
96#define CCM_SETWINDOWTHEME (CCM_FIRST+0xb)
97#define CCM_DPISCALE (CCM_FIRST+0xc)
Alexandre Julliarddadf78f1998-05-17 17:13:43 +000098
99
Alexandre Julliard85ed45e1998-08-22 19:03:56 +0000100/* common notification codes (WM_NOTIFY)*/
Alexandre Julliarda0d77311998-09-13 16:32:00 +0000101#define NM_FIRST (0U- 0U)
Alexandre Julliard85ed45e1998-08-22 19:03:56 +0000102#define NM_LAST (0U- 99U)
Alexandre Julliarda0d77311998-09-13 16:32:00 +0000103#define NM_OUTOFMEMORY (NM_FIRST-1)
104#define NM_CLICK (NM_FIRST-2)
105#define NM_DBLCLK (NM_FIRST-3)
106#define NM_RETURN (NM_FIRST-4)
107#define NM_RCLICK (NM_FIRST-5)
108#define NM_RDBLCLK (NM_FIRST-6)
109#define NM_SETFOCUS (NM_FIRST-7)
110#define NM_KILLFOCUS (NM_FIRST-8)
111#define NM_CUSTOMDRAW (NM_FIRST-12)
112#define NM_HOVER (NM_FIRST-13)
113#define NM_NCHITTEST (NM_FIRST-14)
114#define NM_KEYDOWN (NM_FIRST-15)
115#define NM_RELEASEDCAPTURE (NM_FIRST-16)
116#define NM_SETCURSOR (NM_FIRST-17)
117#define NM_CHAR (NM_FIRST-18)
118#define NM_TOOLTIPSCREATED (NM_FIRST-19)
Robert Shearmanead9e562004-08-25 02:14:28 +0000119#define NM_LDOWN (NM_FIRST-20)
120#define NM_RDOWN (NM_FIRST-21)
121#define NM_THEMECHANGED (NM_FIRST-22)
122
Alexandre Julliardc7c217b1998-04-13 12:21:30 +0000123
Francois Gouget2fa2cf72000-09-22 22:17:10 +0000124#define HANDLE_WM_NOTIFY(hwnd, wParam, lParam, fn) \
125 (fn)((hwnd), (int)(wParam), (NMHDR*)(lParam))
126#define FORWARD_WM_NOTIFY(hwnd, idFrom, pnmhdr, fn) \
127 (LRESULT)(fn)((hwnd), WM_NOTIFY, (WPARAM)(int)(idFrom), (LPARAM)(NMHDR*)(pnmhdr))
128
129
Alexandre Julliardf90efa91998-06-14 15:24:15 +0000130/* callback constants */
Alexandre Julliarda3960291999-02-26 11:11:13 +0000131#define LPSTR_TEXTCALLBACKA ((LPSTR)-1L)
132#define LPSTR_TEXTCALLBACKW ((LPWSTR)-1L)
Alexandre Julliardf90efa91998-06-14 15:24:15 +0000133#define LPSTR_TEXTCALLBACK WINELIB_NAME_AW(LPSTR_TEXTCALLBACK)
134
Alexandre Julliarda0d77311998-09-13 16:32:00 +0000135#define I_IMAGECALLBACK (-1)
Eric Kohlb3f681e2000-06-03 21:06:44 +0000136#define I_IMAGENONE (-2)
Alexandre Julliarda0d77311998-09-13 16:32:00 +0000137#define I_INDENTCALLBACK (-1)
Alexandre Julliard638f1691999-01-17 16:32:32 +0000138#define I_CHILDRENCALLBACK (-1)
Robert Shearmanead9e562004-08-25 02:14:28 +0000139#define I_GROUPIDCALLBACK (-1)
140#define I_GROUPIDNONE (-2)
141#define I_COLUMNSCALLBACK ((UINT)-1)
Alexandre Julliarda0d77311998-09-13 16:32:00 +0000142
Alexandre Julliardebfc0fe1998-06-28 18:40:26 +0000143/* owner drawn types */
144#define ODT_HEADER 100
145#define ODT_TAB 101
146#define ODT_LISTVIEW 102
147
Alexandre Julliard767e6f61998-08-09 12:47:43 +0000148/* common notification structures */
149typedef struct tagNMTOOLTIPSCREATED
150{
151 NMHDR hdr;
Alexandre Julliarda3960291999-02-26 11:11:13 +0000152 HWND hwndToolTips;
Alexandre Julliard767e6f61998-08-09 12:47:43 +0000153} NMTOOLTIPSCREATED, *LPNMTOOLTIPSCREATED;
154
Guy L. Albertelli69f4a902000-12-19 02:08:35 +0000155typedef struct tagNMMOUSE
156{
157 NMHDR hdr;
Frank Richter9e570912005-08-30 10:07:17 +0000158 DWORD_PTR dwItemSpec;
159 DWORD_PTR dwItemData;
Guy L. Albertelli69f4a902000-12-19 02:08:35 +0000160 POINT pt;
161 DWORD dwHitInfo; /* info where on item or control the mouse is */
162} NMMOUSE, *LPNMMOUSE;
163
164typedef struct tagNMOBJECTNOTIFY
165{
166 NMHDR hdr;
167 int iItem;
168#ifdef __IID_DEFINED__
169 const IID *piid;
170#else
171 const void *piid;
172#endif
173 void *pObject;
174 HRESULT hResult;
175 DWORD dwFlags;
176} NMOBJECTNOTIFY, *LPNMOBJECTNOTIFY;
177
178typedef struct tagNMKEY
179{
180 NMHDR hdr;
181 UINT nVKey;
182 UINT uFlags;
183} NMKEY, *LPNMKEY;
184
185typedef struct tagNMCHAR
186{
187 NMHDR hdr;
188 UINT ch;
189 DWORD dwItemPrev; /* Item previously selected */
190 DWORD dwItemNext; /* Item to be selected */
191} NMCHAR, *LPNMCHAR;
Alexandre Julliardebfc0fe1998-06-28 18:40:26 +0000192
Alexandre Julliarda0d77311998-09-13 16:32:00 +0000193#ifndef CCSIZEOF_STRUCT
194#define CCSIZEOF_STRUCT(name, member) \
Alexandre Julliarda3960291999-02-26 11:11:13 +0000195 (((INT)((LPBYTE)(&((name*)0)->member)-((LPBYTE)((name*)0))))+ \
Alexandre Julliarda0d77311998-09-13 16:32:00 +0000196 sizeof(((name*)0)->member))
197#endif
198
Eric Kohlb406c7d1999-01-24 19:12:34 +0000199
200/* This is only for Winelib applications. DON't use it wine itself!!! */
Francois Gouget05ba8c52000-03-19 21:15:36 +0000201#ifndef SNDMSG
202#ifdef __cplusplus
203#define SNDMSG ::SendMessage
204#else /* __cplusplus */
205#define SNDMSG SendMessage
206#endif /* __cplusplus */
207#endif /* SNDMSG */
Alexandre Julliarda0d77311998-09-13 16:32:00 +0000208
209
Dimitrie O. Paunb4488412002-11-18 19:45:47 +0000210#ifdef __cplusplus
211#define SNDMSGA ::SendMessageA
212#define SNDMSGW ::SendMessageW
213#else
214#define SNDMSGA SendMessageA
215#define SNDMSGW SendMessageW
216#endif
Alexandre Julliard638f1691999-01-17 16:32:32 +0000217
218/* Custom Draw messages */
219
220#define CDRF_DODEFAULT 0x0
221#define CDRF_NEWFONT 0x00000002
222#define CDRF_SKIPDEFAULT 0x00000004
223#define CDRF_NOTIFYPOSTPAINT 0x00000010
224#define CDRF_NOTIFYITEMDRAW 0x00000020
225#define CDRF_NOTIFYSUBITEMDRAW 0x00000020
226#define CDRF_NOTIFYPOSTERASE 0x00000040
Alex Priemc8cc3251999-07-31 11:12:45 +0000227#define CDRF_NOTIFYITEMERASE 0x00000080 /* obsolete ??? */
Alexandre Julliard638f1691999-01-17 16:32:32 +0000228
229
230/* drawstage flags */
231
232#define CDDS_PREPAINT 1
233#define CDDS_POSTPAINT 2
234#define CDDS_PREERASE 3
235#define CDDS_POSTERASE 4
236
Dimitrie O. Paun846f2532003-04-27 20:36:08 +0000237#define CDDS_ITEM 0x00010000
238#define CDDS_ITEMPREPAINT (CDDS_ITEM | CDDS_PREPAINT)
239#define CDDS_ITEMPOSTPAINT (CDDS_ITEM | CDDS_POSTPAINT)
240#define CDDS_ITEMPREERASE (CDDS_ITEM | CDDS_PREERASE)
241#define CDDS_ITEMPOSTERASE (CDDS_ITEM | CDDS_POSTERASE)
Alexandre Julliard638f1691999-01-17 16:32:32 +0000242#define CDDS_SUBITEM 0x00020000
243
244/* itemState flags */
245
Robert Shearmanead9e562004-08-25 02:14:28 +0000246#define CDIS_SELECTED 0x0001
247#define CDIS_GRAYED 0x0002
248#define CDIS_DISABLED 0x0004
249#define CDIS_CHECKED 0x0008
250#define CDIS_FOCUS 0x0010
251#define CDIS_DEFAULT 0x0020
252#define CDIS_HOT 0x0040
253#define CDIS_MARKED 0x0080
254#define CDIS_INDETERMINATE 0x0100
255#define CDIS_SHOWKEYBOARDCUES 0x0200
Alexandre Julliard638f1691999-01-17 16:32:32 +0000256
257
258typedef struct tagNMCUSTOMDRAWINFO
259{
260 NMHDR hdr;
261 DWORD dwDrawStage;
Alexandre Julliarda3960291999-02-26 11:11:13 +0000262 HDC hdc;
263 RECT rc;
Frank Richter9e570912005-08-30 10:07:17 +0000264 DWORD_PTR dwItemSpec;
Alexandre Julliarda3960291999-02-26 11:11:13 +0000265 UINT uItemState;
Alexandre Julliard638f1691999-01-17 16:32:32 +0000266 LPARAM lItemlParam;
267} NMCUSTOMDRAW, *LPNMCUSTOMDRAW;
268
269typedef struct tagNMTTCUSTOMDRAW
270{
Eric Kohlb406c7d1999-01-24 19:12:34 +0000271 NMCUSTOMDRAW nmcd;
Alexandre Julliarda3960291999-02-26 11:11:13 +0000272 UINT uDrawFlags;
Alexandre Julliard638f1691999-01-17 16:32:32 +0000273} NMTTCUSTOMDRAW, *LPNMTTCUSTOMDRAW;
274
275
276
277
Alexandre Julliard8cc3a5e1996-08-11 15:49:51 +0000278/* StatusWindow */
279
Alexandre Julliarda3960291999-02-26 11:11:13 +0000280#define STATUSCLASSNAMEA "msctls_statusbar32"
Dmitry Timoshkova9c057f2002-09-16 19:29:36 +0000281#if defined(__GNUC__)
282# define STATUSCLASSNAMEW (const WCHAR []){ 'm','s','c','t','l','s','_', \
283 's','t','a','t','u','s','b','a','r','3','2',0 }
284#elif defined(_MSC_VER)
285# define STATUSCLASSNAMEW L"msctls_statusbar32"
286#else
Jon Griffiths7a6bad82001-01-22 02:13:58 +0000287static const WCHAR STATUSCLASSNAMEW[] = { 'm','s','c','t','l','s','_',
288 's','t','a','t','u','s','b','a','r','3','2',0 };
Dmitry Timoshkova9c057f2002-09-16 19:29:36 +0000289#endif
Eric Kohl8d2933d1998-11-22 18:12:12 +0000290#define STATUSCLASSNAME WINELIB_NAME_AW(STATUSCLASSNAME)
Alexandre Julliard8cc3a5e1996-08-11 15:49:51 +0000291
Eric Kohl8d2933d1998-11-22 18:12:12 +0000292#define SBT_NOBORDERS 0x0100
293#define SBT_POPOUT 0x0200
294#define SBT_RTLREADING 0x0400 /* not supported */
295#define SBT_TOOLTIPS 0x0800
296#define SBT_OWNERDRAW 0x1000
Alexandre Julliarda0d77311998-09-13 16:32:00 +0000297
Eric Kohl8d2933d1998-11-22 18:12:12 +0000298#define SBARS_SIZEGRIP 0x0100
Alexandre Julliarda0d77311998-09-13 16:32:00 +0000299
Michael Kaufmann575c1742005-08-23 09:31:19 +0000300#define SB_SIMPLEID 0x00ff
301
Alexandre Julliarda3960291999-02-26 11:11:13 +0000302#define SB_SETTEXTA (WM_USER+1)
303#define SB_SETTEXTW (WM_USER+11)
Eric Kohl8d2933d1998-11-22 18:12:12 +0000304#define SB_SETTEXT WINELIB_NAME_AW(SB_SETTEXT)
Alexandre Julliarda3960291999-02-26 11:11:13 +0000305#define SB_GETTEXTA (WM_USER+2)
306#define SB_GETTEXTW (WM_USER+13)
Eric Kohl8d2933d1998-11-22 18:12:12 +0000307#define SB_GETTEXT WINELIB_NAME_AW(SB_GETTEXT)
Alexandre Julliarda3960291999-02-26 11:11:13 +0000308#define SB_GETTEXTLENGTHA (WM_USER+3)
309#define SB_GETTEXTLENGTHW (WM_USER+12)
Eric Kohl8d2933d1998-11-22 18:12:12 +0000310#define SB_GETTEXTLENGTH WINELIB_NAME_AW(SB_GETTEXTLENGTH)
311#define SB_SETPARTS (WM_USER+4)
Mike McCormack3775a652002-01-04 18:46:02 +0000312#define SB_SETBORDERS (WM_USER+5)
Eric Kohl8d2933d1998-11-22 18:12:12 +0000313#define SB_GETPARTS (WM_USER+6)
314#define SB_GETBORDERS (WM_USER+7)
315#define SB_SETMINHEIGHT (WM_USER+8)
316#define SB_SIMPLE (WM_USER+9)
317#define SB_GETRECT (WM_USER+10)
318#define SB_ISSIMPLE (WM_USER+14)
319#define SB_SETICON (WM_USER+15)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +0000320#define SB_SETTIPTEXTA (WM_USER+16)
321#define SB_SETTIPTEXTW (WM_USER+17)
Eric Kohl8d2933d1998-11-22 18:12:12 +0000322#define SB_SETTIPTEXT WINELIB_NAME_AW(SB_SETTIPTEXT)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +0000323#define SB_GETTIPTEXTA (WM_USER+18)
324#define SB_GETTIPTEXTW (WM_USER+19)
Eric Kohl8d2933d1998-11-22 18:12:12 +0000325#define SB_GETTIPTEXT WINELIB_NAME_AW(SB_GETTIPTEXT)
326#define SB_GETICON (WM_USER+20)
327#define SB_SETBKCOLOR CCM_SETBKCOLOR /* lParam = bkColor */
328#define SB_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
329#define SB_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
Alexandre Julliard8cc3a5e1996-08-11 15:49:51 +0000330
Eric Kohl8d2933d1998-11-22 18:12:12 +0000331#define SBN_FIRST (0U-880U)
332#define SBN_LAST (0U-899U)
333#define SBN_SIMPLEMODECHANGE (SBN_FIRST-0)
Alexandre Julliarddadf78f1998-05-17 17:13:43 +0000334
Filip Navara1ccaaa12003-08-22 23:51:15 +0000335HWND WINAPI CreateStatusWindowA (LONG, LPCSTR, HWND, UINT);
336HWND WINAPI CreateStatusWindowW (LONG, LPCWSTR, HWND, UINT);
Eric Kohl8d2933d1998-11-22 18:12:12 +0000337#define CreateStatusWindow WINELIB_NAME_AW(CreateStatusWindow)
Alexandre Julliarda3960291999-02-26 11:11:13 +0000338VOID WINAPI DrawStatusTextA (HDC, LPRECT, LPCSTR, UINT);
339VOID WINAPI DrawStatusTextW (HDC, LPRECT, LPCWSTR, UINT);
Eric Kohl8d2933d1998-11-22 18:12:12 +0000340#define DrawStatusText WINELIB_NAME_AW(DrawStatusText)
Alexandre Julliarda3960291999-02-26 11:11:13 +0000341VOID WINAPI MenuHelp (UINT, WPARAM, LPARAM, HMENU,
Francois Gougetbba4bb12002-09-17 01:35:09 +0000342 HINSTANCE, HWND, UINT*);
Alexandre Julliarddadf78f1998-05-17 17:13:43 +0000343
Jon Griffiths7a6bad82001-01-22 02:13:58 +0000344typedef struct tagCOLORSCHEME
Ian Schmidt2d127002000-02-26 18:30:12 +0000345{
346 DWORD dwSize;
347 COLORREF clrBtnHighlight; /* highlight color */
348 COLORREF clrBtnShadow; /* shadow color */
349} COLORSCHEME, *LPCOLORSCHEME;
350
Eric Kohlb406c7d1999-01-24 19:12:34 +0000351/**************************************************************************
352 * Drag List control
353 */
Alexandre Julliarddadf78f1998-05-17 17:13:43 +0000354
Eric Kohlb406c7d1999-01-24 19:12:34 +0000355typedef struct tagDRAGLISTINFO
356{
Alexandre Julliarda3960291999-02-26 11:11:13 +0000357 UINT uNotification;
358 HWND hWnd;
359 POINT ptCursor;
Paul Quinn1beaae51998-12-15 15:38:36 +0000360} DRAGLISTINFO, *LPDRAGLISTINFO;
361
362#define DL_BEGINDRAG (WM_USER+133)
363#define DL_DRAGGING (WM_USER+134)
364#define DL_DROPPED (WM_USER+135)
365#define DL_CANCELDRAG (WM_USER+136)
366
367#define DL_CURSORSET 0
368#define DL_STOPCURSOR 1
369#define DL_COPYCURSOR 2
370#define DL_MOVECURSOR 3
371
Dimitrie O. Paun50a0c8f2005-03-03 13:51:47 +0000372#define DRAGLISTMSGSTRINGA "commctrl_DragListMsg"
373#if defined(__GNUC__)
374# define DRAGLISTMSGSTRINGW (const WCHAR []){ 'c','o','m','m','c','t','r','l', \
375 '_','D','r','a','g','L','i','s','t','M','s','g',0 }
376#elif defined(_MSC_VER)
377# define DRAGLISTMSGSTRINGW L"commctrl_DragListMsg"
378#else
379static const WCHAR DRAGLISTMSGSTRINGW[] = { 'c','o','m','m','c','t','r','l', \
380 '_','D','r','a','g','L','i','s','t','M','s','g',0 };
381#endif
382#define DRAGLISTMSGSTRING WINELIB_NAME_AW(DRAGLISTMSGSTRING)
Paul Quinn1beaae51998-12-15 15:38:36 +0000383
Alexandre Julliarda3960291999-02-26 11:11:13 +0000384BOOL WINAPI MakeDragList (HWND);
385VOID WINAPI DrawInsert (HWND, HWND, INT);
386INT WINAPI LBItemFromPt (HWND, POINT, BOOL);
Eric Kohlb406c7d1999-01-24 19:12:34 +0000387
Jon Griffiths7a6bad82001-01-22 02:13:58 +0000388
Alexandre Julliard77b99181997-09-14 17:17:23 +0000389/* UpDown */
Alexandre Julliard670cdc41997-08-24 16:00:30 +0000390
Jon Griffiths7a6bad82001-01-22 02:13:58 +0000391#define UPDOWN_CLASSA "msctls_updown32"
Dmitry Timoshkova9c057f2002-09-16 19:29:36 +0000392#if defined(__GNUC__)
393# define UPDOWN_CLASSW (const WCHAR []){ 'm','s','c','t','l','s','_', \
394 'u','p','d','o','w','n','3','2',0 }
395#elif defined(_MSC_VER)
396# define UPDOWN_CLASSW L"msctls_updown32"
397#else
Jon Griffiths7a6bad82001-01-22 02:13:58 +0000398static const WCHAR UPDOWN_CLASSW[] = { 'm','s','c','t','l','s','_',
399 'u','p','d','o','w','n','3','2',0 };
Dmitry Timoshkova9c057f2002-09-16 19:29:36 +0000400#endif
Alexandre Julliarda0d77311998-09-13 16:32:00 +0000401#define UPDOWN_CLASS WINELIB_NAME_AW(UPDOWN_CLASS)
Alexandre Julliard670cdc41997-08-24 16:00:30 +0000402
Jon Griffiths024dc2f2004-06-28 20:27:33 +0000403typedef struct _UDACCEL
Alexandre Julliard670cdc41997-08-24 16:00:30 +0000404{
Alexandre Julliarda3960291999-02-26 11:11:13 +0000405 UINT nSec;
406 UINT nInc;
Francois Gouget8bf0db92000-11-10 22:32:12 +0000407} UDACCEL, *LPUDACCEL;
Alexandre Julliard670cdc41997-08-24 16:00:30 +0000408
409#define UD_MAXVAL 0x7fff
410#define UD_MINVAL 0x8001
411
412#define UDS_WRAP 0x0001
413#define UDS_SETBUDDYINT 0x0002
414#define UDS_ALIGNRIGHT 0x0004
415#define UDS_ALIGNLEFT 0x0008
416#define UDS_AUTOBUDDY 0x0010
417#define UDS_ARROWKEYS 0x0020
418#define UDS_HORZ 0x0040
419#define UDS_NOTHOUSANDS 0x0080
Francois Gougetf12dbd02001-01-22 19:26:07 +0000420#define UDS_HOTTRACK 0x0100
Alexandre Julliard670cdc41997-08-24 16:00:30 +0000421
422#define UDN_FIRST (0U-721)
Alexandre Julliarda0d77311998-09-13 16:32:00 +0000423#define UDN_LAST (0U-740)
Alexandre Julliard77b99181997-09-14 17:17:23 +0000424#define UDN_DELTAPOS (UDN_FIRST-1)
Alexandre Julliard670cdc41997-08-24 16:00:30 +0000425
Eric Kohlfa8ae2f1999-03-12 17:40:32 +0000426#define UDM_SETRANGE (WM_USER+101)
427#define UDM_GETRANGE (WM_USER+102)
Alexandre Julliard670cdc41997-08-24 16:00:30 +0000428#define UDM_SETPOS (WM_USER+103)
429#define UDM_GETPOS (WM_USER+104)
430#define UDM_SETBUDDY (WM_USER+105)
431#define UDM_GETBUDDY (WM_USER+106)
432#define UDM_SETACCEL (WM_USER+107)
433#define UDM_GETACCEL (WM_USER+108)
434#define UDM_SETBASE (WM_USER+109)
435#define UDM_GETBASE (WM_USER+110)
Eric Kohlfa8ae2f1999-03-12 17:40:32 +0000436#define UDM_SETRANGE32 (WM_USER+111)
437#define UDM_GETRANGE32 (WM_USER+112)
Peter Hunnisett565b0082000-09-19 02:43:00 +0000438#define UDM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
439#define UDM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
440#define UDM_SETPOS32 (WM_USER+113)
441#define UDM_GETPOS32 (WM_USER+114)
442
Alexandre Julliardc7c217b1998-04-13 12:21:30 +0000443
Alexandre Julliarde5fe7352000-08-11 12:53:27 +0000444#define NMUPDOWN NM_UPDOWN
445#define LPNMUPDOWN LPNM_UPDOWN
446
447typedef struct tagNM_UPDOWN
448{
449 NMHDR hdr;
450 int iPos;
451 int iDelta;
452} NM_UPDOWN, *LPNM_UPDOWN;
453
Alexandre Julliarda3960291999-02-26 11:11:13 +0000454HWND WINAPI CreateUpDownControl (DWORD, INT, INT, INT, INT,
455 HWND, INT, HINSTANCE, HWND,
456 INT, INT, INT);
Alexandre Julliard670cdc41997-08-24 16:00:30 +0000457
Alexandre Julliard77b99181997-09-14 17:17:23 +0000458/* Progress Bar */
459
Alexandre Julliarda3960291999-02-26 11:11:13 +0000460#define PROGRESS_CLASSA "msctls_progress32"
Dmitry Timoshkova9c057f2002-09-16 19:29:36 +0000461#if defined(__GNUC__)
462# define PROGRESS_CLASSW (const WCHAR []){ 'm','s','c','t','l','s','_', \
463 'p','r','o','g','r','e','s','s','3','2',0 }
464#elif defined(_MSC_VER)
465# define PROGRESS_CLASSW L"msctls_progress32"
466#else
Jon Griffiths7a6bad82001-01-22 02:13:58 +0000467static const WCHAR PROGRESS_CLASSW[] = { 'm','s','c','t','l','s','_',
468 'p','r','o','g','r','e','s','s','3','2',0 };
Dmitry Timoshkova9c057f2002-09-16 19:29:36 +0000469#endif
Alexandre Julliard77b99181997-09-14 17:17:23 +0000470#define PROGRESS_CLASS WINELIB_NAME_AW(PROGRESS_CLASS)
471
Eric Kohlfa8ae2f1999-03-12 17:40:32 +0000472#define PBM_SETRANGE (WM_USER+1)
Alexandre Julliard77b99181997-09-14 17:17:23 +0000473#define PBM_SETPOS (WM_USER+2)
474#define PBM_DELTAPOS (WM_USER+3)
475#define PBM_SETSTEP (WM_USER+4)
476#define PBM_STEPIT (WM_USER+5)
Eric Kohlfa8ae2f1999-03-12 17:40:32 +0000477#define PBM_SETRANGE32 (WM_USER+6)
Alexandre Julliardc7c217b1998-04-13 12:21:30 +0000478#define PBM_GETRANGE (WM_USER+7)
479#define PBM_GETPOS (WM_USER+8)
480#define PBM_SETBARCOLOR (WM_USER+9)
Thomas Weidenmueller7155eff2004-08-02 22:19:50 +0000481#define PBM_SETMARQUEE (WM_USER+10)
Alexandre Julliardc7c217b1998-04-13 12:21:30 +0000482#define PBM_SETBKCOLOR CCM_SETBKCOLOR
483
484#define PBS_SMOOTH 0x01
485#define PBS_VERTICAL 0x04
Thomas Weidenmueller7155eff2004-08-02 22:19:50 +0000486#define PBS_MARQUEE 0x08
Alexandre Julliardc7c217b1998-04-13 12:21:30 +0000487
488typedef struct
489{
Alexandre Julliarda3960291999-02-26 11:11:13 +0000490 INT iLow;
491 INT iHigh;
Alexandre Julliardc7c217b1998-04-13 12:21:30 +0000492} PBRANGE, *PPBRANGE;
493
Alexandre Julliarda69b88b1998-03-15 20:29:56 +0000494
495/* ImageList */
Alexandre Julliard70c9e092000-08-09 00:41:17 +0000496
Alexandre Julliarda69b88b1998-03-15 20:29:56 +0000497struct _IMAGELIST;
498typedef struct _IMAGELIST *HIMAGELIST;
Alexandre Julliarda69b88b1998-03-15 20:29:56 +0000499
Alexandre Julliard54c27111998-03-29 19:44:57 +0000500#define CLR_NONE 0xFFFFFFFF
501#define CLR_DEFAULT 0xFF000000
502#define CLR_HILIGHT CLR_DEFAULT
Alexandre Julliarda69b88b1998-03-15 20:29:56 +0000503
Robert Shearmanead9e562004-08-25 02:14:28 +0000504#define ILC_MASK 0x0001
505#define ILC_COLOR 0x0000
506#define ILC_COLORDDB 0x00FE
507#define ILC_COLOR4 0x0004
508#define ILC_COLOR8 0x0008
509#define ILC_COLOR16 0x0010
510#define ILC_COLOR24 0x0018
511#define ILC_COLOR32 0x0020
512#define ILC_PALETTE 0x0800 /* no longer supported by M$ */
513#define ILC_MIRROR 0x2000
514#define ILC_PERITEMMIRROR 0x8000
Alexandre Julliarda69b88b1998-03-15 20:29:56 +0000515
Dimitrie O. Paund5d23cb2002-09-04 18:45:24 +0000516#define ILD_NORMAL 0x0000
517#define ILD_TRANSPARENT 0x0001
518#define ILD_BLEND25 0x0002
519#define ILD_BLEND50 0x0004
520#define ILD_MASK 0x0010
521#define ILD_IMAGE 0x0020
522#define ILD_ROP 0x0040
523#define ILD_OVERLAYMASK 0x0F00
524#define ILD_PRESERVEALPHA 0x1000
525#define ILD_SCALE 0x2000
526#define ILD_DPISCALE 0x4000
Alexandre Julliarda69b88b1998-03-15 20:29:56 +0000527
528#define ILD_SELECTED ILD_BLEND50
529#define ILD_FOCUS ILD_BLEND25
530#define ILD_BLEND ILD_BLEND50
531
532#define INDEXTOOVERLAYMASK(i) ((i)<<8)
Alex Prieme6e71ad1999-11-28 19:50:01 +0000533#define INDEXTOSTATEIMAGEMASK(i) ((i)<<12)
Alexandre Julliarda69b88b1998-03-15 20:29:56 +0000534
Alexandre Julliard54c27111998-03-29 19:44:57 +0000535#define ILCF_MOVE (0x00000000)
536#define ILCF_SWAP (0x00000001)
537
Dimitrie O. Paun7cfab622002-09-12 00:50:39 +0000538#define ILS_NORMAL 0x0000
539#define ILS_GLOW 0x0001
540#define ILS_SHADOW 0x0002
541#define ILS_SATURATE 0x0004
542#define ILS_ALPHA 0x0008
Alexandre Julliard54c27111998-03-29 19:44:57 +0000543
Alexandre Julliarda69b88b1998-03-15 20:29:56 +0000544typedef struct _IMAGEINFO
545{
Alexandre Julliarda3960291999-02-26 11:11:13 +0000546 HBITMAP hbmImage;
547 HBITMAP hbmMask;
548 INT Unused1;
549 INT Unused2;
550 RECT rcImage;
Francois Gougetf12dbd02001-01-22 19:26:07 +0000551} IMAGEINFO, *LPIMAGEINFO;
Alexandre Julliarda69b88b1998-03-15 20:29:56 +0000552
553
Alexandre Julliard54c27111998-03-29 19:44:57 +0000554typedef struct _IMAGELISTDRAWPARAMS
Alexandre Julliarddadf78f1998-05-17 17:13:43 +0000555{
556 DWORD cbSize;
557 HIMAGELIST himl;
Dimitrie O. Paund5d23cb2002-09-04 18:45:24 +0000558 INT i;
559 HDC hdcDst;
560 INT x;
561 INT y;
562 INT cx;
563 INT cy;
564 INT xBitmap; /* x offest from the upperleft of bitmap */
565 INT yBitmap; /* y offset from the upperleft of bitmap */
Alexandre Julliarddadf78f1998-05-17 17:13:43 +0000566 COLORREF rgbBk;
567 COLORREF rgbFg;
Dimitrie O. Paund5d23cb2002-09-04 18:45:24 +0000568 UINT fStyle;
Alexandre Julliarddadf78f1998-05-17 17:13:43 +0000569 DWORD dwRop;
Dimitrie O. Paund5d23cb2002-09-04 18:45:24 +0000570 DWORD fState;
571 DWORD Frame;
572 DWORD crEffect;
Alexandre Julliarddadf78f1998-05-17 17:13:43 +0000573} IMAGELISTDRAWPARAMS, *LPIMAGELISTDRAWPARAMS;
Alexandre Julliard54c27111998-03-29 19:44:57 +0000574
Vincent Béron9a624912002-05-31 23:06:46 +0000575
Alexandre Julliarda3960291999-02-26 11:11:13 +0000576INT WINAPI ImageList_Add(HIMAGELIST,HBITMAP,HBITMAP);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000577INT WINAPI ImageList_AddMasked(HIMAGELIST,HBITMAP,COLORREF);
578BOOL WINAPI ImageList_BeginDrag(HIMAGELIST,INT,INT,INT);
Filip Navara1ccaaa12003-08-22 23:51:15 +0000579BOOL WINAPI ImageList_Copy(HIMAGELIST,INT,HIMAGELIST,INT,UINT);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000580HIMAGELIST WINAPI ImageList_Create(INT,INT,UINT,INT,INT);
581BOOL WINAPI ImageList_Destroy(HIMAGELIST);
582BOOL WINAPI ImageList_DragEnter(HWND,INT,INT);
Vincent Béron9a624912002-05-31 23:06:46 +0000583BOOL WINAPI ImageList_DragLeave(HWND);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000584BOOL WINAPI ImageList_DragMove(INT,INT);
585BOOL WINAPI ImageList_DragShowNolock (BOOL);
586BOOL WINAPI ImageList_Draw(HIMAGELIST,INT,HDC,INT,INT,UINT);
587BOOL WINAPI ImageList_DrawEx(HIMAGELIST,INT,HDC,INT,INT,INT,
588 INT,COLORREF,COLORREF,UINT);
Vincent Béron9a624912002-05-31 23:06:46 +0000589BOOL WINAPI ImageList_DrawIndirect(IMAGELISTDRAWPARAMS*);
Alexandre Julliard54c27111998-03-29 19:44:57 +0000590HIMAGELIST WINAPI ImageList_Duplicate(HIMAGELIST);
Filip Navara1ccaaa12003-08-22 23:51:15 +0000591VOID WINAPI ImageList_EndDrag(VOID);
Alexandre Julliarda69b88b1998-03-15 20:29:56 +0000592COLORREF WINAPI ImageList_GetBkColor(HIMAGELIST);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000593HIMAGELIST WINAPI ImageList_GetDragImage(POINT*,POINT*);
594HICON WINAPI ImageList_GetIcon(HIMAGELIST,INT,UINT);
595BOOL WINAPI ImageList_GetIconSize(HIMAGELIST,INT*,INT*);
596INT WINAPI ImageList_GetImageCount(HIMAGELIST);
597BOOL WINAPI ImageList_GetImageInfo(HIMAGELIST,INT,IMAGEINFO*);
598BOOL WINAPI ImageList_GetImageRect(HIMAGELIST,INT,LPRECT);
599HIMAGELIST WINAPI ImageList_LoadImageA(HINSTANCE,LPCSTR,INT,INT,
600 COLORREF,UINT,UINT);
601HIMAGELIST WINAPI ImageList_LoadImageW(HINSTANCE,LPCWSTR,INT,INT,
602 COLORREF,UINT,UINT);
Alexandre Julliarda69b88b1998-03-15 20:29:56 +0000603#define ImageList_LoadImage WINELIB_NAME_AW(ImageList_LoadImage)
Alexandre Julliarda3960291999-02-26 11:11:13 +0000604HIMAGELIST WINAPI ImageList_Merge(HIMAGELIST,INT,HIMAGELIST,INT,INT,INT);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000605BOOL WINAPI ImageList_Remove(HIMAGELIST,INT);
606BOOL WINAPI ImageList_Replace(HIMAGELIST,INT,HBITMAP,HBITMAP);
607INT WINAPI ImageList_ReplaceIcon(HIMAGELIST,INT,HICON);
Alexandre Julliarda69b88b1998-03-15 20:29:56 +0000608COLORREF WINAPI ImageList_SetBkColor(HIMAGELIST,COLORREF);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000609BOOL WINAPI ImageList_SetDragCursorImage(HIMAGELIST,INT,INT,INT);
Alexandre Julliarda845b881998-06-01 10:44:35 +0000610
Alexandre Julliarda3960291999-02-26 11:11:13 +0000611BOOL WINAPI ImageList_SetIconSize(HIMAGELIST,INT,INT);
Filip Navara1ccaaa12003-08-22 23:51:15 +0000612BOOL WINAPI ImageList_SetImageCount(HIMAGELIST,UINT);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000613BOOL WINAPI ImageList_SetOverlayImage(HIMAGELIST,INT,INT);
Alexandre Julliard5d0160e2004-10-05 04:38:15 +0000614
615#ifdef __IStream_INTERFACE_DEFINED__
616HIMAGELIST WINAPI ImageList_Read(LPSTREAM);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000617BOOL WINAPI ImageList_Write(HIMAGELIST, LPSTREAM);
Alexandre Julliarda845b881998-06-01 10:44:35 +0000618#endif
Alexandre Julliarda69b88b1998-03-15 20:29:56 +0000619
620#define ImageList_AddIcon(himl,hicon) ImageList_ReplaceIcon(himl,-1,hicon)
Alexandre Julliard54c27111998-03-29 19:44:57 +0000621#define ImageList_ExtractIcon(hi,himl,i) ImageList_GetIcon(himl,i,0)
Alexandre Julliarda69b88b1998-03-15 20:29:56 +0000622#define ImageList_LoadBitmap(hi,lpbmp,cx,cGrow,crMask) \
623 ImageList_LoadImage(hi,lpbmp,cx,cGrow,crMask,IMAGE_BITMAP,0)
Alexandre Julliard54c27111998-03-29 19:44:57 +0000624#define ImageList_RemoveAll(himl) ImageList_Remove(himl,-1)
625
Alexandre Julliarda69b88b1998-03-15 20:29:56 +0000626
Shaun Morris271f5221999-12-20 03:48:25 +0000627#ifndef WM_MOUSEHOVER
628#define WM_MOUSEHOVER 0x02A1
629#define WM_MOUSELEAVE 0x02A3
630#endif
631
632#ifndef TME_HOVER
633
634#define TME_HOVER 0x00000001
635#define TME_LEAVE 0x00000002
Kevin Koltzau358fff82003-11-26 05:06:59 +0000636#define TME_NONCLIENT 0x00000010
Shaun Morris271f5221999-12-20 03:48:25 +0000637#define TME_QUERY 0x40000000
638#define TME_CANCEL 0x80000000
639
640
641#define HOVER_DEFAULT 0xFFFFFFFF
642
643typedef struct tagTRACKMOUSEEVENT {
644 DWORD cbSize;
645 DWORD dwFlags;
646 HWND hwndTrack;
647 DWORD dwHoverTime;
648} TRACKMOUSEEVENT, *LPTRACKMOUSEEVENT;
649
Jon Griffiths7a6bad82001-01-22 02:13:58 +0000650#endif
Shaun Morris271f5221999-12-20 03:48:25 +0000651
Dimi Pauncb5edab2005-06-01 19:50:34 +0000652BOOL WINAPI _TrackMouseEvent(LPTRACKMOUSEEVENT lpEventTrack);
Shaun Morris271f5221999-12-20 03:48:25 +0000653
Alexandre Julliard638f1691999-01-17 16:32:32 +0000654/* Flat Scrollbar control */
655
Jon Griffiths7a6bad82001-01-22 02:13:58 +0000656#define FLATSB_CLASSA "flatsb_class32"
Dmitry Timoshkova9c057f2002-09-16 19:29:36 +0000657#if defined(__GNUC__)
658# define FLATSB_CLASSW (const WCHAR []){ 'f','l','a','t','s','b','_', \
659 'c','l','a','s','s','3','2',0 }
660#elif defined(_MSC_VER)
661# define FLATSB_CLASSW L"flatsb_class32"
662#else
Jon Griffiths7a6bad82001-01-22 02:13:58 +0000663static const WCHAR FLATSB_CLASSW[] = { 'f','l','a','t','s','b','_',
664 'c','l','a','s','s','3','2',0 };
Dmitry Timoshkova9c057f2002-09-16 19:29:36 +0000665#endif
Alexandre Julliard638f1691999-01-17 16:32:32 +0000666#define FLATSB_CLASS WINELIB_NAME_AW(FLATSB_CLASS)
667
Alex Priemc8cc3251999-07-31 11:12:45 +0000668#define WSB_PROP_CYVSCROLL 0x00000001L
669#define WSB_PROP_CXHSCROLL 0x00000002L
670#define WSB_PROP_CYHSCROLL 0x00000004L
671#define WSB_PROP_CXVSCROLL 0x00000008L
672#define WSB_PROP_CXHTHUMB 0x00000010L
673#define WSB_PROP_CYVTHUMB 0x00000020L
674#define WSB_PROP_VBKGCOLOR 0x00000040L
675#define WSB_PROP_HBKGCOLOR 0x00000080L
676#define WSB_PROP_VSTYLE 0x00000100L
677#define WSB_PROP_HSTYLE 0x00000200L
678#define WSB_PROP_WINSTYLE 0x00000400L
679#define WSB_PROP_PALETTE 0x00000800L
680#define WSB_PROP_MASK 0x00000FFFL
681
682#define FSB_REGULAR_MODE 0
683#define FSB_ENCARTA_MODE 1
684#define FSB_FLAT_MODE 2
685
686
Alexandre Julliarda3960291999-02-26 11:11:13 +0000687BOOL WINAPI FlatSB_EnableScrollBar(HWND, INT, UINT);
688BOOL WINAPI FlatSB_ShowScrollBar(HWND, INT, BOOL);
689BOOL WINAPI FlatSB_GetScrollRange(HWND, INT, LPINT, LPINT);
690BOOL WINAPI FlatSB_GetScrollInfo(HWND, INT, LPSCROLLINFO);
691INT WINAPI FlatSB_GetScrollPos(HWND, INT);
692BOOL WINAPI FlatSB_GetScrollProp(HWND, INT, LPINT);
693INT WINAPI FlatSB_SetScrollPos(HWND, INT, INT, BOOL);
694INT WINAPI FlatSB_SetScrollInfo(HWND, INT, LPSCROLLINFO, BOOL);
695INT WINAPI FlatSB_SetScrollRange(HWND, INT, INT, INT, BOOL);
696BOOL WINAPI FlatSB_SetScrollProp(HWND, UINT, INT, BOOL);
697BOOL WINAPI InitializeFlatSB(HWND);
698HRESULT WINAPI UninitializeFlatSB(HWND);
Alexandre Julliard638f1691999-01-17 16:32:32 +0000699
György 'Nog' Jeneyf9c01112002-10-02 20:01:01 +0000700/* Subclassing stuff */
701typedef LRESULT (CALLBACK *SUBCLASSPROC)(HWND, UINT, WPARAM, LPARAM, UINT_PTR, DWORD_PTR);
702BOOL WINAPI SetWindowSubclass(HWND, SUBCLASSPROC, UINT_PTR, DWORD_PTR);
703BOOL WINAPI GetWindowSubclass(HWND, SUBCLASSPROC, UINT_PTR, DWORD_PTR*);
704BOOL WINAPI RemoveWindowSubclass(HWND, SUBCLASSPROC, UINT_PTR);
705LRESULT WINAPI DefSubclassProc(HWND, UINT, WPARAM, LPARAM);
Alexandre Julliard638f1691999-01-17 16:32:32 +0000706
Robert Shearmanead9e562004-08-25 02:14:28 +0000707int WINAPI DrawShadowText(HDC, LPCWSTR, UINT, RECT*, DWORD, COLORREF, COLORREF, int, int);
708
Alexandre Julliarddadf78f1998-05-17 17:13:43 +0000709/* Header control */
710
Vincent Béron9a624912002-05-31 23:06:46 +0000711#define WC_HEADERA "SysHeader32"
Dmitry Timoshkova9c057f2002-09-16 19:29:36 +0000712#if defined(__GNUC__)
713# define WC_HEADERW (const WCHAR []){ 'S','y','s','H','e','a','d','e','r','3','2',0 }
714#elif defined(_MSC_VER)
715# define WC_HEADERW L"SysHeader32"
716#else
Jon Griffiths7a6bad82001-01-22 02:13:58 +0000717static const WCHAR WC_HEADERW[] = { 'S','y','s','H','e','a','d','e','r','3','2',0 };
Dmitry Timoshkova9c057f2002-09-16 19:29:36 +0000718#endif
Eric Kohl17216d31998-10-11 13:21:17 +0000719#define WC_HEADER WINELIB_NAME_AW(WC_HEADER)
Vincent Béron9a624912002-05-31 23:06:46 +0000720
721#define HDS_HORZ 0x0000
722#define HDS_BUTTONS 0x0002
723#define HDS_HOTTRACK 0x0004
724#define HDS_HIDDEN 0x0008
725#define HDS_DRAGDROP 0x0040
726#define HDS_FULLDRAG 0x0080
Robert Shearmanead9e562004-08-25 02:14:28 +0000727#define HDS_FILTERBAR 0x0100
728#define HDS_FLAT 0x0200
Alexandre Julliarddadf78f1998-05-17 17:13:43 +0000729
730#define HDI_WIDTH 0x0001
731#define HDI_HEIGHT HDI_WIDTH
732#define HDI_TEXT 0x0002
733#define HDI_FORMAT 0x0004
734#define HDI_LPARAM 0x0008
735#define HDI_BITMAP 0x0010
736#define HDI_IMAGE 0x0020
737#define HDI_DI_SETITEM 0x0040
738#define HDI_ORDER 0x0080
Robert Shearmanead9e562004-08-25 02:14:28 +0000739#define HDI_FILTER 0x0100
Alexandre Julliarddadf78f1998-05-17 17:13:43 +0000740
741#define HDF_LEFT 0x0000
742#define HDF_RIGHT 0x0001
743#define HDF_CENTER 0x0002
744#define HDF_JUSTIFYMASK 0x0003
Francois Gouget8bf0db92000-11-10 22:32:12 +0000745#define HDF_RTLREADING 0x0004
Alexandre Julliarddadf78f1998-05-17 17:13:43 +0000746
Robert Shearmanead9e562004-08-25 02:14:28 +0000747#define HDF_SORTDOWN 0x0200
748#define HDF_SORTUP 0x0400
Alexandre Julliarddadf78f1998-05-17 17:13:43 +0000749#define HDF_IMAGE 0x0800
750#define HDF_BITMAP_ON_RIGHT 0x1000
751#define HDF_BITMAP 0x2000
752#define HDF_STRING 0x4000
753#define HDF_OWNERDRAW 0x8000
754
755#define HHT_NOWHERE 0x0001
756#define HHT_ONHEADER 0x0002
757#define HHT_ONDIVIDER 0x0004
758#define HHT_ONDIVOPEN 0x0008
Robert Shearmanead9e562004-08-25 02:14:28 +0000759#define HHT_ONFILTER 0x0010
760#define HHT_ONFILTERBUTTON 0x0020
Alexandre Julliarddadf78f1998-05-17 17:13:43 +0000761#define HHT_ABOVE 0x0100
762#define HHT_BELOW 0x0200
763#define HHT_TORIGHT 0x0400
764#define HHT_TOLEFT 0x0800
765
766#define HDM_FIRST 0x1200
767#define HDM_GETITEMCOUNT (HDM_FIRST+0)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +0000768#define HDM_INSERTITEMA (HDM_FIRST+1)
769#define HDM_INSERTITEMW (HDM_FIRST+10)
Alexandre Julliardd30dfd21998-09-27 18:28:36 +0000770#define HDM_INSERTITEM WINELIB_NAME_AW(HDM_INSERTITEM)
Alexandre Julliarddadf78f1998-05-17 17:13:43 +0000771#define HDM_DELETEITEM (HDM_FIRST+2)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +0000772#define HDM_GETITEMA (HDM_FIRST+3)
773#define HDM_GETITEMW (HDM_FIRST+11)
Alexandre Julliardd30dfd21998-09-27 18:28:36 +0000774#define HDM_GETITEM WINELIB_NAME_AW(HDM_GETITEM)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +0000775#define HDM_SETITEMA (HDM_FIRST+4)
776#define HDM_SETITEMW (HDM_FIRST+12)
Alexandre Julliardd30dfd21998-09-27 18:28:36 +0000777#define HDM_SETITEM WINELIB_NAME_AW(HDM_SETITEM)
Alexandre Julliarddadf78f1998-05-17 17:13:43 +0000778#define HDM_LAYOUT (HDM_FIRST+5)
779#define HDM_HITTEST (HDM_FIRST+6)
780#define HDM_GETITEMRECT (HDM_FIRST+7)
781#define HDM_SETIMAGELIST (HDM_FIRST+8)
782#define HDM_GETIMAGELIST (HDM_FIRST+9)
783
Alexandre Julliarddadf78f1998-05-17 17:13:43 +0000784#define HDM_ORDERTOINDEX (HDM_FIRST+15)
785#define HDM_CREATEDRAGIMAGE (HDM_FIRST+16)
786#define HDM_GETORDERARRAY (HDM_FIRST+17)
787#define HDM_SETORDERARRAY (HDM_FIRST+18)
788#define HDM_SETHOTDIVIDER (HDM_FIRST+19)
Maxime Bellengé5b99b3d2003-10-14 20:13:42 +0000789#define HDM_SETBITMAPMARGIN (HDM_FIRST+20)
790#define HDM_GETBITMAPMARGIN (HDM_FIRST+21)
791#define HDM_SETFILTERCHANGETIMEOUT (HDM_FIRST+22)
792#define HDM_EDITFILTER (HDM_FIRST+23)
793#define HDM_CLEARFILTER (HDM_FIRST+24)
Alexandre Julliardd30dfd21998-09-27 18:28:36 +0000794#define HDM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
795#define HDM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
Alexandre Julliarddadf78f1998-05-17 17:13:43 +0000796
797#define HDN_FIRST (0U-300U)
798#define HDN_LAST (0U-399U)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +0000799#define HDN_ITEMCHANGINGA (HDN_FIRST-0)
800#define HDN_ITEMCHANGINGW (HDN_FIRST-20)
801#define HDN_ITEMCHANGING WINELIB_NAME_AW(HDN_ITEMCHANGING)
802#define HDN_ITEMCHANGEDA (HDN_FIRST-1)
803#define HDN_ITEMCHANGEDW (HDN_FIRST-21)
804#define HDN_ITEMCHANGED WINELIB_NAME_AW(HDN_ITEMCHANGED)
805#define HDN_ITEMCLICKA (HDN_FIRST-2)
806#define HDN_ITEMCLICKW (HDN_FIRST-22)
807#define HDN_ITEMCLICK WINELIB_NAME_AW(HDN_ITEMCLICK)
808#define HDN_ITEMDBLCLICKA (HDN_FIRST-3)
809#define HDN_ITEMDBLCLICKW (HDN_FIRST-23)
810#define HDN_ITEMDBLCLICK WINELIB_NAME_AW(HDN_ITEMDBLCLICK)
811#define HDN_DIVIDERDBLCLICKA (HDN_FIRST-5)
812#define HDN_DIVIDERDBLCLICKW (HDN_FIRST-25)
813#define HDN_DIVIDERDBLCLICK WINELIB_NAME_AW(HDN_DIVIDERDBLCLICK)
814#define HDN_BEGINTRACKA (HDN_FIRST-6)
815#define HDN_BEGINTRACKW (HDN_FIRST-26)
816#define HDN_BEGINTRACK WINELIB_NAME_AW(HDN_BEGINTRACK)
817#define HDN_ENDTRACKA (HDN_FIRST-7)
818#define HDN_ENDTRACKW (HDN_FIRST-27)
819#define HDN_ENDTRACK WINELIB_NAME_AW(HDN_ENDTRACK)
820#define HDN_TRACKA (HDN_FIRST-8)
821#define HDN_TRACKW (HDN_FIRST-28)
822#define HDN_TRACK WINELIB_NAME_AW(HDN_TRACK)
823#define HDN_GETDISPINFOA (HDN_FIRST-9)
824#define HDN_GETDISPINFOW (HDN_FIRST-29)
825#define HDN_GETDISPINFO WINELIB_NAME_AW(HDN_GETDISPINFO)
826#define HDN_BEGINDRAG (HDN_FIRST-10)
827#define HDN_ENDDRAG (HDN_FIRST-11)
Robert Shearmanead9e562004-08-25 02:14:28 +0000828#define HDN_FILTERCHANGE (HDN_FIRST-12)
829#define HDN_FILTERBTNCLICK (HDN_FIRST-13)
Alexandre Julliarddadf78f1998-05-17 17:13:43 +0000830
Alexandre Julliarddadf78f1998-05-17 17:13:43 +0000831typedef struct _HD_LAYOUT
832{
Alexandre Julliarda3960291999-02-26 11:11:13 +0000833 RECT *prc;
834 WINDOWPOS *pwpos;
Alexandre Julliarddadf78f1998-05-17 17:13:43 +0000835} HDLAYOUT, *LPHDLAYOUT;
836
837#define HD_LAYOUT HDLAYOUT
838
Alexandre Julliarda3960291999-02-26 11:11:13 +0000839typedef struct _HD_ITEMA
Alexandre Julliarddadf78f1998-05-17 17:13:43 +0000840{
Alexandre Julliarda3960291999-02-26 11:11:13 +0000841 UINT mask;
842 INT cxy;
Alexandre Julliarddadf78f1998-05-17 17:13:43 +0000843 LPSTR pszText;
Alexandre Julliarda3960291999-02-26 11:11:13 +0000844 HBITMAP hbm;
845 INT cchTextMax;
846 INT fmt;
Alexandre Julliarddadf78f1998-05-17 17:13:43 +0000847 LPARAM lParam;
Alexandre Julliarda3960291999-02-26 11:11:13 +0000848 INT iImage;
849 INT iOrder;
Dmitry Timoshkov6b6596a2001-11-23 18:44:43 +0000850 UINT type;
851 LPVOID pvFilter;
Alexandre Julliarda3960291999-02-26 11:11:13 +0000852} HDITEMA, *LPHDITEMA;
Alexandre Julliarda0d77311998-09-13 16:32:00 +0000853
Alexandre Julliarda3960291999-02-26 11:11:13 +0000854typedef struct _HD_ITEMW
Alexandre Julliarda0d77311998-09-13 16:32:00 +0000855{
Alexandre Julliarda3960291999-02-26 11:11:13 +0000856 UINT mask;
857 INT cxy;
Alexandre Julliarda0d77311998-09-13 16:32:00 +0000858 LPWSTR pszText;
Alexandre Julliarda3960291999-02-26 11:11:13 +0000859 HBITMAP hbm;
860 INT cchTextMax;
861 INT fmt;
Alexandre Julliarda0d77311998-09-13 16:32:00 +0000862 LPARAM lParam;
Alexandre Julliarda3960291999-02-26 11:11:13 +0000863 INT iImage;
864 INT iOrder;
Dmitry Timoshkov6b6596a2001-11-23 18:44:43 +0000865 UINT type;
866 LPVOID pvFilter;
Alexandre Julliarda3960291999-02-26 11:11:13 +0000867} HDITEMW, *LPHDITEMW;
Alexandre Julliarda0d77311998-09-13 16:32:00 +0000868
869#define HDITEM WINELIB_NAME_AW(HDITEM)
870#define LPHDITEM WINELIB_NAME_AW(LPHDITEM)
Alexandre Julliard8da12c41999-01-17 16:55:11 +0000871#define HD_ITEM HDITEM
Alexandre Julliarda0d77311998-09-13 16:32:00 +0000872
Alexandre Julliarda3960291999-02-26 11:11:13 +0000873#define HDITEM_V1_SIZEA CCSIZEOF_STRUCT(HDITEMA, lParam)
874#define HDITEM_V1_SIZEW CCSIZEOF_STRUCT(HDITEMW, lParam)
Alexandre Julliarda0d77311998-09-13 16:32:00 +0000875#define HDITEM_V1_SIZE WINELIB_NAME_AW(HDITEM_V1_SIZE)
Alexandre Julliarddadf78f1998-05-17 17:13:43 +0000876
Robert Shearmanead9e562004-08-25 02:14:28 +0000877#define HDFT_ISSTRING 0x0000
878#define HDFT_ISNUMBER 0x0001
879#define HDFT_HASNOVALUE 0x8000
880
881typedef struct _HD_TEXTFILTERA
882{
883 LPSTR pszText;
884 INT cchTextMax;
885} HD_TEXTFILTERA, *LPHD_TEXTFILTERA;
886
887typedef struct _HD_TEXTFILTERW
888{
889 LPWSTR pszText;
890 INT cchTextMax;
891} HD_TEXTFILTERW, *LPHD_TEXTFILTERW;
892
893#define HD_TEXTFILTER WINELIB_NAME_AW(HD_TEXTFILTER)
894#define HDTEXTFILTER WINELIB_NAME_AW(HD_TEXTFILTER)
895#define LPHD_TEXTFILTER WINELIB_NAME_AW(LPHD_TEXTFILTER)
896#define LPHDTEXTFILTER WINELIB_NAME_AW(LPHD_TEXTFILTER)
897
Alexandre Julliarddadf78f1998-05-17 17:13:43 +0000898typedef struct _HD_HITTESTINFO
899{
Alexandre Julliarda3960291999-02-26 11:11:13 +0000900 POINT pt;
901 UINT flags;
902 INT iItem;
Alexandre Julliarddadf78f1998-05-17 17:13:43 +0000903} HDHITTESTINFO, *LPHDHITTESTINFO;
904
905#define HD_HITTESTINFO HDHITTESTINFO
906
Alexandre Julliarda3960291999-02-26 11:11:13 +0000907typedef struct tagNMHEADERA
Alexandre Julliarddadf78f1998-05-17 17:13:43 +0000908{
Alexandre Julliarda0d77311998-09-13 16:32:00 +0000909 NMHDR hdr;
Alexandre Julliarda3960291999-02-26 11:11:13 +0000910 INT iItem;
911 INT iButton;
912 HDITEMA *pitem;
913} NMHEADERA, *LPNMHEADERA;
Alexandre Julliarddadf78f1998-05-17 17:13:43 +0000914
Alexandre Julliarda3960291999-02-26 11:11:13 +0000915typedef struct tagNMHEADERW
Alexandre Julliardd30dfd21998-09-27 18:28:36 +0000916{
917 NMHDR hdr;
Alexandre Julliarda3960291999-02-26 11:11:13 +0000918 INT iItem;
919 INT iButton;
920 HDITEMW *pitem;
921} NMHEADERW, *LPNMHEADERW;
Alexandre Julliardd30dfd21998-09-27 18:28:36 +0000922
923#define NMHEADER WINELIB_NAME_AW(NMHEADER)
924#define LPNMHEADER WINELIB_NAME_AW(LPNMHEADER)
Alexandre Julliarde32be241999-02-10 06:43:59 +0000925#define HD_NOTIFY NMHEADER
Alexandre Julliardd30dfd21998-09-27 18:28:36 +0000926
Alexandre Julliarda3960291999-02-26 11:11:13 +0000927typedef struct tagNMHDDISPINFOA
Alexandre Julliardd30dfd21998-09-27 18:28:36 +0000928{
929 NMHDR hdr;
Alexandre Julliarda3960291999-02-26 11:11:13 +0000930 INT iItem;
931 UINT mask;
Alexandre Julliardd30dfd21998-09-27 18:28:36 +0000932 LPSTR pszText;
Alexandre Julliarda3960291999-02-26 11:11:13 +0000933 INT cchTextMax;
934 INT iImage;
Alexandre Julliardd30dfd21998-09-27 18:28:36 +0000935 LPARAM lParam;
Alexandre Julliarda3960291999-02-26 11:11:13 +0000936} NMHDDISPINFOA, *LPNMHDDISPINFOA;
Alexandre Julliardd30dfd21998-09-27 18:28:36 +0000937
Alexandre Julliarda3960291999-02-26 11:11:13 +0000938typedef struct tagNMHDDISPINFOW
Alexandre Julliardd30dfd21998-09-27 18:28:36 +0000939{
940 NMHDR hdr;
Alexandre Julliarda3960291999-02-26 11:11:13 +0000941 INT iItem;
942 UINT mask;
Alexandre Julliardd30dfd21998-09-27 18:28:36 +0000943 LPWSTR pszText;
Alexandre Julliarda3960291999-02-26 11:11:13 +0000944 INT cchTextMax;
945 INT iImage;
Alexandre Julliardd30dfd21998-09-27 18:28:36 +0000946 LPARAM lParam;
Alexandre Julliarda3960291999-02-26 11:11:13 +0000947} NMHDDISPINFOW, *LPNMHDDISPINFOW;
Alexandre Julliardd30dfd21998-09-27 18:28:36 +0000948
949#define NMHDDISPINFO WINELIB_NAME_AW(NMHDDISPINFO)
950#define LPNMHDDISPINFO WINELIB_NAME_AW(LPNMHDDISPINFO)
951
Robert Shearmanead9e562004-08-25 02:14:28 +0000952typedef struct tagNMHDFILTERBTNCLICK
953{
954 NMHDR hdr;
955 INT iItem;
956 RECT rc;
957} NMHDFILTERBTNCLICK, *LPNMHDFILTERBTNCLICK;
958
Alexandre Julliarda845b881998-06-01 10:44:35 +0000959#define Header_GetItemCount(hwndHD) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +0000960 (INT)SNDMSGA((hwndHD),HDM_GETITEMCOUNT,0,0L)
Alexandre Julliarda3960291999-02-26 11:11:13 +0000961#define Header_InsertItemA(hwndHD,i,phdi) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +0000962 (INT)SNDMSGA((hwndHD),HDM_INSERTITEMA,(WPARAM)(INT)(i),(LPARAM)(const HDITEMA*)(phdi))
Alexandre Julliarda3960291999-02-26 11:11:13 +0000963#define Header_InsertItemW(hwndHD,i,phdi) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +0000964 (INT)SNDMSGW((hwndHD),HDM_INSERTITEMW,(WPARAM)(INT)(i),(LPARAM)(const HDITEMW*)(phdi))
Alexandre Julliardd30dfd21998-09-27 18:28:36 +0000965#define Header_InsertItem WINELIB_NAME_AW(Header_InsertItem)
Alexandre Julliarda845b881998-06-01 10:44:35 +0000966#define Header_DeleteItem(hwndHD,i) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +0000967 (BOOL)SNDMSGA((hwndHD),HDM_DELETEITEM,(WPARAM)(INT)(i),0L)
Alexandre Julliarda3960291999-02-26 11:11:13 +0000968#define Header_GetItemA(hwndHD,i,phdi) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +0000969 (BOOL)SNDMSGA((hwndHD),HDM_GETITEMA,(WPARAM)(INT)(i),(LPARAM)(HDITEMA*)(phdi))
Alexandre Julliarda3960291999-02-26 11:11:13 +0000970#define Header_GetItemW(hwndHD,i,phdi) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +0000971 (BOOL)SNDMSGW((hwndHD),HDM_GETITEMW,(WPARAM)(INT)(i),(LPARAM)(HDITEMW*)(phdi))
Alexandre Julliardd30dfd21998-09-27 18:28:36 +0000972#define Header_GetItem WINELIB_NAME_AW(Header_GetItem)
Alexandre Julliarda3960291999-02-26 11:11:13 +0000973#define Header_SetItemA(hwndHD,i,phdi) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +0000974 (BOOL)SNDMSGA((hwndHD),HDM_SETITEMA,(WPARAM)(INT)(i),(LPARAM)(const HDITEMA*)(phdi))
Alexandre Julliarda3960291999-02-26 11:11:13 +0000975#define Header_SetItemW(hwndHD,i,phdi) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +0000976 (BOOL)SNDMSGW((hwndHD),HDM_SETITEMW,(WPARAM)(INT)(i),(LPARAM)(const HDITEMW*)(phdi))
Alexandre Julliardd30dfd21998-09-27 18:28:36 +0000977#define Header_SetItem WINELIB_NAME_AW(Header_SetItem)
Alexandre Julliarda845b881998-06-01 10:44:35 +0000978#define Header_Layout(hwndHD,playout) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +0000979 (BOOL)SNDMSGA((hwndHD),HDM_LAYOUT,0,(LPARAM)(LPHDLAYOUT)(playout))
Alexandre Julliarda845b881998-06-01 10:44:35 +0000980#define Header_GetItemRect(hwnd,iItem,lprc) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +0000981 (BOOL)SNDMSGA((hwnd),HDM_GETITEMRECT,(WPARAM)iItem,(LPARAM)lprc)
Alexandre Julliarda845b881998-06-01 10:44:35 +0000982#define Header_SetImageList(hwnd,himl) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +0000983 (HIMAGELIST)SNDMSGA((hwnd),HDM_SETIMAGELIST,0,(LPARAM)himl)
Alexandre Julliarda845b881998-06-01 10:44:35 +0000984#define Header_GetImageList(hwnd) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +0000985 (HIMAGELIST)SNDMSGA((hwnd),HDM_GETIMAGELIST,0,0)
Alexandre Julliarda845b881998-06-01 10:44:35 +0000986#define Header_OrderToIndex(hwnd,i) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +0000987 (INT)SNDMSGA((hwnd),HDM_ORDERTOINDEX,(WPARAM)i,0)
Alexandre Julliarda845b881998-06-01 10:44:35 +0000988#define Header_CreateDragImage(hwnd,i) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +0000989 (HIMAGELIST)SNDMSGA((hwnd),HDM_CREATEDRAGIMAGE,(WPARAM)i,0)
Alexandre Julliarda845b881998-06-01 10:44:35 +0000990#define Header_GetOrderArray(hwnd,iCount,lpi) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +0000991 (BOOL)SNDMSGA((hwnd),HDM_GETORDERARRAY,(WPARAM)iCount,(LPARAM)lpi)
Alexandre Julliarda845b881998-06-01 10:44:35 +0000992#define Header_SetOrderArray(hwnd,iCount,lpi) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +0000993 (BOOL)SNDMSGA((hwnd),HDM_SETORDERARRAY,(WPARAM)iCount,(LPARAM)lpi)
Alexandre Julliarda845b881998-06-01 10:44:35 +0000994#define Header_SetHotDivider(hwnd,fPos,dw) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +0000995 (INT)SNDMSGA((hwnd),HDM_SETHOTDIVIDER,(WPARAM)fPos,(LPARAM)dw)
Alexandre Julliarda845b881998-06-01 10:44:35 +0000996#define Header_SetUnicodeFormat(hwnd,fUnicode) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +0000997 (BOOL)SNDMSGA((hwnd),HDM_SETUNICODEFORMAT,(WPARAM)(fUnicode),0)
Alexandre Julliarda845b881998-06-01 10:44:35 +0000998#define Header_GetUnicodeFormat(hwnd) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +0000999 (BOOL)SNDMSGA((hwnd),HDM_GETUNICODEFORMAT,0,0)
Alexandre Julliarda845b881998-06-01 10:44:35 +00001000
Kevin Koltzau7ee18df2003-10-03 03:33:15 +00001001/* Win32 5.1 Button Theme */
Frank Richter333d0bd2005-07-11 17:59:26 +00001002#define WC_BUTTONA "Button"
1003#if defined(__GNUC__)
1004# define WC_BUTTONW (const WCHAR []){ 'B','u','t','t','o','n',0 }
1005#elif defined(_MSC_VER)
1006# define WC_BUTTONW L"Button"
1007#else
1008static const WCHAR WC_BUTTONW[] = { 'B','u','t','t','o','n',0 };
1009#endif
1010#define WC_BUTTON WINELIB_NAME_AW(WC_BUTTON)
1011
Kevin Koltzau7ee18df2003-10-03 03:33:15 +00001012#define BCN_FIRST (0U-1250U)
1013#define BCN_LAST (0U-1350U)
1014
1015#define BCN_HOTITEMCHANGE (BCN_FIRST + 0x0001)
1016
Frank Richter6ebc9862005-07-03 11:19:55 +00001017typedef struct tagNMBCHOTITEM
1018{
1019 NMHDR hdr;
1020 DWORD dwFlags;
1021} NMBCHOTITEM, *LPNMBCHOTITEM;
Alexandre Julliarda845b881998-06-01 10:44:35 +00001022
Frank Richter333d0bd2005-07-11 17:59:26 +00001023#define BST_HOT 0x0200
1024
Alexandre Julliarda845b881998-06-01 10:44:35 +00001025/* Toolbar */
1026
Jon Griffiths7a6bad82001-01-22 02:13:58 +00001027#define TOOLBARCLASSNAMEA "ToolbarWindow32"
Dmitry Timoshkova9c057f2002-09-16 19:29:36 +00001028#if defined(__GNUC__)
1029# define TOOLBARCLASSNAMEW (const WCHAR []){ 'T','o','o','l','b','a','r', \
1030 'W','i','n','d','o','w','3','2',0 }
1031#elif defined(_MSC_VER)
1032# define TOOLBARCLASSNAMEW L"ToolbarWindow32"
1033#else
Jon Griffiths7a6bad82001-01-22 02:13:58 +00001034static const WCHAR TOOLBARCLASSNAMEW[] = { 'T','o','o','l','b','a','r',
1035 'W','i','n','d','o','w','3','2',0 };
Dmitry Timoshkova9c057f2002-09-16 19:29:36 +00001036#endif
Alexandre Julliarda845b881998-06-01 10:44:35 +00001037#define TOOLBARCLASSNAME WINELIB_NAME_AW(TOOLBARCLASSNAME)
1038
Jon Griffiths7a6bad82001-01-22 02:13:58 +00001039#define CMB_MASKED 0x02
1040
1041#define TBSTATE_CHECKED 0x01
1042#define TBSTATE_PRESSED 0x02
1043#define TBSTATE_ENABLED 0x04
1044#define TBSTATE_HIDDEN 0x08
1045#define TBSTATE_INDETERMINATE 0x10
1046#define TBSTATE_WRAP 0x20
Alexandre Julliardebfc0fe1998-06-28 18:40:26 +00001047#define TBSTATE_ELLIPSES 0x40
Jon Griffiths7a6bad82001-01-22 02:13:58 +00001048#define TBSTATE_MARKED 0x80
1049
Guy L. Albertelli8d6a4ba2002-03-11 01:10:22 +00001050
Vincent Béron9a624912002-05-31 23:06:46 +00001051/* as of _WIN32_IE >= 0x0500 the following symbols are obsolete,
Guy L. Albertelli8d6a4ba2002-03-11 01:10:22 +00001052 * "everyone" should use the BTNS_... stuff below
1053 */
Jon Griffiths7a6bad82001-01-22 02:13:58 +00001054#define TBSTYLE_BUTTON 0x00
1055#define TBSTYLE_SEP 0x01
1056#define TBSTYLE_CHECK 0x02
1057#define TBSTYLE_GROUP 0x04
1058#define TBSTYLE_CHECKGROUP (TBSTYLE_GROUP | TBSTYLE_CHECK)
1059#define TBSTYLE_DROPDOWN 0x08
Huw D M Davies73e0b9f2000-04-14 14:08:19 +00001060#define TBSTYLE_AUTOSIZE 0x10
1061#define TBSTYLE_NOPREFIX 0x20
Guy L. Albertelli8d6a4ba2002-03-11 01:10:22 +00001062#define BTNS_BUTTON TBSTYLE_BUTTON
1063#define BTNS_SEP TBSTYLE_SEP
1064#define BTNS_CHECK TBSTYLE_CHECK
1065#define BTNS_GROUP TBSTYLE_GROUP
1066#define BTNS_CHECKGROUP TBSTYLE_CHECKGROUP
1067#define BTNS_DROPDOWN TBSTYLE_DROPDOWN
1068#define BTNS_AUTOSIZE TBSTYLE_AUTOSIZE
1069#define BTNS_NOPREFIX TBSTYLE_NOPREFIX
1070#define BTNS_SHOWTEXT 0x40 /* ignored unless TBSTYLE_EX_MIXEDB set */
1071#define BTNS_WHOLEDROPDOWN 0x80 /* draw dropdown arrow, but without split arrow section */
Jon Griffiths7a6bad82001-01-22 02:13:58 +00001072
1073#define TBSTYLE_TOOLTIPS 0x0100
1074#define TBSTYLE_WRAPABLE 0x0200
1075#define TBSTYLE_ALTDRAG 0x0400
1076#define TBSTYLE_FLAT 0x0800
1077#define TBSTYLE_LIST 0x1000
Vincent Béron9a624912002-05-31 23:06:46 +00001078#define TBSTYLE_CUSTOMERASE 0x2000
Huw D M Davies73e0b9f2000-04-14 14:08:19 +00001079#define TBSTYLE_REGISTERDROP 0x4000
1080#define TBSTYLE_TRANSPARENT 0x8000
Guy L. Albertelli8d6a4ba2002-03-11 01:10:22 +00001081#define TBSTYLE_EX_DRAWDDARROWS 0x00000001
1082#define TBSTYLE_EX_UNDOC1 0x00000004 /* similar to TBSTYLE_WRAPABLE */
1083#define TBSTYLE_EX_MIXEDBUTTONS 0x00000008
1084#define TBSTYLE_EX_HIDECLIPPEDBUTTONS 0x00000010 /* don't show partially obscured buttons */
Guy L. Albertelli0a44e5b2002-04-05 21:15:32 +00001085#define TBSTYLE_EX_DOUBLEBUFFER 0x00000080 /* Double Buffer the toolbar ??? */
Alexandre Julliard767e6f61998-08-09 12:47:43 +00001086
1087#define TBIF_IMAGE 0x00000001
1088#define TBIF_TEXT 0x00000002
1089#define TBIF_STATE 0x00000004
1090#define TBIF_STYLE 0x00000008
1091#define TBIF_LPARAM 0x00000010
1092#define TBIF_COMMAND 0x00000020
1093#define TBIF_SIZE 0x00000040
Martin Fuchsd7b2c8a2003-09-01 23:54:28 +00001094#define TBIF_BYINDEX 0x80000000
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00001095
Vincent Béron9a624912002-05-31 23:06:46 +00001096#define TBBF_LARGE 0x0001
Alexandre Julliard767e6f61998-08-09 12:47:43 +00001097
Alexandre Julliarda845b881998-06-01 10:44:35 +00001098#define TB_ENABLEBUTTON (WM_USER+1)
1099#define TB_CHECKBUTTON (WM_USER+2)
1100#define TB_PRESSBUTTON (WM_USER+3)
1101#define TB_HIDEBUTTON (WM_USER+4)
1102#define TB_INDETERMINATE (WM_USER+5)
Ian Schmidt2d127002000-02-26 18:30:12 +00001103#define TB_MARKBUTTON (WM_USER+6)
Vincent Béron9a624912002-05-31 23:06:46 +00001104#define TB_ISBUTTONENABLED (WM_USER+9)
1105#define TB_ISBUTTONCHECKED (WM_USER+10)
1106#define TB_ISBUTTONPRESSED (WM_USER+11)
Jon Griffiths7a6bad82001-01-22 02:13:58 +00001107#define TB_ISBUTTONHIDDEN (WM_USER+12)
Alexandre Julliarda845b881998-06-01 10:44:35 +00001108#define TB_ISBUTTONINDETERMINATE (WM_USER+13)
1109#define TB_ISBUTTONHIGHLIGHTED (WM_USER+14)
1110#define TB_SETSTATE (WM_USER+17)
1111#define TB_GETSTATE (WM_USER+18)
1112#define TB_ADDBITMAP (WM_USER+19)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00001113#define TB_ADDBUTTONSA (WM_USER+20)
1114#define TB_ADDBUTTONSW (WM_USER+68)
1115#define TB_ADDBUTTONS WINELIB_NAME_AW(TB_ADDBUTTONS)
Alexandre Julliarda845b881998-06-01 10:44:35 +00001116#define TB_HITTEST (WM_USER+69)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00001117#define TB_INSERTBUTTONA (WM_USER+21)
1118#define TB_INSERTBUTTONW (WM_USER+67)
1119#define TB_INSERTBUTTON WINELIB_NAME_AW(TB_INSERTBUTTON)
Alexandre Julliarda845b881998-06-01 10:44:35 +00001120#define TB_DELETEBUTTON (WM_USER+22)
1121#define TB_GETBUTTON (WM_USER+23)
1122#define TB_BUTTONCOUNT (WM_USER+24)
1123#define TB_COMMANDTOINDEX (WM_USER+25)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00001124#define TB_SAVERESTOREA (WM_USER+26)
1125#define TB_SAVERESTOREW (WM_USER+76)
1126#define TB_SAVERESTORE WINELIB_NAME_AW(TB_SAVERESTORE)
Alexandre Julliarda845b881998-06-01 10:44:35 +00001127#define TB_CUSTOMIZE (WM_USER+27)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00001128#define TB_ADDSTRINGA (WM_USER+28)
1129#define TB_ADDSTRINGW (WM_USER+77)
1130#define TB_ADDSTRING WINELIB_NAME_AW(TB_ADDSTRING)
Alexandre Julliarda845b881998-06-01 10:44:35 +00001131#define TB_GETITEMRECT (WM_USER+29)
1132#define TB_BUTTONSTRUCTSIZE (WM_USER+30)
1133#define TB_SETBUTTONSIZE (WM_USER+31)
1134#define TB_SETBITMAPSIZE (WM_USER+32)
1135#define TB_AUTOSIZE (WM_USER+33)
1136#define TB_GETTOOLTIPS (WM_USER+35)
1137#define TB_SETTOOLTIPS (WM_USER+36)
1138#define TB_SETPARENT (WM_USER+37)
1139#define TB_SETROWS (WM_USER+39)
1140#define TB_GETROWS (WM_USER+40)
Alexandre Julliardf90efa91998-06-14 15:24:15 +00001141#define TB_GETBITMAPFLAGS (WM_USER+41)
Alexandre Julliarda845b881998-06-01 10:44:35 +00001142#define TB_SETCMDID (WM_USER+42)
1143#define TB_CHANGEBITMAP (WM_USER+43)
1144#define TB_GETBITMAP (WM_USER+44)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00001145#define TB_GETBUTTONTEXTA (WM_USER+45)
1146#define TB_GETBUTTONTEXTW (WM_USER+75)
1147#define TB_GETBUTTONTEXT WINELIB_NAME_AW(TB_GETBUTTONTEXT)
Alexandre Julliarda845b881998-06-01 10:44:35 +00001148#define TB_REPLACEBITMAP (WM_USER+46)
1149#define TB_SETINDENT (WM_USER+47)
1150#define TB_SETIMAGELIST (WM_USER+48)
1151#define TB_GETIMAGELIST (WM_USER+49)
1152#define TB_LOADIMAGES (WM_USER+50)
1153#define TB_GETRECT (WM_USER+51) /* wParam is the Cmd instead of index */
1154#define TB_SETHOTIMAGELIST (WM_USER+52)
1155#define TB_GETHOTIMAGELIST (WM_USER+53)
1156#define TB_SETDISABLEDIMAGELIST (WM_USER+54)
1157#define TB_GETDISABLEDIMAGELIST (WM_USER+55)
1158#define TB_SETSTYLE (WM_USER+56)
1159#define TB_GETSTYLE (WM_USER+57)
1160#define TB_GETBUTTONSIZE (WM_USER+58)
1161#define TB_SETBUTTONWIDTH (WM_USER+59)
1162#define TB_SETMAXTEXTROWS (WM_USER+60)
1163#define TB_GETTEXTROWS (WM_USER+61)
Alexandre Julliardebfc0fe1998-06-28 18:40:26 +00001164#define TB_GETOBJECT (WM_USER+62)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00001165#define TB_GETBUTTONINFOW (WM_USER+63)
1166#define TB_GETBUTTONINFOA (WM_USER+65)
1167#define TB_GETBUTTONINFO WINELIB_NAME_AW(TB_GETBUTTONINFO)
1168#define TB_SETBUTTONINFOW (WM_USER+64)
1169#define TB_SETBUTTONINFOA (WM_USER+66)
1170#define TB_SETBUTTONINFO WINELIB_NAME_AW(TB_SETBUTTONINFO)
Alexandre Julliardebfc0fe1998-06-28 18:40:26 +00001171#define TB_SETDRAWTEXTFLAGS (WM_USER+70)
1172#define TB_GETHOTITEM (WM_USER+71)
1173#define TB_SETHOTITEM (WM_USER+72)
1174#define TB_SETANCHORHIGHLIGHT (WM_USER+73)
1175#define TB_GETANCHORHIGHLIGHT (WM_USER+74)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00001176#define TB_MAPACCELERATORA (WM_USER+78)
1177#define TB_MAPACCELERATORW (WM_USER+90)
1178#define TB_MAPACCELERATOR WINELIB_NAME_AW(TB_MAPACCELERATOR)
Alexandre Julliardebfc0fe1998-06-28 18:40:26 +00001179#define TB_GETINSERTMARK (WM_USER+79)
1180#define TB_SETINSERTMARK (WM_USER+80)
1181#define TB_INSERTMARKHITTEST (WM_USER+81)
1182#define TB_MOVEBUTTON (WM_USER+82)
1183#define TB_GETMAXSIZE (WM_USER+83)
1184#define TB_SETEXTENDEDSTYLE (WM_USER+84)
1185#define TB_GETEXTENDEDSTYLE (WM_USER+85)
1186#define TB_GETPADDING (WM_USER+86)
1187#define TB_SETPADDING (WM_USER+87)
1188#define TB_SETINSERTMARKCOLOR (WM_USER+88)
1189#define TB_GETINSERTMARKCOLOR (WM_USER+89)
Alexandre Julliardebfc0fe1998-06-28 18:40:26 +00001190#define TB_SETCOLORSCHEME CCM_SETCOLORSCHEME
1191#define TB_GETCOLORSCHEME CCM_GETCOLORSCHEME
Alexandre Julliardebfc0fe1998-06-28 18:40:26 +00001192#define TB_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
1193#define TB_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
Guy L. Albertelli8d6a4ba2002-03-11 01:10:22 +00001194#define TB_GETSTRINGW (WM_USER+91)
1195#define TB_GETSTRINGA (WM_USER+92)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00001196#define TB_GETSTRING WINELIB_NAME_AW(TB_GETSTRING)
Guy L. Albertelli8d6a4ba2002-03-11 01:10:22 +00001197
1198/* undocumented messages in Toolbar */
1199#define TB_UNKWN45D (WM_USER+93)
1200#define TB_UNKWN45E (WM_USER+94)
1201#define TB_UNKWN460 (WM_USER+96)
Robert Shearman41596e82004-02-17 20:28:19 +00001202#define TB_UNKWN462 (WM_USER+98)
Guy L. Albertelli8d6a4ba2002-03-11 01:10:22 +00001203#define TB_UNKWN463 (WM_USER+99)
1204#define TB_UNKWN464 (WM_USER+100)
1205
Robert Shearmanead9e562004-08-25 02:14:28 +00001206#define TB_GETMETRICS (WM_USER+101)
1207#define TB_SETMETRICS (WM_USER+102)
1208#define TB_SETWINDOWTHEME CCM_SETWINDOWTHEME
Alexandre Julliardf90efa91998-06-14 15:24:15 +00001209
Alexandre Julliarda0d77311998-09-13 16:32:00 +00001210#define TBN_FIRST (0U-700U)
1211#define TBN_LAST (0U-720U)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00001212#define TBN_GETBUTTONINFOA (TBN_FIRST-0)
1213#define TBN_GETBUTTONINFOW (TBN_FIRST-20)
1214#define TBN_GETBUTTONINFO WINELIB_NAME_AW(TBN_GETBUTTONINFO)
Eric Kohl654ee2c1999-05-22 10:52:31 +00001215#define TBN_BEGINDRAG (TBN_FIRST-1)
1216#define TBN_ENDDRAG (TBN_FIRST-2)
1217#define TBN_BEGINADJUST (TBN_FIRST-3)
1218#define TBN_ENDADJUST (TBN_FIRST-4)
1219#define TBN_RESET (TBN_FIRST-5)
1220#define TBN_QUERYINSERT (TBN_FIRST-6)
1221#define TBN_QUERYDELETE (TBN_FIRST-7)
1222#define TBN_TOOLBARCHANGE (TBN_FIRST-8)
1223#define TBN_CUSTHELP (TBN_FIRST-9)
1224#define TBN_DROPDOWN (TBN_FIRST-10)
1225#define TBN_GETOBJECT (TBN_FIRST-12)
1226#define TBN_HOTITEMCHANGE (TBN_FIRST-13)
1227#define TBN_DRAGOUT (TBN_FIRST-14)
1228#define TBN_DELETINGBUTTON (TBN_FIRST-15)
1229#define TBN_GETDISPINFOA (TBN_FIRST-16)
1230#define TBN_GETDISPINFOW (TBN_FIRST-17)
1231#define TBN_GETDISPINFO WINELIB_NAME_AW(TBN_GETDISPINFO)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00001232#define TBN_GETINFOTIPA (TBN_FIRST-18)
1233#define TBN_GETINFOTIPW (TBN_FIRST-19)
1234#define TBN_GETINFOTIP WINELIB_NAME_AW(TBN_GETINFOTIP)
Robert Shearman75314f42004-11-06 03:45:38 +00001235#define TBN_RESTORE (TBN_FIRST-21)
1236#define TBN_SAVE (TBN_FIRST-22)
Ulrich Czekallafbf98732002-11-13 21:21:03 +00001237#define TBN_INITCUSTOMIZE (TBN_FIRST-23)
Robert Shearman2c6ab0d2005-09-14 19:16:03 +00001238#define TBN_WRAPHOTITEM (TBN_FIRST-24) /* this is undocumented and the name is a guess */
Ulrich Czekallafbf98732002-11-13 21:21:03 +00001239#define TBNRF_HIDEHELP 0x00000001
Alexandre Julliarda0d77311998-09-13 16:32:00 +00001240
Alexandre Julliarda845b881998-06-01 10:44:35 +00001241
Guy L. Albertelli7f1d6d42001-07-26 20:06:41 +00001242/* Return values from TBN_DROPDOWN */
1243#define TBDDRET_DEFAULT 0
1244#define TBDDRET_NODEFAULT 1
1245#define TBDDRET_TREATPRESSED 2
1246
Francois Gougete19c60a2001-02-12 19:39:58 +00001247typedef struct _NMTBCUSTOMDRAW
1248{
1249 NMCUSTOMDRAW nmcd;
1250 HBRUSH hbrMonoDither;
1251 HBRUSH hbrLines;
1252 HPEN hpenLines;
1253 COLORREF clrText;
1254 COLORREF clrMark;
1255 COLORREF clrTextHighlight;
1256 COLORREF clrBtnFace;
1257 COLORREF clrBtnHighlight;
1258 COLORREF clrHighlightHotTrack;
1259 RECT rcText;
1260 int nStringBkMode;
1261 int nHLStringBkMode;
Robert Shearmanead9e562004-08-25 02:14:28 +00001262 int iListGap;
Francois Gougete19c60a2001-02-12 19:39:58 +00001263} NMTBCUSTOMDRAW, *LPNMTBCUSTOMDRAW;
1264
Guy L. Albertelli0a44e5b2002-04-05 21:15:32 +00001265/* return flags for Toolbar NM_CUSTOMDRAW notifications */
1266#define TBCDRF_NOEDGES 0x00010000 /* Don't draw button edges */
1267#define TBCDRF_HILITEHOTTRACK 0x00020000 /* Use color of the button bkgnd */
1268 /* when hottracked */
1269#define TBCDRF_NOOFFSET 0x00040000 /* No offset button if pressed */
1270#define TBCDRF_NOMARK 0x00080000 /* Don't draw default highlight */
1271 /* for TBSTATE_MARKED */
1272#define TBCDRF_NOETCHEDEFFECT 0x00100000 /* No etched effect for */
1273 /* disabled items */
1274#define TBCDRF_BLENDICON 0x00200000 /* ILD_BLEND50 on the icon image */
1275#define TBCDRF_NOBACKGROUND 0x00400000 /* ILD_BLEND50 on the icon image */
1276
1277
Alexandre Julliarda845b881998-06-01 10:44:35 +00001278/* This is just for old CreateToolbar. */
1279/* Don't use it in new programs. */
1280typedef struct _OLDTBBUTTON {
Alexandre Julliarda3960291999-02-26 11:11:13 +00001281 INT iBitmap;
1282 INT idCommand;
Alexandre Julliarda845b881998-06-01 10:44:35 +00001283 BYTE fsState;
1284 BYTE fsStyle;
1285 BYTE bReserved[2];
1286 DWORD dwData;
1287} OLDTBBUTTON, *POLDTBBUTTON, *LPOLDTBBUTTON;
1288typedef const OLDTBBUTTON *LPCOLDTBBUTTON;
1289
1290
1291typedef struct _TBBUTTON {
Alexandre Julliarda3960291999-02-26 11:11:13 +00001292 INT iBitmap;
1293 INT idCommand;
Alexandre Julliarda845b881998-06-01 10:44:35 +00001294 BYTE fsState;
1295 BYTE fsStyle;
1296 BYTE bReserved[2];
Frank Richter9e570912005-08-30 10:07:17 +00001297 DWORD_PTR dwData;
1298 INT_PTR iString;
Alexandre Julliarda845b881998-06-01 10:44:35 +00001299} TBBUTTON, *PTBBUTTON, *LPTBBUTTON;
1300typedef const TBBUTTON *LPCTBBUTTON;
1301
1302
1303typedef struct _COLORMAP {
1304 COLORREF from;
1305 COLORREF to;
1306} COLORMAP, *LPCOLORMAP;
1307
Eric Kohl2b51c941999-11-23 23:32:03 +00001308
Alexandre Julliarda845b881998-06-01 10:44:35 +00001309typedef struct tagTBADDBITMAP {
Alexandre Julliarda3960291999-02-26 11:11:13 +00001310 HINSTANCE hInst;
Frank Richter9e570912005-08-30 10:07:17 +00001311 UINT_PTR nID;
Alexandre Julliarda845b881998-06-01 10:44:35 +00001312} TBADDBITMAP, *LPTBADDBITMAP;
1313
Alexandre Julliarda3960291999-02-26 11:11:13 +00001314#define HINST_COMMCTRL ((HINSTANCE)-1)
Juergen Schmied0128d041998-11-05 10:33:18 +00001315#define IDB_STD_SMALL_COLOR 0
1316#define IDB_STD_LARGE_COLOR 1
1317#define IDB_VIEW_SMALL_COLOR 4
1318#define IDB_VIEW_LARGE_COLOR 5
1319#define IDB_HIST_SMALL_COLOR 8
1320#define IDB_HIST_LARGE_COLOR 9
Alexandre Julliarda845b881998-06-01 10:44:35 +00001321
Juergen Schmied0128d041998-11-05 10:33:18 +00001322#define STD_CUT 0
1323#define STD_COPY 1
1324#define STD_PASTE 2
1325#define STD_UNDO 3
1326#define STD_REDOW 4
1327#define STD_DELETE 5
1328#define STD_FILENEW 6
1329#define STD_FILEOPEN 7
1330#define STD_FILESAVE 8
1331#define STD_PRINTPRE 9
1332#define STD_PROPERTIES 10
1333#define STD_HELP 11
1334#define STD_FIND 12
1335#define STD_REPLACE 13
1336#define STD_PRINT 14
1337
1338#define VIEW_LARGEICONS 0
1339#define VIEW_SMALLICONS 1
1340#define VIEW_LIST 2
1341#define VIEW_DETAILS 3
1342#define VIEW_SORTNAME 4
1343#define VIEW_SORTSIZE 5
1344#define VIEW_SORTDATE 6
1345#define VIEW_SORTTYPE 7
1346#define VIEW_PARENTFOLDER 8
1347#define VIEW_NETCONNECT 9
1348#define VIEW_NETDISCONNECT 10
1349#define VIEW_NEWFOLDER 11
Francois Gougetf12dbd02001-01-22 19:26:07 +00001350#define VIEW_VIEWMENU 12
1351
1352#define HIST_BACK 0
1353#define HIST_FORWARD 1
1354#define HIST_FAVORITES 2
1355#define HIST_ADDTOFAVORITES 3
1356#define HIST_VIEWTREE 4
Alexandre Julliarda845b881998-06-01 10:44:35 +00001357
Alexandre Julliardebfc0fe1998-06-28 18:40:26 +00001358typedef struct tagTBSAVEPARAMSA {
1359 HKEY hkr;
1360 LPCSTR pszSubKey;
1361 LPCSTR pszValueName;
Alexandre Julliarda3960291999-02-26 11:11:13 +00001362} TBSAVEPARAMSA, *LPTBSAVEPARAMSA;
Alexandre Julliardebfc0fe1998-06-28 18:40:26 +00001363
1364typedef struct tagTBSAVEPARAMSW {
1365 HKEY hkr;
1366 LPCWSTR pszSubKey;
1367 LPCWSTR pszValueName;
Dmitry Timoshkov6b6596a2001-11-23 18:44:43 +00001368} TBSAVEPARAMSW, *LPTBSAVEPARAMSW;
Alexandre Julliardebfc0fe1998-06-28 18:40:26 +00001369
Paul Quinn1beaae51998-12-15 15:38:36 +00001370#define TBSAVEPARAMS WINELIB_NAME_AW(TBSAVEPARAMS)
1371#define LPTBSAVEPARAMS WINELIB_NAME_AW(LPTBSAVEPARAMS)
Alexandre Julliardebfc0fe1998-06-28 18:40:26 +00001372
Alexandre Julliard767e6f61998-08-09 12:47:43 +00001373typedef struct
1374{
Alexandre Julliarda3960291999-02-26 11:11:13 +00001375 UINT cbSize;
Alexandre Julliard767e6f61998-08-09 12:47:43 +00001376 DWORD dwMask;
Alexandre Julliarda3960291999-02-26 11:11:13 +00001377 INT idCommand;
1378 INT iImage;
Alexandre Julliard767e6f61998-08-09 12:47:43 +00001379 BYTE fsState;
1380 BYTE fsStyle;
1381 WORD cx;
Frank Richter9e570912005-08-30 10:07:17 +00001382 DWORD_PTR lParam;
Alexandre Julliard767e6f61998-08-09 12:47:43 +00001383 LPSTR pszText;
Alexandre Julliarda3960291999-02-26 11:11:13 +00001384 INT cchText;
1385} TBBUTTONINFOA, *LPTBBUTTONINFOA;
Alexandre Julliard767e6f61998-08-09 12:47:43 +00001386
1387typedef struct
1388{
Alexandre Julliarda3960291999-02-26 11:11:13 +00001389 UINT cbSize;
Alexandre Julliard767e6f61998-08-09 12:47:43 +00001390 DWORD dwMask;
Alexandre Julliarda3960291999-02-26 11:11:13 +00001391 INT idCommand;
1392 INT iImage;
Alexandre Julliard767e6f61998-08-09 12:47:43 +00001393 BYTE fsState;
1394 BYTE fsStyle;
1395 WORD cx;
Frank Richter9e570912005-08-30 10:07:17 +00001396 DWORD_PTR lParam;
Alexandre Julliard767e6f61998-08-09 12:47:43 +00001397 LPWSTR pszText;
Alexandre Julliarda3960291999-02-26 11:11:13 +00001398 INT cchText;
1399} TBBUTTONINFOW, *LPTBBUTTONINFOW;
Alexandre Julliard767e6f61998-08-09 12:47:43 +00001400
Paul Quinn1beaae51998-12-15 15:38:36 +00001401#define TBBUTTONINFO WINELIB_NAME_AW(TBBUTTONINFO)
1402#define LPTBBUTTONINFO WINELIB_NAME_AW(LPTBBUTTONINFO)
Alexandre Julliard767e6f61998-08-09 12:47:43 +00001403
Francois Gougete19c60a2001-02-12 19:39:58 +00001404typedef struct tagNMTBHOTITEM
1405{
1406 NMHDR hdr;
1407 int idOld;
1408 int idNew;
1409 DWORD dwFlags;
1410} NMTBHOTITEM, *LPNMTBHOTITEM;
1411
Alexandre Julliard767e6f61998-08-09 12:47:43 +00001412typedef struct tagNMTBGETINFOTIPA
1413{
1414 NMHDR hdr;
1415 LPSTR pszText;
Alexandre Julliarda3960291999-02-26 11:11:13 +00001416 INT cchTextMax;
1417 INT iItem;
Alexandre Julliard767e6f61998-08-09 12:47:43 +00001418 LPARAM lParam;
Alexandre Julliarda3960291999-02-26 11:11:13 +00001419} NMTBGETINFOTIPA, *LPNMTBGETINFOTIPA;
Alexandre Julliard767e6f61998-08-09 12:47:43 +00001420
1421typedef struct tagNMTBGETINFOTIPW
1422{
1423 NMHDR hdr;
1424 LPWSTR pszText;
Alexandre Julliarda3960291999-02-26 11:11:13 +00001425 INT cchTextMax;
1426 INT iItem;
Alexandre Julliard767e6f61998-08-09 12:47:43 +00001427 LPARAM lParam;
Alexandre Julliarda3960291999-02-26 11:11:13 +00001428} NMTBGETINFOTIPW, *LPNMTBGETINFOTIPW;
Alexandre Julliard767e6f61998-08-09 12:47:43 +00001429
Paul Quinn1beaae51998-12-15 15:38:36 +00001430#define NMTBGETINFOTIP WINELIB_NAME_AW(NMTBGETINFOFTIP)
1431#define LPNMTBGETINFOTIP WINELIB_NAME_AW(LPNMTBGETINFOTIP)
Alexandre Julliard767e6f61998-08-09 12:47:43 +00001432
Francois Gougete19c60a2001-02-12 19:39:58 +00001433typedef struct
1434{
1435 NMHDR hdr;
1436 DWORD dwMask;
1437 int idCommand;
Frank Richter9e570912005-08-30 10:07:17 +00001438 DWORD_PTR lParam;
Francois Gougete19c60a2001-02-12 19:39:58 +00001439 int iImage;
1440 LPSTR pszText;
1441 int cchText;
1442} NMTBDISPINFOA, *LPNMTBDISPINFOA;
1443
1444typedef struct
1445{
1446 NMHDR hdr;
1447 DWORD dwMask;
1448 int idCommand;
Frank Richter9e570912005-08-30 10:07:17 +00001449 DWORD_PTR lParam;
Francois Gougete19c60a2001-02-12 19:39:58 +00001450 int iImage;
1451 LPWSTR pszText;
1452 int cchText;
1453} NMTBDISPINFOW, *LPNMTBDISPINFOW;
1454
1455#define NMTBDISPINFO WINELIB_NAME_AW(NMTBDISPINFO)
1456#define LPNMTBDISPINFO WINELIB_NAME_AW(LPNMTBDISPINFO)
1457
Guy L. Albertellid6da8a02001-08-03 18:06:50 +00001458/* contents of dwMask in the NMTBDISPINFO structure */
1459#define TBNF_IMAGE 0x00000001
1460#define TBNF_TEXT 0x00000002
1461#define TBNF_DI_SETITEM 0x10000000
1462
1463
Eric Kohl2b51c941999-11-23 23:32:03 +00001464typedef struct tagNMTOOLBARA
1465{
1466 NMHDR hdr;
1467 INT iItem;
1468 TBBUTTON tbButton;
1469 INT cchText;
1470 LPSTR pszText;
1471 RECT rcButton; /* Version 5.80 */
Francois Gouget05ba8c52000-03-19 21:15:36 +00001472} NMTOOLBARA, *LPNMTOOLBARA, TBNOTIFYA, *LPTBNOTIFYA;
Eric Kohl2b51c941999-11-23 23:32:03 +00001473
1474typedef struct tagNMTOOLBARW
1475{
1476 NMHDR hdr;
1477 INT iItem;
1478 TBBUTTON tbButton;
1479 INT cchText;
1480 LPWSTR pszText;
1481 RECT rcButton; /* Version 5.80 */
Francois Gouget05ba8c52000-03-19 21:15:36 +00001482} NMTOOLBARW, *LPNMTOOLBARW, TBNOTIFYW, *LPTBNOTIFYW;
Eric Kohl2b51c941999-11-23 23:32:03 +00001483
1484#define NMTOOLBAR WINELIB_NAME_AW(NMTOOLBAR)
1485#define LPNMTOOLBAR WINELIB_NAME_AW(LPNMTOOLBAR)
Francois Gouget05ba8c52000-03-19 21:15:36 +00001486#define TBNOTIFY WINELIB_NAME_AW(TBNOTIFY)
1487#define LPTBNOTIFY WINELIB_NAME_AW(LPTBNOTIFY)
Eric Kohl2b51c941999-11-23 23:32:03 +00001488
Paul Quinn1beaae51998-12-15 15:38:36 +00001489typedef struct
1490{
Alexandre Julliarda3960291999-02-26 11:11:13 +00001491 HINSTANCE hInstOld;
Frank Richter9e570912005-08-30 10:07:17 +00001492 UINT_PTR nIDOld;
Alexandre Julliarda3960291999-02-26 11:11:13 +00001493 HINSTANCE hInstNew;
Frank Richter9e570912005-08-30 10:07:17 +00001494 UINT_PTR nIDNew;
Alexandre Julliarda3960291999-02-26 11:11:13 +00001495 INT nButtons;
Paul Quinn1beaae51998-12-15 15:38:36 +00001496} TBREPLACEBITMAP, *LPTBREPLACEBITMAP;
Alexandre Julliardebfc0fe1998-06-28 18:40:26 +00001497
Guy L. Albertelli0a44e5b2002-04-05 21:15:32 +00001498#define HICF_OTHER 0x00000000
1499#define HICF_MOUSE 0x00000001 /* Triggered by mouse */
1500#define HICF_ARROWKEYS 0x00000002 /* Triggered by arrow keys */
1501#define HICF_ACCELERATOR 0x00000004 /* Triggered by accelerator */
1502#define HICF_DUPACCEL 0x00000008 /* This accelerator is not unique */
1503#define HICF_ENTERING 0x00000010 /* idOld is invalid */
1504#define HICF_LEAVING 0x00000020 /* idNew is invalid */
1505#define HICF_RESELECT 0x00000040 /* hot item reselected */
1506#define HICF_LMOUSE 0x00000080 /* left mouse button selected */
1507#define HICF_TOGGLEDROPDOWN 0x00000100 /* Toggle button's dropdown state */
1508
Vincent Béron9a624912002-05-31 23:06:46 +00001509typedef struct
Ian Schmidt2d127002000-02-26 18:30:12 +00001510{
1511 int iButton;
1512 DWORD dwFlags;
1513} TBINSERTMARK, *LPTBINSERTMARK;
1514#define TBIMHT_AFTER 0x00000001 /* TRUE = insert After iButton, otherwise before */
1515#define TBIMHT_BACKGROUND 0x00000002 /* TRUE if and only if missed buttons completely */
1516
Robert Shearmanead9e562004-08-25 02:14:28 +00001517typedef struct tagNMTBSAVE
1518{
1519 NMHDR hdr;
1520 DWORD* pData;
1521 DWORD* pCurrent;
1522 UINT cbData;
1523 int iItem;
1524 int cButtons;
1525 TBBUTTON tbButton;
1526} NMTBSAVE, *LPNMTBSAVE;
1527
1528typedef struct tagNMTBRESTORE
1529{
1530 NMHDR hdr;
1531 DWORD* pData;
1532 DWORD* pCurrent;
1533 UINT cbData;
1534 int iItem;
1535 int cButtons;
1536 int cbBytesPerRecord;
1537 TBBUTTON tbButton;
1538} NMTBRESTORE, *LPNMTBRESTORE;
1539
1540#define TBMF_PAD 0x00000001
1541#define TBMF_BARPAD 0x00000002
1542#define TBMF_BUTTONSPACING 0x00000004
1543
1544typedef struct
1545{
1546 UINT cbSize;
1547 DWORD dwMask;
1548 INT cxPad;
1549 INT cyPad;
1550 INT cxBarPad;
1551 INT cyBarPad;
1552 INT cxButtonSpacing;
1553 INT cyButtonSpacing;
1554} TBMETRICS, *LPTBMETRICS;
1555
Robert Shearman2c6ab0d2005-09-14 19:16:03 +00001556/* these are undocumented and the names are guesses */
1557typedef struct
1558{
1559 NMHDR hdr;
1560 HWND hwndDialog;
1561} NMTBINITCUSTOMIZE;
1562
1563typedef struct
1564{
1565 NMHDR hdr;
1566 INT idNew;
1567 INT iDirection; /* left is -1, right is 1 */
1568 DWORD dwReason; /* HICF_* */
1569} NMTBWRAPHOTITEM;
1570
1571
Alexandre Julliarda3960291999-02-26 11:11:13 +00001572HWND WINAPI
1573CreateToolbar(HWND, DWORD, UINT, INT, HINSTANCE,
Filip Navara1ccaaa12003-08-22 23:51:15 +00001574 UINT, LPCTBBUTTON, INT);
Vincent Béron9a624912002-05-31 23:06:46 +00001575
Alexandre Julliarda3960291999-02-26 11:11:13 +00001576HWND WINAPI
1577CreateToolbarEx(HWND, DWORD, UINT, INT,
Vincent Béron9a624912002-05-31 23:06:46 +00001578 HINSTANCE, UINT, LPCTBBUTTON,
1579 INT, INT, INT, INT, INT, UINT);
Alexandre Julliardebfc0fe1998-06-28 18:40:26 +00001580
Alexandre Julliarda3960291999-02-26 11:11:13 +00001581HBITMAP WINAPI
Frank Richter9e570912005-08-30 10:07:17 +00001582CreateMappedBitmap (HINSTANCE, INT_PTR, UINT, LPCOLORMAP, INT);
Alexandre Julliardebfc0fe1998-06-28 18:40:26 +00001583
Alexandre Julliarda845b881998-06-01 10:44:35 +00001584
Alexandre Julliard642d3131998-07-12 19:29:36 +00001585/* Tool tips */
1586
Jon Griffiths7a6bad82001-01-22 02:13:58 +00001587#define TOOLTIPS_CLASSA "tooltips_class32"
Dmitry Timoshkova9c057f2002-09-16 19:29:36 +00001588#if defined(__GNUC__)
1589# define TOOLTIPS_CLASSW (const WCHAR []){ 't','o','o','l','t','i','p','s','_', \
1590 'c','l','a','s','s','3','2',0 }
1591#elif defined(_MSC_VER)
1592# define TOOLTIPS_CLASSW L"tooltips_class32"
1593#else
Jon Griffiths7a6bad82001-01-22 02:13:58 +00001594static const WCHAR TOOLTIPS_CLASSW[] = { 't','o','o','l','t','i','p','s','_',
1595 'c','l','a','s','s','3','2',0 };
Dmitry Timoshkova9c057f2002-09-16 19:29:36 +00001596#endif
Alexandre Julliard642d3131998-07-12 19:29:36 +00001597#define TOOLTIPS_CLASS WINELIB_NAME_AW(TOOLTIPS_CLASS)
Alexandre Julliard829fe321998-07-26 14:27:39 +00001598
1599#define INFOTIPSIZE 1024
Vincent Béron9a624912002-05-31 23:06:46 +00001600
Alexandre Julliard642d3131998-07-12 19:29:36 +00001601#define TTS_ALWAYSTIP 0x01
1602#define TTS_NOPREFIX 0x02
Robert Shearman41716ce2004-06-28 23:52:37 +00001603#define TTS_NOANIMATE 0x10
1604#define TTS_NOFADE 0x20
1605#define TTS_BALLOON 0x40
1606#define TTS_CLOSE 0x80
Alexandre Julliard829fe321998-07-26 14:27:39 +00001607
Alexandre Julliard642d3131998-07-12 19:29:36 +00001608#define TTF_IDISHWND 0x0001
1609#define TTF_CENTERTIP 0x0002
1610#define TTF_RTLREADING 0x0004
1611#define TTF_SUBCLASS 0x0010
1612#define TTF_TRACK 0x0020
1613#define TTF_ABSOLUTE 0x0080
1614#define TTF_TRANSPARENT 0x0100
1615#define TTF_DI_SETITEM 0x8000 /* valid only on the TTN_NEEDTEXT callback */
1616
1617
1618#define TTDT_AUTOMATIC 0
1619#define TTDT_RESHOW 1
1620#define TTDT_AUTOPOP 2
1621#define TTDT_INITIAL 3
1622
1623
Robert Shearmanead9e562004-08-25 02:14:28 +00001624#define TTI_NONE 0
1625#define TTI_INFO 1
1626#define TTI_WARNING 2
1627#define TTI_ERROR 3
1628
1629
Alexandre Julliard642d3131998-07-12 19:29:36 +00001630#define TTM_ACTIVATE (WM_USER+1)
1631#define TTM_SETDELAYTIME (WM_USER+3)
Dimitrie O. Paun3a706f02002-09-09 19:19:50 +00001632#define TTM_ADDTOOLA (WM_USER+4)
1633#define TTM_ADDTOOLW (WM_USER+50)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00001634#define TTM_ADDTOOL WINELIB_NAME_AW(TTM_ADDTOOL)
Dimitrie O. Paun3a706f02002-09-09 19:19:50 +00001635#define TTM_DELTOOLA (WM_USER+5)
1636#define TTM_DELTOOLW (WM_USER+51)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00001637#define TTM_DELTOOL WINELIB_NAME_AW(TTM_DELTOOL)
Dimitrie O. Paun3a706f02002-09-09 19:19:50 +00001638#define TTM_NEWTOOLRECTA (WM_USER+6)
1639#define TTM_NEWTOOLRECTW (WM_USER+52)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00001640#define TTM_NEWTOOLRECT WINELIB_NAME_AW(TTM_NEWTOOLRECT)
Alexandre Julliard642d3131998-07-12 19:29:36 +00001641#define TTM_RELAYEVENT (WM_USER+7)
Dimitrie O. Paun3a706f02002-09-09 19:19:50 +00001642#define TTM_GETTOOLINFOA (WM_USER+8)
1643#define TTM_GETTOOLINFOW (WM_USER+53)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00001644#define TTM_GETTOOLINFO WINELIB_NAME_AW(TTM_GETTOOLINFO)
Dimitrie O. Paun3a706f02002-09-09 19:19:50 +00001645#define TTM_SETTOOLINFOA (WM_USER+9)
1646#define TTM_SETTOOLINFOW (WM_USER+54)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00001647#define TTM_SETTOOLINFO WINELIB_NAME_AW(TTM_SETTOOLINFO)
Dimitrie O. Paun3a706f02002-09-09 19:19:50 +00001648#define TTM_HITTESTA (WM_USER+10)
1649#define TTM_HITTESTW (WM_USER+55)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00001650#define TTM_HITTEST WINELIB_NAME_AW(TTM_HITTEST)
Dimitrie O. Paun3a706f02002-09-09 19:19:50 +00001651#define TTM_GETTEXTA (WM_USER+11)
1652#define TTM_GETTEXTW (WM_USER+56)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00001653#define TTM_GETTEXT WINELIB_NAME_AW(TTM_GETTEXT)
Dimitrie O. Paun3a706f02002-09-09 19:19:50 +00001654#define TTM_UPDATETIPTEXTA (WM_USER+12)
1655#define TTM_UPDATETIPTEXTW (WM_USER+57)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00001656#define TTM_UPDATETIPTEXT WINELIB_NAME_AW(TTM_UPDATETIPTEXT)
Alexandre Julliard642d3131998-07-12 19:29:36 +00001657#define TTM_GETTOOLCOUNT (WM_USER+13)
Dimitrie O. Paun3a706f02002-09-09 19:19:50 +00001658#define TTM_ENUMTOOLSA (WM_USER+14)
1659#define TTM_ENUMTOOLSW (WM_USER+58)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00001660#define TTM_ENUMTOOLS WINELIB_NAME_AW(TTM_ENUMTOOLS)
Dimitrie O. Paun3a706f02002-09-09 19:19:50 +00001661#define TTM_GETCURRENTTOOLA (WM_USER+15)
1662#define TTM_GETCURRENTTOOLW (WM_USER+59)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00001663#define TTM_GETCURRENTTOOL WINELIB_NAME_AW(TTM_GETCURRENTTOOL)
Alexandre Julliard642d3131998-07-12 19:29:36 +00001664#define TTM_WINDOWFROMPOINT (WM_USER+16)
1665#define TTM_TRACKACTIVATE (WM_USER+17)
1666#define TTM_TRACKPOSITION (WM_USER+18)
1667#define TTM_SETTIPBKCOLOR (WM_USER+19)
1668#define TTM_SETTIPTEXTCOLOR (WM_USER+20)
1669#define TTM_GETDELAYTIME (WM_USER+21)
1670#define TTM_GETTIPBKCOLOR (WM_USER+22)
1671#define TTM_GETTIPTEXTCOLOR (WM_USER+23)
1672#define TTM_SETMAXTIPWIDTH (WM_USER+24)
1673#define TTM_GETMAXTIPWIDTH (WM_USER+25)
1674#define TTM_SETMARGIN (WM_USER+26)
1675#define TTM_GETMARGIN (WM_USER+27)
1676#define TTM_POP (WM_USER+28)
1677#define TTM_UPDATE (WM_USER+29)
Dimitrie O. Paun3a706f02002-09-09 19:19:50 +00001678#define TTM_GETBUBBLESIZE (WM_USER+30)
Robert Shearmanead9e562004-08-25 02:14:28 +00001679#define TTM_ADJUSTRECT (WM_USER+31)
1680#define TTM_SETTITLEA (WM_USER+32)
1681#define TTM_SETTITLEW (WM_USER+33)
1682#define TTM_SETTITLE WINELIB_NAME_AW(TTM_SETTITLE)
1683#define TTM_POPUP (WM_USER+34)
1684#define TTM_GETTITLE (WM_USER+35)
1685#define TTM_SETWINDOWTHEME CCM_SETWINDOWTHEME
Alexandre Julliard642d3131998-07-12 19:29:36 +00001686
Alexandre Julliard829fe321998-07-26 14:27:39 +00001687
1688#define TTN_FIRST (0U-520U)
1689#define TTN_LAST (0U-549U)
Dimitrie O. Paun3a706f02002-09-09 19:19:50 +00001690#define TTN_GETDISPINFOA (TTN_FIRST-0)
1691#define TTN_GETDISPINFOW (TTN_FIRST-10)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00001692#define TTN_GETDISPINFO WINELIB_NAME_AW(TTN_GETDISPINFO)
Alexandre Julliard829fe321998-07-26 14:27:39 +00001693#define TTN_SHOW (TTN_FIRST-1)
1694#define TTN_POP (TTN_FIRST-2)
1695
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00001696#define TTN_NEEDTEXT TTN_GETDISPINFO
1697#define TTN_NEEDTEXTA TTN_GETDISPINFOA
1698#define TTN_NEEDTEXTW TTN_GETDISPINFOW
Paul Quinn1beaae51998-12-15 15:38:36 +00001699
Alexandre Julliard642d3131998-07-12 19:29:36 +00001700typedef struct tagTOOLINFOA {
Alexandre Julliarda3960291999-02-26 11:11:13 +00001701 UINT cbSize;
1702 UINT uFlags;
1703 HWND hwnd;
Frank Richter9e570912005-08-30 10:07:17 +00001704 UINT_PTR uId;
Alexandre Julliarda3960291999-02-26 11:11:13 +00001705 RECT rect;
1706 HINSTANCE hinst;
Alexandre Julliard642d3131998-07-12 19:29:36 +00001707 LPSTR lpszText;
1708 LPARAM lParam;
Robert Shearmanead9e562004-08-25 02:14:28 +00001709 void *lpReserved;
Alexandre Julliarda3960291999-02-26 11:11:13 +00001710} TTTOOLINFOA, *LPTOOLINFOA, *PTOOLINFOA, *LPTTTOOLINFOA;
Alexandre Julliard642d3131998-07-12 19:29:36 +00001711
1712typedef struct tagTOOLINFOW {
Alexandre Julliarda3960291999-02-26 11:11:13 +00001713 UINT cbSize;
1714 UINT uFlags;
1715 HWND hwnd;
Frank Richter9e570912005-08-30 10:07:17 +00001716 UINT_PTR uId;
Alexandre Julliarda3960291999-02-26 11:11:13 +00001717 RECT rect;
1718 HINSTANCE hinst;
Alexandre Julliard642d3131998-07-12 19:29:36 +00001719 LPWSTR lpszText;
1720 LPARAM lParam;
Robert Shearmanead9e562004-08-25 02:14:28 +00001721 void *lpReserved;
Alexandre Julliarda3960291999-02-26 11:11:13 +00001722} TTTOOLINFOW, *LPTOOLINFOW, *PTOOLINFOW, *LPTTTOOLINFOW;
Alexandre Julliard767e6f61998-08-09 12:47:43 +00001723
1724#define TTTOOLINFO WINELIB_NAME_AW(TTTOOLINFO)
Eric Kohl8b1a2a71998-12-07 10:59:40 +00001725#define TOOLINFO WINELIB_NAME_AW(TTTOOLINFO)
Alexandre Julliard767e6f61998-08-09 12:47:43 +00001726#define PTOOLINFO WINELIB_NAME_AW(PTOOLINFO)
1727#define LPTTTOOLINFO WINELIB_NAME_AW(LPTTTOOLINFO)
Paul Quinn1beaae51998-12-15 15:38:36 +00001728#define LPTOOLINFO WINELIB_NAME_AW(LPTOOLINFO)
Alexandre Julliard642d3131998-07-12 19:29:36 +00001729
Filip Navara27731062003-09-16 01:17:25 +00001730#define TTTOOLINFOA_V1_SIZE CCSIZEOF_STRUCT(TTTOOLINFOA, lpszText)
1731#define TTTOOLINFOW_V1_SIZE CCSIZEOF_STRUCT(TTTOOLINFOW, lpszText)
1732#define TTTOOLINFO_V1_SIZE CCSIZEOF_STRUCT(WINELIB_NAME_AW(TTTOOLINFO), lpszText)
Alexandre Julliarda0d77311998-09-13 16:32:00 +00001733
Alexandre Julliard829fe321998-07-26 14:27:39 +00001734typedef struct _TT_HITTESTINFOA
1735{
Alexandre Julliarda3960291999-02-26 11:11:13 +00001736 HWND hwnd;
1737 POINT pt;
1738 TTTOOLINFOA ti;
1739} TTHITTESTINFOA, *LPTTHITTESTINFOA;
Francois Gougetf12dbd02001-01-22 19:26:07 +00001740#define LPHITTESTINFOA LPTTHITTESTINFOA
Alexandre Julliard642d3131998-07-12 19:29:36 +00001741
Alexandre Julliard829fe321998-07-26 14:27:39 +00001742typedef struct _TT_HITTESTINFOW
1743{
Alexandre Julliarda3960291999-02-26 11:11:13 +00001744 HWND hwnd;
1745 POINT pt;
1746 TTTOOLINFOW ti;
1747} TTHITTESTINFOW, *LPTTHITTESTINFOW;
Francois Gougetf12dbd02001-01-22 19:26:07 +00001748#define LPHITTESTINFOW LPTTHITTESTINFOW
Alexandre Julliard767e6f61998-08-09 12:47:43 +00001749
1750#define TTHITTESTINFO WINELIB_NAME_AW(TTHITTESTINFO)
1751#define LPTTHITTESTINFO WINELIB_NAME_AW(LPTTHITTESTINFO)
Francois Gougetf12dbd02001-01-22 19:26:07 +00001752#define LPHITTESTINFO WINELIB_NAME_AW(LPHITTESTINFO)
Alexandre Julliard829fe321998-07-26 14:27:39 +00001753
1754typedef struct tagNMTTDISPINFOA
1755{
1756 NMHDR hdr;
1757 LPSTR lpszText;
1758 CHAR szText[80];
Alexandre Julliarda3960291999-02-26 11:11:13 +00001759 HINSTANCE hinst;
1760 UINT uFlags;
Alexandre Julliard829fe321998-07-26 14:27:39 +00001761 LPARAM lParam;
Alexandre Julliarda3960291999-02-26 11:11:13 +00001762} NMTTDISPINFOA, *LPNMTTDISPINFOA;
Alexandre Julliard829fe321998-07-26 14:27:39 +00001763
1764typedef struct tagNMTTDISPINFOW
1765{
1766 NMHDR hdr;
1767 LPWSTR lpszText;
1768 WCHAR szText[80];
Alexandre Julliarda3960291999-02-26 11:11:13 +00001769 HINSTANCE hinst;
1770 UINT uFlags;
Alexandre Julliard829fe321998-07-26 14:27:39 +00001771 LPARAM lParam;
Alexandre Julliarda3960291999-02-26 11:11:13 +00001772} NMTTDISPINFOW, *LPNMTTDISPINFOW;
Alexandre Julliard642d3131998-07-12 19:29:36 +00001773
Alexandre Julliard767e6f61998-08-09 12:47:43 +00001774#define NMTTDISPINFO WINELIB_NAME_AW(NMTTDISPINFO)
1775#define LPNMTTDISPINFO WINELIB_NAME_AW(LPNMTTDISPINFO)
Alexandre Julliard642d3131998-07-12 19:29:36 +00001776
Alexandre Julliarda3960291999-02-26 11:11:13 +00001777#define NMTTDISPINFO_V1_SIZEA CCSIZEOF_STRUCT(NMTTDISPINFOA, uFlags)
1778#define NMTTDISPINFO_V1_SIZEW CCSIZEOF_STRUCT(NMTTDISPINFOW, uFlags)
Alexandre Julliarda0d77311998-09-13 16:32:00 +00001779#define NMTTDISPINFO_V1_SIZE WINELIB_NAME_AW(NMTTDISPINFO_V1_SIZE)
1780
Robert Shearmanead9e562004-08-25 02:14:28 +00001781typedef struct _TTGETTITLE
1782{
1783 DWORD dwSize;
1784 UINT uTitleBitmap;
1785 UINT cch;
1786 WCHAR* pszTitle;
1787} TTGETTITLE, *PTTGETTITLE;
1788
Alexandre Julliarda3960291999-02-26 11:11:13 +00001789#define TOOLTIPTEXTW NMTTDISPINFOW
1790#define TOOLTIPTEXTA NMTTDISPINFOA
Paul Quinn1beaae51998-12-15 15:38:36 +00001791#define TOOLTIPTEXT NMTTDISPINFO
1792#define LPTOOLTIPTEXTW LPNMTTDISPINFOW
1793#define LPTOOLTIPTEXTA LPNMTTDISPINFOA
1794#define LPTOOLTIPTEXT LPNMTTDISPINFO
Alexandre Julliard642d3131998-07-12 19:29:36 +00001795
Eric Kohlb406c7d1999-01-24 19:12:34 +00001796
Alexandre Julliard642d3131998-07-12 19:29:36 +00001797/* Rebar control */
1798
Jon Griffiths7a6bad82001-01-22 02:13:58 +00001799#define REBARCLASSNAMEA "ReBarWindow32"
Dmitry Timoshkova9c057f2002-09-16 19:29:36 +00001800#if defined(__GNUC__)
1801# define REBARCLASSNAMEW (const WCHAR []){ 'R','e','B','a','r', \
1802 'W','i','n','d','o','w','3','2',0 }
1803#elif defined(_MSC_VER)
1804# define REBARCLASSNAMEW L"ReBarWindow32"
1805#else
Jon Griffiths7a6bad82001-01-22 02:13:58 +00001806static const WCHAR REBARCLASSNAMEW[] = { 'R','e','B','a','r',
1807 'W','i','n','d','o','w','3','2',0 };
Dmitry Timoshkova9c057f2002-09-16 19:29:36 +00001808#endif
Eric Kohl9d8e8641998-10-24 10:49:27 +00001809#define REBARCLASSNAME WINELIB_NAME_AW(REBARCLASSNAME)
1810
1811#define RBS_TOOLTIPS 0x0100
1812#define RBS_VARHEIGHT 0x0200
1813#define RBS_BANDBORDERS 0x0400
1814#define RBS_FIXEDORDER 0x0800
1815#define RBS_REGISTERDROP 0x1000
1816#define RBS_AUTOSIZE 0x2000
1817#define RBS_VERTICALGRIPPER 0x4000
1818#define RBS_DBLCLKTOGGLE 0x8000
Alexandre Julliard642d3131998-07-12 19:29:36 +00001819
Alexandre Julliard85ed45e1998-08-22 19:03:56 +00001820#define RBIM_IMAGELIST 0x00000001
1821
1822#define RBBIM_STYLE 0x00000001
1823#define RBBIM_COLORS 0x00000002
1824#define RBBIM_TEXT 0x00000004
1825#define RBBIM_IMAGE 0x00000008
1826#define RBBIM_CHILD 0x00000010
1827#define RBBIM_CHILDSIZE 0x00000020
1828#define RBBIM_SIZE 0x00000040
1829#define RBBIM_BACKGROUND 0x00000080
1830#define RBBIM_ID 0x00000100
1831#define RBBIM_IDEALSIZE 0x00000200
1832#define RBBIM_LPARAM 0x00000400
1833#define RBBIM_HEADERSIZE 0x00000800
1834
Eric Kohl9d8e8641998-10-24 10:49:27 +00001835#define RBBS_BREAK 0x00000001
1836#define RBBS_FIXEDSIZE 0x00000002
1837#define RBBS_CHILDEDGE 0x00000004
1838#define RBBS_HIDDEN 0x00000008
1839#define RBBS_NOVERT 0x00000010
1840#define RBBS_FIXEDBMP 0x00000020
1841#define RBBS_VARIABLEHEIGHT 0x00000040
1842#define RBBS_GRIPPERALWAYS 0x00000080
1843#define RBBS_NOGRIPPER 0x00000100
Robert Shearmanfc58ef82003-11-09 00:28:24 +00001844#define RBBS_USECHEVRON 0x00000200
1845#define RBBS_HIDETITLE 0x00000400
1846#define RBBS_TOPALIGN 0x00000800
Eric Kohl9d8e8641998-10-24 10:49:27 +00001847
1848#define RBNM_ID 0x00000001
1849#define RBNM_STYLE 0x00000002
1850#define RBNM_LPARAM 0x00000004
1851
1852#define RBHT_NOWHERE 0x0001
1853#define RBHT_CAPTION 0x0002
1854#define RBHT_CLIENT 0x0003
1855#define RBHT_GRABBER 0x0004
Robert Shearmanfc58ef82003-11-09 00:28:24 +00001856#define RBHT_CHEVRON 0x0008
Alexandre Julliard85ed45e1998-08-22 19:03:56 +00001857
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00001858#define RB_INSERTBANDA (WM_USER+1)
1859#define RB_INSERTBANDW (WM_USER+10)
Eric Kohl9d8e8641998-10-24 10:49:27 +00001860#define RB_INSERTBAND WINELIB_NAME_AW(RB_INSERTBAND)
Alexandre Julliard85ed45e1998-08-22 19:03:56 +00001861#define RB_DELETEBAND (WM_USER+2)
1862#define RB_GETBARINFO (WM_USER+3)
1863#define RB_SETBARINFO (WM_USER+4)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00001864#define RB_SETBANDINFOA (WM_USER+6)
1865#define RB_SETBANDINFOW (WM_USER+11)
Eric Kohl9d8e8641998-10-24 10:49:27 +00001866#define RB_SETBANDINFO WINELIB_NAME_AW(RB_SETBANDINFO)
Alexandre Julliard85ed45e1998-08-22 19:03:56 +00001867#define RB_SETPARENT (WM_USER+7)
1868#define RB_HITTEST (WM_USER+8)
1869#define RB_GETRECT (WM_USER+9)
1870#define RB_GETBANDCOUNT (WM_USER+12)
1871#define RB_GETROWCOUNT (WM_USER+13)
1872#define RB_GETROWHEIGHT (WM_USER+14)
1873#define RB_IDTOINDEX (WM_USER+16)
1874#define RB_GETTOOLTIPS (WM_USER+17)
1875#define RB_SETTOOLTIPS (WM_USER+18)
1876#define RB_SETBKCOLOR (WM_USER+19)
1877#define RB_GETBKCOLOR (WM_USER+20)
1878#define RB_SETTEXTCOLOR (WM_USER+21)
1879#define RB_GETTEXTCOLOR (WM_USER+22)
1880#define RB_SIZETORECT (WM_USER+23)
1881#define RB_BEGINDRAG (WM_USER+24)
1882#define RB_ENDDRAG (WM_USER+25)
1883#define RB_DRAGMOVE (WM_USER+26)
1884#define RB_GETBARHEIGHT (WM_USER+27)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00001885#define RB_GETBANDINFOW (WM_USER+28)
1886#define RB_GETBANDINFOA (WM_USER+29)
Alexandre Julliardd07c1002004-01-23 22:51:41 +00001887#define RB_GETBANDINFO WINELIB_NAME_AW(RB_GETBANDINFO)
Alexandre Julliard85ed45e1998-08-22 19:03:56 +00001888#define RB_MINIMIZEBAND (WM_USER+30)
1889#define RB_MAXIMIZEBAND (WM_USER+31)
Eric Kohlb406c7d1999-01-24 19:12:34 +00001890#define RB_GETBANDBORDERS (WM_USER+34)
Alexandre Julliard85ed45e1998-08-22 19:03:56 +00001891#define RB_SHOWBAND (WM_USER+35)
Alexandre Julliard85ed45e1998-08-22 19:03:56 +00001892#define RB_SETPALETTE (WM_USER+37)
1893#define RB_GETPALETTE (WM_USER+38)
1894#define RB_MOVEBAND (WM_USER+39)
Robert Shearmanfc58ef82003-11-09 00:28:24 +00001895#define RB_GETBANDMARGINS (WM_USER+40)
1896#define RB_PUSHCHEVRON (WM_USER+43)
Eric Kohl8d2933d1998-11-22 18:12:12 +00001897#define RB_GETDROPTARGET CCM_GETDROPTARGET
1898#define RB_SETCOLORSCHEME CCM_SETCOLORSCHEME
1899#define RB_GETCOLORSCHEME CCM_GETCOLORSCHEME
1900#define RB_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
1901#define RB_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
Robert Shearmanead9e562004-08-25 02:14:28 +00001902#define RB_SETWINDOWTHEME CCM_SETWINDOWTHEME
Alexandre Julliard85ed45e1998-08-22 19:03:56 +00001903
Alexandre Julliarda0d77311998-09-13 16:32:00 +00001904#define RBN_FIRST (0U-831U)
1905#define RBN_LAST (0U-859U)
Eric Kohl9d8e8641998-10-24 10:49:27 +00001906#define RBN_HEIGHTCHANGE (RBN_FIRST-0)
1907#define RBN_GETOBJECT (RBN_FIRST-1)
1908#define RBN_LAYOUTCHANGED (RBN_FIRST-2)
1909#define RBN_AUTOSIZE (RBN_FIRST-3)
1910#define RBN_BEGINDRAG (RBN_FIRST-4)
1911#define RBN_ENDDRAG (RBN_FIRST-5)
1912#define RBN_DELETINGBAND (RBN_FIRST-6)
1913#define RBN_DELETEDBAND (RBN_FIRST-7)
1914#define RBN_CHILDSIZE (RBN_FIRST-8)
Robert Shearmanfc58ef82003-11-09 00:28:24 +00001915#define RBN_CHEVRONPUSHED (RBN_FIRST-10)
1916#define RBN_MINMAX (RBN_FIRST-21)
1917#define RBN_AUTOBREAK (RBN_FIRST-22)
Alexandre Julliard85ed45e1998-08-22 19:03:56 +00001918
1919typedef struct tagREBARINFO
1920{
Alexandre Julliarda3960291999-02-26 11:11:13 +00001921 UINT cbSize;
1922 UINT fMask;
Alexandre Julliard85ed45e1998-08-22 19:03:56 +00001923 HIMAGELIST himl;
1924} REBARINFO, *LPREBARINFO;
1925
1926typedef struct tagREBARBANDINFOA
1927{
Alexandre Julliarda3960291999-02-26 11:11:13 +00001928 UINT cbSize;
1929 UINT fMask;
1930 UINT fStyle;
Alexandre Julliard85ed45e1998-08-22 19:03:56 +00001931 COLORREF clrFore;
1932 COLORREF clrBack;
1933 LPSTR lpText;
Alexandre Julliarda3960291999-02-26 11:11:13 +00001934 UINT cch;
1935 INT iImage;
1936 HWND hwndChild;
1937 UINT cxMinChild;
1938 UINT cyMinChild;
1939 UINT cx;
1940 HBITMAP hbmBack;
1941 UINT wID;
1942 UINT cyChild;
1943 UINT cyMaxChild;
1944 UINT cyIntegral;
1945 UINT cxIdeal;
Alexandre Julliard85ed45e1998-08-22 19:03:56 +00001946 LPARAM lParam;
Alexandre Julliarda3960291999-02-26 11:11:13 +00001947 UINT cxHeader;
1948} REBARBANDINFOA, *LPREBARBANDINFOA;
Alexandre Julliard85ed45e1998-08-22 19:03:56 +00001949
Alexandre Julliarda3960291999-02-26 11:11:13 +00001950typedef REBARBANDINFOA const *LPCREBARBANDINFOA;
Alexandre Julliard85ed45e1998-08-22 19:03:56 +00001951
Alexandre Julliarda0d77311998-09-13 16:32:00 +00001952typedef struct tagREBARBANDINFOW
1953{
Alexandre Julliarda3960291999-02-26 11:11:13 +00001954 UINT cbSize;
1955 UINT fMask;
1956 UINT fStyle;
Alexandre Julliarda0d77311998-09-13 16:32:00 +00001957 COLORREF clrFore;
1958 COLORREF clrBack;
Eric Kohl8d2933d1998-11-22 18:12:12 +00001959 LPWSTR lpText;
Alexandre Julliarda3960291999-02-26 11:11:13 +00001960 UINT cch;
1961 INT iImage;
1962 HWND hwndChild;
1963 UINT cxMinChild;
1964 UINT cyMinChild;
1965 UINT cx;
1966 HBITMAP hbmBack;
1967 UINT wID;
1968 UINT cyChild;
1969 UINT cyMaxChild;
1970 UINT cyIntegral;
1971 UINT cxIdeal;
Alexandre Julliarda0d77311998-09-13 16:32:00 +00001972 LPARAM lParam;
Alexandre Julliarda3960291999-02-26 11:11:13 +00001973 UINT cxHeader;
1974} REBARBANDINFOW, *LPREBARBANDINFOW;
Alexandre Julliard85ed45e1998-08-22 19:03:56 +00001975
Alexandre Julliarda3960291999-02-26 11:11:13 +00001976typedef REBARBANDINFOW const *LPCREBARBANDINFOW;
Alexandre Julliarda0d77311998-09-13 16:32:00 +00001977
1978#define REBARBANDINFO WINELIB_NAME_AW(REBARBANDINFO)
1979#define LPREBARBANDINFO WINELIB_NAME_AW(LPREBARBANDINFO)
1980#define LPCREBARBANDINFO WINELIB_NAME_AW(LPCREBARBANDINFO)
1981
Filip Navara27731062003-09-16 01:17:25 +00001982#define REBARBANDINFOA_V3_SIZE CCSIZEOF_STRUCT(REBARBANDINFOA, wID)
1983#define REBARBANDINFOW_V3_SIZE CCSIZEOF_STRUCT(REBARBANDINFOW, wID)
1984#define REBARBANDINFO_V3_SIZE CCSIZEOF_STRUCT(WINELIB_NAME_AW(REBARBANDINFO), wID)
Alexandre Julliard85ed45e1998-08-22 19:03:56 +00001985
Eric Kohl9d8e8641998-10-24 10:49:27 +00001986typedef struct tagNMREBARCHILDSIZE
1987{
1988 NMHDR hdr;
Alexandre Julliarda3960291999-02-26 11:11:13 +00001989 UINT uBand;
1990 UINT wID;
1991 RECT rcChild;
1992 RECT rcBand;
Eric Kohl9d8e8641998-10-24 10:49:27 +00001993} NMREBARCHILDSIZE, *LPNMREBARCHILDSIZE;
1994
1995typedef struct tagNMREBAR
1996{
1997 NMHDR hdr;
1998 DWORD dwMask;
Alexandre Julliarda3960291999-02-26 11:11:13 +00001999 UINT uBand;
2000 UINT fStyle;
2001 UINT wID;
Eric Kohl9d8e8641998-10-24 10:49:27 +00002002 LPARAM lParam;
2003} NMREBAR, *LPNMREBAR;
2004
2005typedef struct tagNMRBAUTOSIZE
2006{
2007 NMHDR hdr;
Alexandre Julliarda3960291999-02-26 11:11:13 +00002008 BOOL fChanged;
2009 RECT rcTarget;
2010 RECT rcActual;
Eric Kohl9d8e8641998-10-24 10:49:27 +00002011} NMRBAUTOSIZE, *LPNMRBAUTOSIZE;
2012
Robert Shearmanfc58ef82003-11-09 00:28:24 +00002013typedef struct tagNMREBARCHEVRON
2014{
2015 NMHDR hdr;
2016 UINT uBand;
2017 UINT wID;
2018 LPARAM lParam;
2019 RECT rc;
2020 LPARAM lParamNM;
2021} NMREBARCHEVRON, *LPNMREBARCHEVRON;
2022
Eric Kohl9d8e8641998-10-24 10:49:27 +00002023typedef struct _RB_HITTESTINFO
2024{
Alexandre Julliarda3960291999-02-26 11:11:13 +00002025 POINT pt;
2026 UINT flags;
2027 INT iBand;
Eric Kohl9d8e8641998-10-24 10:49:27 +00002028} RBHITTESTINFO, *LPRBHITTESTINFO;
2029
Robert Shearmanead9e562004-08-25 02:14:28 +00002030#define RBAB_AUTOSIZE 0x0001
2031#define RBAB_ADDBAND 0x0002
2032
2033typedef struct tagNMREBARAUTOBREAK
2034{
2035 NMHDR hdr;
2036 UINT uBand;
2037 UINT wID;
2038 LPARAM lParam;
2039 UINT uMsg;
2040 UINT fStyleCurrent;
2041 BOOL fAutoBreak;
2042} NMREBARAUTOBREAK, *LPNMREBARAUTOBREAK;
2043
Alexandre Julliard642d3131998-07-12 19:29:36 +00002044
2045/* Trackbar control */
2046
Jon Griffiths7a6bad82001-01-22 02:13:58 +00002047#define TRACKBAR_CLASSA "msctls_trackbar32"
Dmitry Timoshkova9c057f2002-09-16 19:29:36 +00002048#if defined(__GNUC__)
2049# define TRACKBAR_CLASSW (const WCHAR []){ 'm','s','c','t','l','s','_', \
2050 't','r','a','c','k','b','a','r','3','2',0 }
2051#elif defined(_MSC_VER)
2052# define TRACKBAR_CLASSW L"msctls_trackbar32"
2053#else
Jon Griffiths7a6bad82001-01-22 02:13:58 +00002054static const WCHAR TRACKBAR_CLASSW[] = { 'm','s','c','t','l','s','_',
2055 't','r','a','c','k','b','a','r','3','2',0 };
Dmitry Timoshkova9c057f2002-09-16 19:29:36 +00002056#endif
Alexandre Julliard642d3131998-07-12 19:29:36 +00002057#define TRACKBAR_CLASS WINELIB_NAME_AW(TRACKBAR_CLASS)
2058
2059#define TBS_AUTOTICKS 0x0001
2060#define TBS_VERT 0x0002
2061#define TBS_HORZ 0x0000
2062#define TBS_TOP 0x0004
2063#define TBS_BOTTOM 0x0000
2064#define TBS_LEFT 0x0004
2065#define TBS_RIGHT 0x0000
2066#define TBS_BOTH 0x0008
2067#define TBS_NOTICKS 0x0010
2068#define TBS_ENABLESELRANGE 0x0020
2069#define TBS_FIXEDLENGTH 0x0040
2070#define TBS_NOTHUMB 0x0080
2071#define TBS_TOOLTIPS 0x0100
Dimitrie O. Paun3a706f02002-09-09 19:19:50 +00002072#define TBS_REVERSED 0x0200
2073#define TBS_DOWNISLEFT 0x0400
Alexandre Julliard642d3131998-07-12 19:29:36 +00002074
Alexandre Julliard767e6f61998-08-09 12:47:43 +00002075#define TBTS_TOP 0
2076#define TBTS_LEFT 1
2077#define TBTS_BOTTOM 2
2078#define TBTS_RIGHT 3
2079
2080#define TB_LINEUP 0
2081#define TB_LINEDOWN 1
2082#define TB_PAGEUP 2
2083#define TB_PAGEDOWN 3
2084#define TB_THUMBPOSITION 4
2085#define TB_THUMBTRACK 5
2086#define TB_TOP 6
2087#define TB_BOTTOM 7
2088#define TB_ENDTRACK 8
2089
2090#define TBCD_TICS 0x0001
2091#define TBCD_THUMB 0x0002
2092#define TBCD_CHANNEL 0x0003
2093
Alexandre Julliard642d3131998-07-12 19:29:36 +00002094#define TBM_GETPOS (WM_USER)
2095#define TBM_GETRANGEMIN (WM_USER+1)
2096#define TBM_GETRANGEMAX (WM_USER+2)
2097#define TBM_GETTIC (WM_USER+3)
2098#define TBM_SETTIC (WM_USER+4)
2099#define TBM_SETPOS (WM_USER+5)
Alexandre Julliard767e6f61998-08-09 12:47:43 +00002100#define TBM_SETRANGE (WM_USER+6)
2101#define TBM_SETRANGEMIN (WM_USER+7)
2102#define TBM_SETRANGEMAX (WM_USER+8)
2103#define TBM_CLEARTICS (WM_USER+9)
2104#define TBM_SETSEL (WM_USER+10)
2105#define TBM_SETSELSTART (WM_USER+11)
2106#define TBM_SETSELEND (WM_USER+12)
2107#define TBM_GETPTICS (WM_USER+14)
2108#define TBM_GETTICPOS (WM_USER+15)
2109#define TBM_GETNUMTICS (WM_USER+16)
Alexandre Julliard642d3131998-07-12 19:29:36 +00002110#define TBM_GETSELSTART (WM_USER+17)
2111#define TBM_GETSELEND (WM_USER+18)
2112#define TBM_CLEARSEL (WM_USER+19)
2113#define TBM_SETTICFREQ (WM_USER+20)
2114#define TBM_SETPAGESIZE (WM_USER+21)
2115#define TBM_GETPAGESIZE (WM_USER+22)
2116#define TBM_SETLINESIZE (WM_USER+23)
2117#define TBM_GETLINESIZE (WM_USER+24)
2118#define TBM_GETTHUMBRECT (WM_USER+25)
2119#define TBM_GETCHANNELRECT (WM_USER+26)
2120#define TBM_SETTHUMBLENGTH (WM_USER+27)
2121#define TBM_GETTHUMBLENGTH (WM_USER+28)
Alexandre Julliard767e6f61998-08-09 12:47:43 +00002122#define TBM_SETTOOLTIPS (WM_USER+29)
2123#define TBM_GETTOOLTIPS (WM_USER+30)
2124#define TBM_SETTIPSIDE (WM_USER+31)
2125#define TBM_SETBUDDY (WM_USER+32)
2126#define TBM_GETBUDDY (WM_USER+33)
2127#define TBM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
2128#define TBM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
Alexandre Julliard642d3131998-07-12 19:29:36 +00002129
2130
2131/* Pager control */
2132
Alexandre Julliarda3960291999-02-26 11:11:13 +00002133#define WC_PAGESCROLLERA "SysPager"
Dmitry Timoshkova9c057f2002-09-16 19:29:36 +00002134#if defined(__GNUC__)
2135# define WC_PAGESCROLLERW (const WCHAR []){ 'S','y','s','P','a','g','e','r',0 }
2136#elif defined(_MSC_VER)
2137# define WC_PAGESCROLLERW L"SysPager"
2138#else
Jon Griffiths7a6bad82001-01-22 02:13:58 +00002139static const WCHAR WC_PAGESCROLLERW[] = { 'S','y','s','P','a','g','e','r',0 };
Dmitry Timoshkova9c057f2002-09-16 19:29:36 +00002140#endif
Alexandre Julliard642d3131998-07-12 19:29:36 +00002141#define WC_PAGESCROLLER WINELIB_NAME_AW(WC_PAGESCROLLER)
2142
Alexandre Julliard829fe321998-07-26 14:27:39 +00002143#define PGS_VERT 0x00000000
2144#define PGS_HORZ 0x00000001
2145#define PGS_AUTOSCROLL 0x00000002
2146#define PGS_DRAGNDROP 0x00000004
2147
2148#define PGF_INVISIBLE 0
2149#define PGF_NORMAL 1
2150#define PGF_GRAYED 2
2151#define PGF_DEPRESSED 4
2152#define PGF_HOT 8
2153
2154#define PGB_TOPORLEFT 0
2155#define PGB_BOTTOMORRIGHT 1
2156
Alexandre Julliarda0d77311998-09-13 16:32:00 +00002157/* only used with PGN_SCROLL */
2158#define PGF_SCROLLUP 1
2159#define PGF_SCROLLDOWN 2
2160#define PGF_SCROLLLEFT 4
2161#define PGF_SCROLLRIGHT 8
Alexandre Julliard829fe321998-07-26 14:27:39 +00002162
Alexandre Julliarda0d77311998-09-13 16:32:00 +00002163#define PGK_SHIFT 1
2164#define PGK_CONTROL 2
2165#define PGK_MENU 4
2166
2167/* only used with PGN_CALCSIZE */
2168#define PGF_CALCWIDTH 1
2169#define PGF_CALCHEIGHT 2
2170
2171#define PGM_FIRST 0x1400
Alexandre Julliard829fe321998-07-26 14:27:39 +00002172#define PGM_SETCHILD (PGM_FIRST+1)
2173#define PGM_RECALCSIZE (PGM_FIRST+2)
2174#define PGM_FORWARDMOUSE (PGM_FIRST+3)
2175#define PGM_SETBKCOLOR (PGM_FIRST+4)
2176#define PGM_GETBKCOLOR (PGM_FIRST+5)
2177#define PGM_SETBORDER (PGM_FIRST+6)
2178#define PGM_GETBORDER (PGM_FIRST+7)
2179#define PGM_SETPOS (PGM_FIRST+8)
2180#define PGM_GETPOS (PGM_FIRST+9)
2181#define PGM_SETBUTTONSIZE (PGM_FIRST+10)
2182#define PGM_GETBUTTONSIZE (PGM_FIRST+11)
2183#define PGM_GETBUTTONSTATE (PGM_FIRST+12)
2184#define PGM_GETDROPTARGET CCM_GETDROPTARGET
2185
Alexandre Julliarda0d77311998-09-13 16:32:00 +00002186#define PGN_FIRST (0U-900U)
2187#define PGN_LAST (0U-950U)
2188#define PGN_SCROLL (PGN_FIRST-1)
2189#define PGN_CALCSIZE (PGN_FIRST-2)
2190
Dimitrie O. Paun53f9c212003-08-28 21:43:34 +00002191#include <pshpack1.h>
Susan Farley42b2c182001-02-23 01:32:46 +00002192
Alexandre Julliarda0d77311998-09-13 16:32:00 +00002193typedef struct
2194{
2195 NMHDR hdr;
2196 WORD fwKeys;
Alexandre Julliarda3960291999-02-26 11:11:13 +00002197 RECT rcParent;
2198 INT iDir;
2199 INT iXpos;
2200 INT iYpos;
2201 INT iScroll;
Alexandre Julliarda0d77311998-09-13 16:32:00 +00002202} NMPGSCROLL, *LPNMPGSCROLL;
2203
Dimitrie O. Paun53f9c212003-08-28 21:43:34 +00002204#include <poppack.h>
Susan Farley42b2c182001-02-23 01:32:46 +00002205
Alexandre Julliarda0d77311998-09-13 16:32:00 +00002206typedef struct
2207{
2208 NMHDR hdr;
2209 DWORD dwFlag;
Alexandre Julliarda3960291999-02-26 11:11:13 +00002210 INT iWidth;
2211 INT iHeight;
Alexandre Julliarda0d77311998-09-13 16:32:00 +00002212} NMPGCALCSIZE, *LPNMPGCALCSIZE;
Alexandre Julliard829fe321998-07-26 14:27:39 +00002213
Alexandre Julliard642d3131998-07-12 19:29:36 +00002214
2215/* Treeview control */
2216
Alexandre Julliarda3960291999-02-26 11:11:13 +00002217#define WC_TREEVIEWA "SysTreeView32"
Dmitry Timoshkova9c057f2002-09-16 19:29:36 +00002218#if defined(__GNUC__)
2219# define WC_TREEVIEWW (const WCHAR []){ 'S','y','s', \
2220 'T','r','e','e','V','i','e','w','3','2',0 }
2221#elif defined(_MSC_VER)
2222# define WC_TREEVIEWW L"SysTreeView32"
2223#else
Jon Griffiths7a6bad82001-01-22 02:13:58 +00002224static const WCHAR WC_TREEVIEWW[] = { 'S','y','s',
2225 'T','r','e','e','V','i','e','w','3','2',0 };
Dmitry Timoshkova9c057f2002-09-16 19:29:36 +00002226#endif
Alexandre Julliarda0d77311998-09-13 16:32:00 +00002227#define WC_TREEVIEW WINELIB_NAME_AW(WC_TREEVIEW)
Alexandre Julliard642d3131998-07-12 19:29:36 +00002228
Alexandre Julliard829fe321998-07-26 14:27:39 +00002229#define TVSIL_NORMAL 0
2230#define TVSIL_STATE 2
2231
2232#define TV_FIRST 0x1100
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00002233#define TVM_INSERTITEMA (TV_FIRST+0)
2234#define TVM_INSERTITEMW (TV_FIRST+50)
Alexandre Julliarda0d77311998-09-13 16:32:00 +00002235#define TVM_INSERTITEM WINELIB_NAME_AW(TVM_INSERTITEM)
Alexandre Julliard767e6f61998-08-09 12:47:43 +00002236#define TVM_DELETEITEM (TV_FIRST+1)
2237#define TVM_EXPAND (TV_FIRST+2)
2238#define TVM_GETITEMRECT (TV_FIRST+4)
2239#define TVM_GETCOUNT (TV_FIRST+5)
2240#define TVM_GETINDENT (TV_FIRST+6)
2241#define TVM_SETINDENT (TV_FIRST+7)
Alexandre Julliard829fe321998-07-26 14:27:39 +00002242#define TVM_GETIMAGELIST (TV_FIRST+8)
2243#define TVM_SETIMAGELIST (TV_FIRST+9)
Alexandre Julliard767e6f61998-08-09 12:47:43 +00002244#define TVM_GETNEXTITEM (TV_FIRST+10)
2245#define TVM_SELECTITEM (TV_FIRST+11)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00002246#define TVM_GETITEMA (TV_FIRST+12)
2247#define TVM_GETITEMW (TV_FIRST+62)
Alexandre Julliarda0d77311998-09-13 16:32:00 +00002248#define TVM_GETITEM WINELIB_NAME_AW(TVM_GETITEM)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00002249#define TVM_SETITEMA (TV_FIRST+13)
2250#define TVM_SETITEMW (TV_FIRST+63)
Alexandre Julliarda0d77311998-09-13 16:32:00 +00002251#define TVM_SETITEM WINELIB_NAME_AW(TVM_SETITEM)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00002252#define TVM_EDITLABELA (TV_FIRST+14)
2253#define TVM_EDITLABELW (TV_FIRST+65)
Alexandre Julliarda0d77311998-09-13 16:32:00 +00002254#define TVM_EDITLABEL WINELIB_NAME_AW(TVM_EDITLABEL)
Alexandre Julliard767e6f61998-08-09 12:47:43 +00002255#define TVM_GETEDITCONTROL (TV_FIRST+15)
2256#define TVM_GETVISIBLECOUNT (TV_FIRST+16)
2257#define TVM_HITTEST (TV_FIRST+17)
2258#define TVM_CREATEDRAGIMAGE (TV_FIRST+18)
2259#define TVM_SORTCHILDREN (TV_FIRST+19)
2260#define TVM_ENSUREVISIBLE (TV_FIRST+20)
2261#define TVM_SORTCHILDRENCB (TV_FIRST+21)
2262#define TVM_ENDEDITLABELNOW (TV_FIRST+22)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00002263#define TVM_GETISEARCHSTRINGA (TV_FIRST+23)
2264#define TVM_GETISEARCHSTRINGW (TV_FIRST+64)
Alexandre Julliarda0d77311998-09-13 16:32:00 +00002265#define TVM_GETISEARCHSTRING WINELIB_NAME_AW(TVM_GETISEARCHSTRING)
Alexandre Julliard767e6f61998-08-09 12:47:43 +00002266#define TVM_SETTOOLTIPS (TV_FIRST+24)
2267#define TVM_GETTOOLTIPS (TV_FIRST+25)
Alexandre Julliarda0d77311998-09-13 16:32:00 +00002268#define TVM_SETINSERTMARK (TV_FIRST+26)
2269#define TVM_SETITEMHEIGHT (TV_FIRST+27)
2270#define TVM_GETITEMHEIGHT (TV_FIRST+28)
2271#define TVM_SETBKCOLOR (TV_FIRST+29)
2272#define TVM_SETTEXTCOLOR (TV_FIRST+30)
2273#define TVM_GETBKCOLOR (TV_FIRST+31)
2274#define TVM_GETTEXTCOLOR (TV_FIRST+32)
2275#define TVM_SETSCROLLTIME (TV_FIRST+33)
2276#define TVM_GETSCROLLTIME (TV_FIRST+34)
Eric Kohlb406c7d1999-01-24 19:12:34 +00002277#define TVM_UNKNOWN35 (TV_FIRST+35)
2278#define TVM_UNKNOWN36 (TV_FIRST+36)
Alexandre Julliarda0d77311998-09-13 16:32:00 +00002279#define TVM_SETINSERTMARKCOLOR (TV_FIRST+37)
2280#define TVM_GETINSERTMARKCOLOR (TV_FIRST+38)
Alex Prieme74f2191999-07-18 18:31:05 +00002281#define TVM_GETITEMSTATE (TV_FIRST+39)
2282#define TVM_SETLINECOLOR (TV_FIRST+40)
2283#define TVM_GETLINECOLOR (TV_FIRST+41)
Alexandre Julliarda0d77311998-09-13 16:32:00 +00002284#define TVM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
2285#define TVM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
Robert Shearmanead9e562004-08-25 02:14:28 +00002286#define TVM_MAPACCIDTOHTREEITEM (TV_FIRST + 42)
2287#define TVM_MAPHTREEITEMTOACCID (TV_FIRST + 43)
Alex Prieme74f2191999-07-18 18:31:05 +00002288
2289
Alexandre Julliarda0d77311998-09-13 16:32:00 +00002290#define TVN_FIRST (0U-400U)
2291#define TVN_LAST (0U-499U)
2292
Francois Gouget05ba8c52000-03-19 21:15:36 +00002293#define TVN_SELCHANGINGA (TVN_FIRST-1)
2294#define TVN_SELCHANGINGW (TVN_FIRST-50)
2295#define TVN_SELCHANGING WINELIB_NAME_AW(TVN_SELCHANGING)
2296
2297#define TVN_SELCHANGEDA (TVN_FIRST-2)
2298#define TVN_SELCHANGEDW (TVN_FIRST-51)
2299#define TVN_SELCHANGED WINELIB_NAME_AW(TVN_SELCHANGED)
2300
2301#define TVN_GETDISPINFOA (TVN_FIRST-3)
2302#define TVN_GETDISPINFOW (TVN_FIRST-52)
2303#define TVN_GETDISPINFO WINELIB_NAME_AW(TVN_GETDISPINFO)
2304
2305#define TVN_SETDISPINFOA (TVN_FIRST-4)
2306#define TVN_SETDISPINFOW (TVN_FIRST-53)
2307#define TVN_SETDISPINFO WINELIB_NAME_AW(TVN_SETDISPINFO)
2308
2309#define TVN_ITEMEXPANDINGA (TVN_FIRST-5)
2310#define TVN_ITEMEXPANDINGW (TVN_FIRST-54)
2311#define TVN_ITEMEXPANDING WINELIB_NAME_AW(TVN_ITEMEXPANDING)
2312
2313#define TVN_ITEMEXPANDEDA (TVN_FIRST-6)
2314#define TVN_ITEMEXPANDEDW (TVN_FIRST-55)
2315#define TVN_ITEMEXPANDED WINELIB_NAME_AW(TVN_ITEMEXPANDED)
2316
2317#define TVN_BEGINDRAGA (TVN_FIRST-7)
2318#define TVN_BEGINDRAGW (TVN_FIRST-56)
2319#define TVN_BEGINDRAG WINELIB_NAME_AW(TVN_BEGINDRAG)
2320
2321#define TVN_BEGINRDRAGA (TVN_FIRST-8)
2322#define TVN_BEGINRDRAGW (TVN_FIRST-57)
2323#define TVN_BEGINRDRAG WINELIB_NAME_AW(TVN_BEGINRDRAG)
2324
2325#define TVN_DELETEITEMA (TVN_FIRST-9)
2326#define TVN_DELETEITEMW (TVN_FIRST-58)
2327#define TVN_DELETEITEM WINELIB_NAME_AW(TVN_DELETEITEM)
2328
2329#define TVN_BEGINLABELEDITA (TVN_FIRST-10)
2330#define TVN_BEGINLABELEDITW (TVN_FIRST-59)
2331#define TVN_BEGINLABELEDIT WINELIB_NAME_AW(TVN_BEGINLABELEDIT)
2332
2333#define TVN_ENDLABELEDITA (TVN_FIRST-11)
2334#define TVN_ENDLABELEDITW (TVN_FIRST-60)
2335#define TVN_ENDLABELEDIT WINELIB_NAME_AW(TVN_ENDLABELEDIT)
2336
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002337#define TVN_KEYDOWN (TVN_FIRST-12)
Francois Gouget05ba8c52000-03-19 21:15:36 +00002338
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002339#define TVN_GETINFOTIPA (TVN_FIRST-13)
2340#define TVN_GETINFOTIPW (TVN_FIRST-14)
Francois Gouget05ba8c52000-03-19 21:15:36 +00002341#define TVN_GETINFOTIP WINELIB_NAME_AW(TVN_GETINFOTIP)
2342
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002343#define TVN_SINGLEEXPAND (TVN_FIRST-15)
2344
2345
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002346
2347
2348
2349#define TVIF_TEXT 0x0001
2350#define TVIF_IMAGE 0x0002
2351#define TVIF_PARAM 0x0004
2352#define TVIF_STATE 0x0008
2353#define TVIF_HANDLE 0x0010
2354#define TVIF_SELECTEDIMAGE 0x0020
2355#define TVIF_CHILDREN 0x0040
2356#define TVIF_INTEGRAL 0x0080
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00002357#define TVIF_DI_SETITEM 0x1000
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002358
Zygo Blaxellf861e271999-02-02 13:59:17 +00002359#define TVI_ROOT ((HTREEITEM)0xffff0000) /* -65536 */
2360#define TVI_FIRST ((HTREEITEM)0xffff0001) /* -65535 */
2361#define TVI_LAST ((HTREEITEM)0xffff0002) /* -65534 */
2362#define TVI_SORT ((HTREEITEM)0xffff0003) /* -65533 */
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002363
2364#define TVIS_FOCUSED 0x0001
2365#define TVIS_SELECTED 0x0002
2366#define TVIS_CUT 0x0004
2367#define TVIS_DROPHILITED 0x0008
2368#define TVIS_BOLD 0x0010
2369#define TVIS_EXPANDED 0x0020
2370#define TVIS_EXPANDEDONCE 0x0040
Francois Gougetf12dbd02001-01-22 19:26:07 +00002371#define TVIS_EXPANDPARTIAL 0x0080
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002372#define TVIS_OVERLAYMASK 0x0f00
2373#define TVIS_STATEIMAGEMASK 0xf000
2374#define TVIS_USERMASK 0xf000
2375
2376#define TVHT_NOWHERE 0x0001
2377#define TVHT_ONITEMICON 0x0002
2378#define TVHT_ONITEMLABEL 0x0004
2379#define TVHT_ONITEMINDENT 0x0008
2380#define TVHT_ONITEMBUTTON 0x0010
2381#define TVHT_ONITEMRIGHT 0x0020
2382#define TVHT_ONITEMSTATEICON 0x0040
2383#define TVHT_ONITEM 0x0046
2384#define TVHT_ABOVE 0x0100
2385#define TVHT_BELOW 0x0200
2386#define TVHT_TORIGHT 0x0400
2387#define TVHT_TOLEFT 0x0800
2388
2389#define TVS_HASBUTTONS 0x0001
2390#define TVS_HASLINES 0x0002
2391#define TVS_LINESATROOT 0x0004
2392#define TVS_EDITLABELS 0x0008
2393#define TVS_DISABLEDRAGDROP 0x0010
2394#define TVS_SHOWSELALWAYS 0x0020
2395#define TVS_RTLREADING 0x0040
2396#define TVS_NOTOOLTIPS 0x0080
2397#define TVS_CHECKBOXES 0x0100
2398#define TVS_TRACKSELECT 0x0200
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00002399#define TVS_SINGLEEXPAND 0x0400
2400#define TVS_INFOTIP 0x0800
2401#define TVS_FULLROWSELECT 0x1000
2402#define TVS_NOSCROLL 0x2000
2403#define TVS_NONEVENHEIGHT 0x4000
Vincent Béron9a624912002-05-31 23:06:46 +00002404#define TVS_NOHSCROLL 0x8000
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002405
2406#define TVS_SHAREDIMAGELISTS 0x0000
2407#define TVS_PRIVATEIMAGELISTS 0x0400
2408
2409
2410#define TVE_COLLAPSE 0x0001
2411#define TVE_EXPAND 0x0002
2412#define TVE_TOGGLE 0x0003
2413#define TVE_EXPANDPARTIAL 0x4000
2414#define TVE_COLLAPSERESET 0x8000
2415
2416#define TVGN_ROOT 0
2417#define TVGN_NEXT 1
2418#define TVGN_PREVIOUS 2
2419#define TVGN_PARENT 3
2420#define TVGN_CHILD 4
2421#define TVGN_FIRSTVISIBLE 5
2422#define TVGN_NEXTVISIBLE 6
2423#define TVGN_PREVIOUSVISIBLE 7
2424#define TVGN_DROPHILITE 8
2425#define TVGN_CARET 9
2426#define TVGN_LASTVISIBLE 10
Robert Shearmanead9e562004-08-25 02:14:28 +00002427#define TVSI_NOSINGLEEXPAND 0x8000
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002428
2429#define TVC_UNKNOWN 0x00
2430#define TVC_BYMOUSE 0x01
2431#define TVC_BYKEYBOARD 0x02
2432
2433
Zygo Blaxellf861e271999-02-02 13:59:17 +00002434typedef struct _TREEITEM *HTREEITEM;
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002435
2436typedef struct {
Alexandre Julliarda3960291999-02-26 11:11:13 +00002437 UINT mask;
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002438 HTREEITEM hItem;
Alexandre Julliarda3960291999-02-26 11:11:13 +00002439 UINT state;
2440 UINT stateMask;
Eric Kohlb406c7d1999-01-24 19:12:34 +00002441 LPSTR pszText;
Alexandre Julliarda3960291999-02-26 11:11:13 +00002442 INT cchTextMax;
2443 INT iImage;
2444 INT iSelectedImage;
2445 INT cChildren;
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002446 LPARAM lParam;
Alexandre Julliarda3960291999-02-26 11:11:13 +00002447} TVITEMA, *LPTVITEMA;
Juergen Schmied26ff83d1999-01-26 10:35:53 +00002448
2449typedef struct {
Alexandre Julliarda3960291999-02-26 11:11:13 +00002450 UINT mask;
Juergen Schmied26ff83d1999-01-26 10:35:53 +00002451 HTREEITEM hItem;
Alexandre Julliarda3960291999-02-26 11:11:13 +00002452 UINT state;
2453 UINT stateMask;
Juergen Schmied26ff83d1999-01-26 10:35:53 +00002454 LPWSTR pszText;
Alexandre Julliarda3960291999-02-26 11:11:13 +00002455 INT cchTextMax;
2456 INT iImage;
2457 INT iSelectedImage;
2458 INT cChildren;
Juergen Schmied26ff83d1999-01-26 10:35:53 +00002459 LPARAM lParam;
Alexandre Julliarda3960291999-02-26 11:11:13 +00002460} TVITEMW, *LPTVITEMW;
Juergen Schmied26ff83d1999-01-26 10:35:53 +00002461
Juergen Schmieda5387392000-02-25 20:52:20 +00002462#define TV_ITEMA TVITEMA
2463#define TV_ITEMW TVITEMW
2464#define LPTV_ITEMA LPTVITEMA
2465#define LPTV_ITEMW LPTVITEMW
2466
2467#define TVITEM WINELIB_NAME_AW(TVITEM)
2468#define LPTVITEM WINELIB_NAME_AW(LPTVITEM)
2469#define TV_ITEM WINELIB_NAME_AW(TV_ITEM)
2470#define LPTV_ITEM WINELIB_NAME_AW(LPTV_ITEM)
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002471
2472typedef struct {
Alexandre Julliarda3960291999-02-26 11:11:13 +00002473 UINT mask;
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002474 HTREEITEM hItem;
Alexandre Julliarda3960291999-02-26 11:11:13 +00002475 UINT state;
2476 UINT stateMask;
Eric Kohlb406c7d1999-01-24 19:12:34 +00002477 LPSTR pszText;
Alexandre Julliarda3960291999-02-26 11:11:13 +00002478 INT cchTextMax;
2479 INT iImage;
2480 INT iSelectedImage;
2481 INT cChildren;
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002482 LPARAM lParam;
Alexandre Julliarda3960291999-02-26 11:11:13 +00002483 INT iIntegral;
2484} TVITEMEXA, *LPTVITEMEXA;
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002485
Juergen Schmied26ff83d1999-01-26 10:35:53 +00002486typedef struct {
Alexandre Julliarda3960291999-02-26 11:11:13 +00002487 UINT mask;
Juergen Schmied26ff83d1999-01-26 10:35:53 +00002488 HTREEITEM hItem;
Alexandre Julliarda3960291999-02-26 11:11:13 +00002489 UINT state;
2490 UINT stateMask;
Juergen Schmied26ff83d1999-01-26 10:35:53 +00002491 LPWSTR pszText;
Alexandre Julliarda3960291999-02-26 11:11:13 +00002492 INT cchTextMax;
2493 INT iImage;
2494 INT iSelectedImage;
2495 INT cChildren;
Juergen Schmied26ff83d1999-01-26 10:35:53 +00002496 LPARAM lParam;
Alexandre Julliarda3960291999-02-26 11:11:13 +00002497 INT iIntegral;
2498} TVITEMEXW, *LPTVITEMEXW;
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002499
Zygo Blaxell50d41fa1999-02-09 14:20:05 +00002500#define TVITEMEX WINELIB_NAME_AW(TVITEMEX)
2501#define LPTVITEMEX WINELIB_NAME_AW(LPTVITEMEX)
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002502
Alexandre Julliarda3960291999-02-26 11:11:13 +00002503typedef struct tagTVINSERTSTRUCTA {
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002504 HTREEITEM hParent;
2505 HTREEITEM hInsertAfter;
Alex Priemd2d7f961999-01-30 13:02:30 +00002506 union {
Alexandre Julliarda3960291999-02-26 11:11:13 +00002507 TVITEMEXA itemex;
2508 TVITEMA item;
Alex Priemd2d7f961999-01-30 13:02:30 +00002509 } DUMMYUNIONNAME;
Alexandre Julliarda3960291999-02-26 11:11:13 +00002510} TVINSERTSTRUCTA, *LPTVINSERTSTRUCTA;
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002511
Alexandre Julliarda3960291999-02-26 11:11:13 +00002512typedef struct tagTVINSERTSTRUCTW {
Juergen Schmied26ff83d1999-01-26 10:35:53 +00002513 HTREEITEM hParent;
2514 HTREEITEM hInsertAfter;
Alex Priemd2d7f961999-01-30 13:02:30 +00002515 union {
Alexandre Julliarda3960291999-02-26 11:11:13 +00002516 TVITEMEXW itemex;
2517 TVITEMW item;
Alex Priemd2d7f961999-01-30 13:02:30 +00002518 } DUMMYUNIONNAME;
Alexandre Julliarda3960291999-02-26 11:11:13 +00002519} TVINSERTSTRUCTW, *LPTVINSERTSTRUCTW;
Paul Quinn1beaae51998-12-15 15:38:36 +00002520
Francois Gougeta82de9b2000-10-13 17:08:42 +00002521#define TVINSERTSTRUCT WINELIB_NAME_AW(TVINSERTSTRUCT)
2522#define LPTVINSERTSTRUCT WINELIB_NAME_AW(LPTVINSERTSTRUCT)
Juergen Schmied26ff83d1999-01-26 10:35:53 +00002523
Alexandre Julliarda3960291999-02-26 11:11:13 +00002524#define TVINSERTSTRUCT_V1_SIZEA CCSIZEOF_STRUCT(TVINSERTSTRUCTA, item)
2525#define TVINSERTSTRUCT_V1_SIZEW CCSIZEOF_STRUCT(TVINSERTSTRUCTW, item)
Alex Priemd2d7f961999-01-30 13:02:30 +00002526#define TVINSERTSTRUCT_V1_SIZE WINELIB_NAME_AW(TVINSERTSTRUCT_V1_SIZE)
2527
Francois Gougeta82de9b2000-10-13 17:08:42 +00002528#define TV_INSERTSTRUCT TVINSERTSTRUCT
2529#define TV_INSERTSTRUCTA TVINSERTSTRUCTA
2530#define TV_INSERTSTRUCTW TVINSERTSTRUCTW
2531#define LPTV_INSERTSTRUCT LPTVINSERTSTRUCT
2532#define LPTV_INSERTSTRUCTA LPTVINSERTSTRUCTA
2533#define LPTV_INSERTSTRUCTW LPTVINSERTSTRUCTW
2534
Alex Priemd2d7f961999-01-30 13:02:30 +00002535
2536
Alexandre Julliarda3960291999-02-26 11:11:13 +00002537typedef struct tagNMTREEVIEWA {
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002538 NMHDR hdr;
Alexandre Julliarda3960291999-02-26 11:11:13 +00002539 UINT action;
2540 TVITEMA itemOld;
2541 TVITEMA itemNew;
2542 POINT ptDrag;
2543} NMTREEVIEWA, *LPNMTREEVIEWA;
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002544
Alexandre Julliarda3960291999-02-26 11:11:13 +00002545typedef struct tagNMTREEVIEWW {
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002546 NMHDR hdr;
Alexandre Julliarda3960291999-02-26 11:11:13 +00002547 UINT action;
2548 TVITEMW itemOld;
2549 TVITEMW itemNew;
2550 POINT ptDrag;
2551} NMTREEVIEWW, *LPNMTREEVIEWW;
Juergen Schmied26ff83d1999-01-26 10:35:53 +00002552
Alex Priemd2d7f961999-01-30 13:02:30 +00002553#define NMTREEVIEW WINELIB_NAME_AW(NMTREEVIEW)
Alexandre Julliarde32be241999-02-10 06:43:59 +00002554#define NM_TREEVIEW WINELIB_NAME_AW(NMTREEVIEW)
Dimitrie O. Paune25ab1f2002-12-24 00:26:41 +00002555#define NM_TREEVIEWA NMTREEVIEWA
2556#define NM_TREEVIEWW NMTREEVIEWW
Alex Priemd2d7f961999-01-30 13:02:30 +00002557#define LPNMTREEVIEW WINELIB_NAME_AW(LPNMTREEVIEW)
Juergen Schmied26ff83d1999-01-26 10:35:53 +00002558
Dimitrie O. Paune25ab1f2002-12-24 00:26:41 +00002559#define LPNM_TREEVIEW LPNMTREEVIEW
2560#define LPNM_TREEVIEWA LPNMTREEVIEWA
2561#define LPNM_TREEVIEWW LPNMTREEVIEWW
Peter Hunnisett565b0082000-09-19 02:43:00 +00002562
Alexandre Julliarda3960291999-02-26 11:11:13 +00002563typedef struct tagTVDISPINFOA {
Juergen Schmied26ff83d1999-01-26 10:35:53 +00002564 NMHDR hdr;
Alexandre Julliarda3960291999-02-26 11:11:13 +00002565 TVITEMA item;
2566} NMTVDISPINFOA, *LPNMTVDISPINFOA;
Juergen Schmied26ff83d1999-01-26 10:35:53 +00002567
Alexandre Julliarda3960291999-02-26 11:11:13 +00002568typedef struct tagTVDISPINFOW {
Juergen Schmied26ff83d1999-01-26 10:35:53 +00002569 NMHDR hdr;
Alexandre Julliarda3960291999-02-26 11:11:13 +00002570 TVITEMW item;
2571} NMTVDISPINFOW, *LPNMTVDISPINFOW;
Juergen Schmied26ff83d1999-01-26 10:35:53 +00002572
Alex Priemd2d7f961999-01-30 13:02:30 +00002573#define NMTVDISPINFO WINELIB_NAME_AW(NMTVDISPINFO)
2574#define LPNMTVDISPINFO WINELIB_NAME_AW(LPNMTVDISPINFO)
2575#define TV_DISPINFO NMTVDISPINFO
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002576
Patrik Stridvallf94462f2002-01-31 23:22:07 +00002577typedef INT (CALLBACK *PFNTVCOMPARE)(LPARAM, LPARAM, LPARAM);
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002578
Paul Quinn1beaae51998-12-15 15:38:36 +00002579typedef struct tagTVSORTCB
2580{
2581 HTREEITEM hParent;
2582 PFNTVCOMPARE lpfnCompare;
2583 LPARAM lParam;
2584} TVSORTCB, *LPTVSORTCB;
2585
2586#define TV_SORTCB TVSORTCB
2587#define LPTV_SORTCB LPTVSORTCB
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002588
2589typedef struct tagTVHITTESTINFO {
Alexandre Julliarda3960291999-02-26 11:11:13 +00002590 POINT pt;
2591 UINT flags;
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002592 HTREEITEM hItem;
2593} TVHITTESTINFO, *LPTVHITTESTINFO;
2594
Paul Quinn1beaae51998-12-15 15:38:36 +00002595#define TV_HITTESTINFO TVHITTESTINFO
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002596
Alex Priemd2d7f961999-01-30 13:02:30 +00002597
2598/* Custom Draw Treeview */
2599
2600#define NMTVCUSTOMDRAW_V3_SIZE CCSIZEOF_STRUCT(NMTVCUSTOMDRAW, clrTextBk)
2601
2602#define TVCDRF_NOIMAGES 0x00010000
2603
2604typedef struct tagNMTVCUSTOMDRAW
2605{
2606 NMCUSTOMDRAW nmcd;
2607 COLORREF clrText;
2608 COLORREF clrTextBk;
Alexandre Julliarda3960291999-02-26 11:11:13 +00002609 INT iLevel; /* IE>0x0400 */
Alex Priemd2d7f961999-01-30 13:02:30 +00002610} NMTVCUSTOMDRAW, *LPNMTVCUSTOMDRAW;
2611
2612/* Treeview tooltips */
2613
Alexandre Julliarda3960291999-02-26 11:11:13 +00002614typedef struct tagNMTVGETINFOTIPA
Alex Priemd2d7f961999-01-30 13:02:30 +00002615{
2616 NMHDR hdr;
2617 LPSTR pszText;
Alexandre Julliarda3960291999-02-26 11:11:13 +00002618 INT cchTextMax;
Alex Priemd2d7f961999-01-30 13:02:30 +00002619 HTREEITEM hItem;
2620 LPARAM lParam;
Alexandre Julliarda3960291999-02-26 11:11:13 +00002621} NMTVGETINFOTIPA, *LPNMTVGETINFOTIPA;
Alex Priemd2d7f961999-01-30 13:02:30 +00002622
Alexandre Julliarda3960291999-02-26 11:11:13 +00002623typedef struct tagNMTVGETINFOTIPW
Alex Priemd2d7f961999-01-30 13:02:30 +00002624{
2625 NMHDR hdr;
2626 LPWSTR pszText;
Alexandre Julliarda3960291999-02-26 11:11:13 +00002627 INT cchTextMax;
Alex Priemd2d7f961999-01-30 13:02:30 +00002628 HTREEITEM hItem;
2629 LPARAM lParam;
Alexandre Julliarda3960291999-02-26 11:11:13 +00002630} NMTVGETINFOTIPW, *LPNMTVGETINFOTIPW;
Alex Priemd2d7f961999-01-30 13:02:30 +00002631
Francois Gougete19c60a2001-02-12 19:39:58 +00002632#define NMTVGETINFOTIP WINELIB_NAME_AW(NMTVGETINFOTIP)
2633#define LPNMTVGETINFOTIP WINELIB_NAME_AW(LPNMTVGETINFOTIP)
Alex Priemd2d7f961999-01-30 13:02:30 +00002634
Dimitrie O. Paun53f9c212003-08-28 21:43:34 +00002635#include <pshpack1.h>
Francois Gougete19c60a2001-02-12 19:39:58 +00002636typedef struct tagTVKEYDOWN
2637{
2638 NMHDR hdr;
2639 WORD wVKey;
2640 UINT flags;
2641} NMTVKEYDOWN, *LPNMTVKEYDOWN;
Dimitrie O. Paun53f9c212003-08-28 21:43:34 +00002642#include <poppack.h>
Francois Gougete19c60a2001-02-12 19:39:58 +00002643
2644#define TV_KEYDOWN NMTVKEYDOWN
Alex Priemd2d7f961999-01-30 13:02:30 +00002645
Alexandre Julliarda3960291999-02-26 11:11:13 +00002646#define TreeView_InsertItemA(hwnd, phdi) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00002647 (HTREEITEM)SNDMSGA((hwnd), TVM_INSERTITEMA, 0, \
Alexandre Julliarda3960291999-02-26 11:11:13 +00002648 (LPARAM)(LPTVINSERTSTRUCTA)(phdi))
Francois Boisvert56c36e31999-07-24 12:14:51 +00002649#define TreeView_InsertItemW(hwnd,phdi) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00002650 (HTREEITEM)SNDMSGW((hwnd), TVM_INSERTITEMW, 0, \
Juergen Schmieda5387392000-02-25 20:52:20 +00002651 (LPARAM)(LPTVINSERTSTRUCTW)(phdi))
Vincent Béron9a624912002-05-31 23:06:46 +00002652#define TreeView_InsertItem WINELIB_NAME_AW(TreeView_InsertItem)
Juergen Schmieda5387392000-02-25 20:52:20 +00002653
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002654#define TreeView_DeleteItem(hwnd, hItem) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00002655 (BOOL)SNDMSGA((hwnd), TVM_DELETEITEM, 0, (LPARAM)(HTREEITEM)(hItem))
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002656#define TreeView_DeleteAllItems(hwnd) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00002657 (BOOL)SNDMSGA((hwnd), TVM_DELETEITEM, 0, (LPARAM)TVI_ROOT)
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002658#define TreeView_Expand(hwnd, hitem, code) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00002659 (BOOL)SNDMSGA((hwnd), TVM_EXPAND, (WPARAM)code, \
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002660 (LPARAM)(HTREEITEM)(hitem))
2661
2662#define TreeView_GetItemRect(hwnd, hitem, prc, code) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00002663 (*(HTREEITEM *)prc = (hitem), (BOOL)SNDMSGA((hwnd), \
Alexandre Julliarda3960291999-02-26 11:11:13 +00002664 TVM_GETITEMRECT, (WPARAM)(code), (LPARAM)(RECT *)(prc)))
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002665
2666#define TreeView_GetCount(hwnd) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00002667 (UINT)SNDMSGA((hwnd), TVM_GETCOUNT, 0, 0)
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002668#define TreeView_GetIndent(hwnd) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00002669 (UINT)SNDMSGA((hwnd), TVM_GETINDENT, 0, 0)
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002670#define TreeView_SetIndent(hwnd, indent) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00002671 (BOOL)SNDMSGA((hwnd), TVM_SETINDENT, (WPARAM)indent, 0)
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002672
2673#define TreeView_GetImageList(hwnd, iImage) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00002674 (HIMAGELIST)SNDMSGA((hwnd), TVM_GETIMAGELIST, iImage, 0)
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002675
2676#define TreeView_SetImageList(hwnd, himl, iImage) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00002677 (HIMAGELIST)SNDMSGA((hwnd), TVM_SETIMAGELIST, iImage, \
Kevin Koltzau95a173a2005-09-02 11:32:17 +00002678 (LPARAM)(HIMAGELIST)(himl))
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002679
2680#define TreeView_GetNextItem(hwnd, hitem, code) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00002681 (HTREEITEM)SNDMSGA((hwnd), TVM_GETNEXTITEM, (WPARAM)code,\
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002682(LPARAM)(HTREEITEM) (hitem))
2683
2684#define TreeView_GetChild(hwnd, hitem) \
Alex Prieme6e71ad1999-11-28 19:50:01 +00002685 TreeView_GetNextItem(hwnd, hitem , TVGN_CHILD)
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002686#define TreeView_GetNextSibling(hwnd, hitem) \
2687 TreeView_GetNextItem(hwnd, hitem , TVGN_NEXT)
2688#define TreeView_GetPrevSibling(hwnd, hitem) \
2689 TreeView_GetNextItem(hwnd, hitem , TVGN_PREVIOUS)
2690#define TreeView_GetParent(hwnd, hitem) \
2691 TreeView_GetNextItem(hwnd, hitem , TVGN_PARENT)
2692#define TreeView_GetFirstVisible(hwnd) \
2693 TreeView_GetNextItem(hwnd, NULL, TVGN_FIRSTVISIBLE)
2694#define TreeView_GetLastVisible(hwnd) \
2695 TreeView_GetNextItem(hwnd, NULL, TVGN_LASTVISIBLE)
2696#define TreeView_GetNextVisible(hwnd, hitem) \
2697 TreeView_GetNextItem(hwnd, hitem , TVGN_NEXTVISIBLE)
2698#define TreeView_GetPrevVisible(hwnd, hitem) \
2699 TreeView_GetNextItem(hwnd, hitem , TVGN_PREVIOUSVISIBLE)
2700#define TreeView_GetSelection(hwnd) \
2701 TreeView_GetNextItem(hwnd, NULL, TVGN_CARET)
2702#define TreeView_GetDropHilight(hwnd) \
2703 TreeView_GetNextItem(hwnd, NULL, TVGN_DROPHILITE)
2704#define TreeView_GetRoot(hwnd) \
2705 TreeView_GetNextItem(hwnd, NULL, TVGN_ROOT)
2706#define TreeView_GetLastVisible(hwnd) \
2707 TreeView_GetNextItem(hwnd, NULL, TVGN_LASTVISIBLE)
2708
2709
2710#define TreeView_Select(hwnd, hitem, code) \
Kevin Koltzau95a173a2005-09-02 11:32:17 +00002711 (BOOL)SNDMSGA((hwnd), TVM_SELECTITEM, (WPARAM)(code), \
2712(LPARAM)(HTREEITEM)(hitem))
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002713
2714
2715#define TreeView_SelectItem(hwnd, hitem) \
2716 TreeView_Select(hwnd, hitem, TVGN_CARET)
2717#define TreeView_SelectDropTarget(hwnd, hitem) \
Alex Prieme6e71ad1999-11-28 19:50:01 +00002718 TreeView_Select(hwnd, hitem, TVGN_DROPHILITE)
2719#define TreeView_SelectSetFirstVisible(hwnd, hitem) \
2720 TreeView_Select(hwnd, hitem, TVGN_FIRSTVISIBLE)
2721
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002722
Alexandre Julliarda3960291999-02-26 11:11:13 +00002723#define TreeView_GetItemA(hwnd, pitem) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00002724 (BOOL)SNDMSGA((hwnd), TVM_GETITEMA, 0, (LPARAM) (TVITEMA *)(pitem))
Alex Prieme6e71ad1999-11-28 19:50:01 +00002725#define TreeView_GetItemW(hwnd, pitem) \
Jon Griffithsee6884b2004-12-08 13:39:52 +00002726 (BOOL)SNDMSGW((hwnd), TVM_GETITEMW, 0, (LPARAM) (TVITEMW *)(pitem))
Vincent Béron9a624912002-05-31 23:06:46 +00002727#define TreeView_GetItem WINELIB_NAME_AW(TreeView_GetItem)
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002728
Alexandre Julliarda3960291999-02-26 11:11:13 +00002729#define TreeView_SetItemA(hwnd, pitem) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00002730 (BOOL)SNDMSGA((hwnd), TVM_SETITEMA, 0, (LPARAM)(const TVITEMA *)(pitem))
Alex Prieme6e71ad1999-11-28 19:50:01 +00002731#define TreeView_SetItemW(hwnd, pitem) \
Jon Griffithsee6884b2004-12-08 13:39:52 +00002732 (BOOL)SNDMSGW((hwnd), TVM_SETITEMW, 0, (LPARAM)(const TVITEMW *)(pitem))
Marcus Meissner0691d742000-09-26 00:37:11 +00002733#define TreeView_SetItem WINELIB_NAME_AW(TreeView_SetItem)
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002734
2735#define TreeView_EditLabel(hwnd, hitem) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00002736 (HWND)SNDMSGA((hwnd), TVM_EDITLABEL, 0, (LPARAM)(HTREEITEM)(hitem))
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002737
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002738#define TreeView_GetEditControl(hwnd) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00002739 (HWND)SNDMSGA((hwnd), TVM_GETEDITCONTROL, 0, 0)
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002740
2741#define TreeView_GetVisibleCount(hwnd) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00002742 (UINT)SNDMSGA((hwnd), TVM_GETVISIBLECOUNT, 0, 0)
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002743
2744#define TreeView_HitTest(hwnd, lpht) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00002745 (HTREEITEM)SNDMSGA((hwnd), TVM_HITTEST, 0,\
Juergen Schmied26ff83d1999-01-26 10:35:53 +00002746(LPARAM)(LPTVHITTESTINFO)(lpht))
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002747
2748#define TreeView_CreateDragImage(hwnd, hitem) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00002749 (HIMAGELIST)SNDMSGA((hwnd), TVM_CREATEDRAGIMAGE, 0,\
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002750(LPARAM)(HTREEITEM)(hitem))
2751
2752#define TreeView_SortChildren(hwnd, hitem, recurse) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00002753 (BOOL)SNDMSGA((hwnd), TVM_SORTCHILDREN, (WPARAM)recurse,\
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002754(LPARAM)(HTREEITEM)(hitem))
2755
2756#define TreeView_EnsureVisible(hwnd, hitem) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00002757 (BOOL)SNDMSGA((hwnd), TVM_ENSUREVISIBLE, 0, (LPARAM)(UINT)(hitem))
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002758
2759#define TreeView_SortChildrenCB(hwnd, psort, recurse) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00002760 (BOOL)SNDMSGA((hwnd), TVM_SORTCHILDRENCB, (WPARAM)recurse, \
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002761 (LPARAM)(LPTV_SORTCB)(psort))
2762
2763#define TreeView_EndEditLabelNow(hwnd, fCancel) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00002764 (BOOL)SNDMSGA((hwnd), TVM_ENDEDITLABELNOW, (WPARAM)fCancel, 0)
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002765
Alex Prieme6e71ad1999-11-28 19:50:01 +00002766#define TreeView_GetISearchString(hwnd, lpsz) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00002767 (BOOL)SNDMSGA((hwnd), TVM_GETISEARCHSTRING, 0, \
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002768 (LPARAM)(LPTSTR)lpsz)
2769
Alex Prieme6e71ad1999-11-28 19:50:01 +00002770#define TreeView_SetToolTips(hwnd, hwndTT) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00002771 (HWND)SNDMSGA((hwnd), TVM_SETTOOLTIPS, (WPARAM)(hwndTT), 0)
Alex Prieme6e71ad1999-11-28 19:50:01 +00002772
2773#define TreeView_GetToolTips(hwnd) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00002774 (HWND)SNDMSGA((hwnd), TVM_GETTOOLTIPS, 0, 0)
Alex Prieme6e71ad1999-11-28 19:50:01 +00002775
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002776#define TreeView_SetItemHeight(hwnd, iHeight) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00002777 (INT)SNDMSGA((hwnd), TVM_SETITEMHEIGHT, (WPARAM)iHeight, 0)
Alex Prieme6e71ad1999-11-28 19:50:01 +00002778
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002779#define TreeView_GetItemHeight(hwnd) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00002780 (INT)SNDMSGA((hwnd), TVM_GETITEMHEIGHT, 0, 0)
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002781
2782#define TreeView_SetBkColor(hwnd, clr) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00002783 (COLORREF)SNDMSGA((hwnd), TVM_SETBKCOLOR, 0, (LPARAM)clr)
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002784
2785#define TreeView_SetTextColor(hwnd, clr) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00002786 (COLORREF)SNDMSGA((hwnd), TVM_SETTEXTCOLOR, 0, (LPARAM)clr)
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002787
2788#define TreeView_GetBkColor(hwnd) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00002789 (COLORREF)SNDMSGA((hwnd), TVM_GETBKCOLOR, 0, 0)
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002790
2791#define TreeView_GetTextColor(hwnd) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00002792 (COLORREF)SNDMSGA((hwnd), TVM_GETTEXTCOLOR, 0, 0)
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002793
2794#define TreeView_SetScrollTime(hwnd, uTime) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00002795 (UINT)SNDMSGA((hwnd), TVM_SETSCROLLTIME, uTime, 0)
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002796
2797#define TreeView_GetScrollTime(hwnd) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00002798 (UINT)SNDMSGA((hwnd), TVM_GETSCROLLTIME, 0, 0)
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002799
Alex Prieme6e71ad1999-11-28 19:50:01 +00002800#define TreeView_SetInsertMark(hwnd, hItem, fAfter) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00002801 (BOOL)SNDMSGA((hwnd), TVM_SETINSERTMARK, (WPARAM)(fAfter), \
Alex Prieme6e71ad1999-11-28 19:50:01 +00002802 (LPARAM) (hItem))
2803
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002804#define TreeView_SetInsertMarkColor(hwnd, clr) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00002805 (COLORREF)SNDMSGA((hwnd), TVM_SETINSERTMARKCOLOR, 0, (LPARAM)clr)
Alex Prieme6e71ad1999-11-28 19:50:01 +00002806
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002807#define TreeView_GetInsertMarkColor(hwnd) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00002808 (COLORREF)SNDMSGA((hwnd), TVM_GETINSERTMARKCOLOR, 0, 0)
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00002809
Robert Shearmanead9e562004-08-25 02:14:28 +00002810#define TreeView_SetItemState(hwndTV, hti, data, _mask) \
2811{ TVITEM _TVi; \
2812 _TVi.mask = TVIF_STATE; \
2813 _TVi.hItem = hti; \
2814 _TVi.stateMask = _mask; \
2815 _TVi.state = data; \
Andreas Mohre5a2a7a2005-05-31 13:20:32 +00002816 SNDMSG((hwndTV), TVM_SETITEM, 0, (LPARAM)&_TVi); \
Robert Shearmanead9e562004-08-25 02:14:28 +00002817}
2818
Alex Prieme6e71ad1999-11-28 19:50:01 +00002819#define TreeView_GetItemState(hwndTV, hti, mask) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00002820 (UINT)SNDMSGA((hwndTV), TVM_GETITEMSTATE, (WPARAM)(hti), (LPARAM)(mask))
Alex Prieme6e71ad1999-11-28 19:50:01 +00002821#define TreeView_GetCheckState(hwndTV, hti) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00002822 ((((UINT)(SNDMSGA((hwndTV), TVM_GETITEMSTATE, (WPARAM)(hti), \
Alex Prieme6e71ad1999-11-28 19:50:01 +00002823 TVIS_STATEIMAGEMASK))) >> 12) -1)
2824
2825#define TreeView_SetLineColor(hwnd, clr) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00002826 (COLORREF)SNDMSGA((hwnd), TVM_SETLINECOLOR, 0, (LPARAM)(clr))
Alex Prieme6e71ad1999-11-28 19:50:01 +00002827
2828#define TreeView_GetLineColor(hwnd) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00002829 (COLORREF)SNDMSGA((hwnd), TVM_GETLINECOLOR, 0, 0)
Alex Prieme6e71ad1999-11-28 19:50:01 +00002830
Robert Shearmanead9e562004-08-25 02:14:28 +00002831#define TreeView_MapAccIDToHTREEITEM(hwnd, id) \
2832 (HTREEITEM)SNDMSG((hwnd), TVM_MAPACCIDTOHTREEITEM, id, 0)
2833
2834#define TreeView_MapHTREEITEMToAccID(hwnd, htreeitem) \
2835 (UINT)SNDMSG((hwnd), TVM_MAPHTREEITEMTOACCID, (WPARAM)htreeitem, 0)
Alex Prieme6e71ad1999-11-28 19:50:01 +00002836
Alexandre Julliard642d3131998-07-12 19:29:36 +00002837
2838/* Listview control */
2839
Alexandre Julliarda3960291999-02-26 11:11:13 +00002840#define WC_LISTVIEWA "SysListView32"
Dmitry Timoshkova9c057f2002-09-16 19:29:36 +00002841#if defined(__GNUC__)
2842# define WC_LISTVIEWW (const WCHAR []){ 'S','y','s', \
2843 'L','i','s','t','V','i','e','w','3','2',0 }
2844#elif defined(_MSC_VER)
2845# define WC_LISTVIEWW L"SysListView32"
2846#else
Jon Griffiths7a6bad82001-01-22 02:13:58 +00002847static const WCHAR WC_LISTVIEWW[] = { 'S','y','s',
2848 'L','i','s','t','V','i','e','w','3','2',0 };
Dmitry Timoshkova9c057f2002-09-16 19:29:36 +00002849#endif
Alexandre Julliard642d3131998-07-12 19:29:36 +00002850#define WC_LISTVIEW WINELIB_NAME_AW(WC_LISTVIEW)
2851
Chris Morgan47a6f312000-06-04 01:34:48 +00002852#define LVSCW_AUTOSIZE -1
2853#define LVSCW_AUTOSIZE_USEHEADER -2
2854
Alexandre Julliard85ed45e1998-08-22 19:03:56 +00002855#define LVS_ICON 0x0000
2856#define LVS_REPORT 0x0001
2857#define LVS_SMALLICON 0x0002
2858#define LVS_LIST 0x0003
2859#define LVS_TYPEMASK 0x0003
2860#define LVS_SINGLESEL 0x0004
2861#define LVS_SHOWSELALWAYS 0x0008
2862#define LVS_SORTASCENDING 0x0010
2863#define LVS_SORTDESCENDING 0x0020
2864#define LVS_SHAREIMAGELISTS 0x0040
2865#define LVS_NOLABELWRAP 0x0080
2866#define LVS_AUTOARRANGE 0x0100
2867#define LVS_EDITLABELS 0x0200
2868#define LVS_OWNERDATA 0x1000
2869#define LVS_NOSCROLL 0x2000
2870#define LVS_TYPESTYLEMASK 0xfc00
2871#define LVS_ALIGNTOP 0x0000
2872#define LVS_ALIGNLEFT 0x0800
2873#define LVS_ALIGNMASK 0x0c00
2874#define LVS_OWNERDRAWFIXED 0x0400
2875#define LVS_NOCOLUMNHEADER 0x4000
2876#define LVS_NOSORTHEADER 0x8000
2877
Ian Schmidt2d127002000-02-26 18:30:12 +00002878#define LVS_EX_GRIDLINES 0x0001
2879#define LVS_EX_SUBITEMIMAGES 0x0002
2880#define LVS_EX_CHECKBOXES 0x0004
2881#define LVS_EX_TRACKSELECT 0x0008
2882#define LVS_EX_HEADERDRAGDROP 0x0010
2883#define LVS_EX_FULLROWSELECT 0x0020
2884#define LVS_EX_ONECLICKACTIVATE 0x0040
2885#define LVS_EX_TWOCLICKACTIVATE 0x0080
2886#define LVS_EX_FLATSB 0x0100
2887#define LVS_EX_REGIONAL 0x0200
2888#define LVS_EX_INFOTIP 0x0400
2889#define LVS_EX_UNDERLINEHOT 0x0800
2890#define LVS_EX_UNDERLINECOLD 0x1000
2891#define LVS_EX_MULTIWORKAREAS 0x2000
Robert Shearmanead9e562004-08-25 02:14:28 +00002892#define LVS_EX_LABELTIP 0x4000
2893#define LVS_EX_BORDERSELECT 0x8000
2894#define LVS_EX_DOUBLEBUFFER 0x00010000
2895#define LVS_EX_HIDELABELS 0x00020000
2896#define LVS_EX_SINGLEROW 0x00040000
2897#define LVS_EX_SNAPTOGRID 0x00080000
2898#define LVS_EX_SIMPLESELECT 0x00100000
Ian Schmidt2d127002000-02-26 18:30:12 +00002899
Alexandre Julliard85ed45e1998-08-22 19:03:56 +00002900#define LVCF_FMT 0x0001
2901#define LVCF_WIDTH 0x0002
2902#define LVCF_TEXT 0x0004
2903#define LVCF_SUBITEM 0x0008
2904#define LVCF_IMAGE 0x0010
2905#define LVCF_ORDER 0x0020
2906
Alexandre Julliard85ed45e1998-08-22 19:03:56 +00002907#define LVCFMT_LEFT 0x0000
2908#define LVCFMT_RIGHT 0x0001
2909#define LVCFMT_CENTER 0x0002
2910#define LVCFMT_JUSTIFYMASK 0x0003
2911#define LVCFMT_IMAGE 0x0800
2912#define LVCFMT_BITMAP_ON_RIGHT 0x1000
2913#define LVCFMT_COL_HAS_IMAGES 0x8000
2914
Alexandre Julliard85ed45e1998-08-22 19:03:56 +00002915#define LVSIL_NORMAL 0
2916#define LVSIL_SMALL 1
2917#define LVSIL_STATE 2
2918
Ian Schmidt2d127002000-02-26 18:30:12 +00002919/* following 2 flags only for LVS_OWNERDATA listviews */
2920/* and only in report or list mode */
2921#define LVSICF_NOINVALIDATEALL 0x0001
2922#define LVSICF_NOSCROLL 0x0002
2923
2924
Luc Tourangeauce2b1411999-02-17 12:58:48 +00002925#define LVFI_PARAM 0X0001
2926#define LVFI_STRING 0X0002
2927#define LVFI_PARTIAL 0X0008
Vincent Béron9a624912002-05-31 23:06:46 +00002928#define LVFI_WRAP 0X0020
Luc Tourangeauce2b1411999-02-17 12:58:48 +00002929#define LVFI_NEARESTXY 0X0040
2930
Alexandre Julliard85ed45e1998-08-22 19:03:56 +00002931#define LVIF_TEXT 0x0001
2932#define LVIF_IMAGE 0x0002
2933#define LVIF_PARAM 0x0004
2934#define LVIF_STATE 0x0008
2935#define LVIF_INDENT 0x0010
Adam Gundy06d610e2003-05-02 20:14:33 +00002936#define LVIF_GROUPID 0x0100
2937#define LVIF_COLUMNS 0x0200
Alexandre Julliard85ed45e1998-08-22 19:03:56 +00002938#define LVIF_NORECOMPUTE 0x0800
Luc Tourangeau4d6df2c1999-03-12 17:31:08 +00002939#define LVIF_DI_SETITEM 0x1000
Alexandre Julliard85ed45e1998-08-22 19:03:56 +00002940
Luc Tourangeauce2b1411999-02-17 12:58:48 +00002941#define LVIR_BOUNDS 0x0000
Luc Tourangeauce2b1411999-02-17 12:58:48 +00002942#define LVIR_ICON 0x0001
Andreas Mohr02b690d2004-11-19 18:12:12 +00002943#define LVIR_LABEL 0x0002
Vincent Béron9a624912002-05-31 23:06:46 +00002944#define LVIR_SELECTBOUNDS 0x0003
Luc Tourangeauce2b1411999-02-17 12:58:48 +00002945
Alexandre Julliard85ed45e1998-08-22 19:03:56 +00002946#define LVIS_FOCUSED 0x0001
2947#define LVIS_SELECTED 0x0002
2948#define LVIS_CUT 0x0004
2949#define LVIS_DROPHILITED 0x0008
2950#define LVIS_ACTIVATING 0x0020
2951
2952#define LVIS_OVERLAYMASK 0x0F00
2953#define LVIS_STATEIMAGEMASK 0xF000
2954
Eric Kohl9d8e8641998-10-24 10:49:27 +00002955#define LVNI_ALL 0x0000
2956#define LVNI_FOCUSED 0x0001
2957#define LVNI_SELECTED 0x0002
2958#define LVNI_CUT 0x0004
2959#define LVNI_DROPHILITED 0x0008
2960
2961#define LVNI_ABOVE 0x0100
2962#define LVNI_BELOW 0x0200
2963#define LVNI_TOLEFT 0x0400
2964#define LVNI_TORIGHT 0x0800
2965
Eric Kohla8670301998-11-08 11:30:27 +00002966#define LVHT_NOWHERE 0x0001
2967#define LVHT_ONITEMICON 0x0002
2968#define LVHT_ONITEMLABEL 0x0004
2969#define LVHT_ONITEMSTATEICON 0x0008
2970#define LVHT_ONITEM (LVHT_ONITEMICON|LVHT_ONITEMLABEL|LVHT_ONITEMSTATEICON)
2971
2972#define LVHT_ABOVE 0x0008
2973#define LVHT_BELOW 0x0010
2974#define LVHT_TORIGHT 0x0020
2975#define LVHT_TOLEFT 0x0040
2976
Robert Shearmanead9e562004-08-25 02:14:28 +00002977#define LV_VIEW_ICON 0x0000
2978#define LV_VIEW_DETAILS 0x0001
2979#define LV_VIEW_SMALLICON 0x0002
2980#define LV_VIEW_LIST 0x0003
2981#define LV_VIEW_TILE 0x0004
2982#define LV_VIEW_MAX 0x0004
2983
2984#define LVGF_NONE 0x00000000
2985#define LVGF_HEADER 0x00000001
2986#define LVGF_FOOTER 0x00000002
2987#define LVGF_STATE 0x00000004
2988#define LVGF_ALIGN 0x00000008
2989#define LVGF_GROUPID 0x00000010
2990
2991#define LVGS_NORMAL 0x00000000
2992#define LVGS_COLLAPSED 0x00000001
2993#define LVGS_HIDDEN 0x00000002
2994
2995#define LVGA_HEADER_LEFT 0x00000001
2996#define LVGA_HEADER_CENTER 0x00000002
2997#define LVGA_HEADER_RIGHT 0x00000004
2998#define LVGA_FOOTER_LEFT 0x00000008
2999#define LVGA_FOOTER_CENTER 0x00000010
3000#define LVGA_FOOTER_RIGHT 0x00000020
3001
3002#define LVGMF_NONE 0x00000000
3003#define LVGMF_BORDERSIZE 0x00000001
3004#define LVGMF_BORDERCOLOR 0x00000002
3005#define LVGMF_TEXTCOLOR 0x00000004
3006
3007#define LVTVIF_AUTOSIZE 0x00000000
3008#define LVTVIF_FIXEDWIDTH 0x00000001
3009#define LVTVIF_FIXEDHEIGHT 0x00000002
3010#define LVTVIF_FIXEDSIZE 0x00000003
3011
3012#define LVTVIM_TILESIZE 0x00000001
3013#define LVTVIM_COLUMNS 0x00000002
3014#define LVTVIM_LABELMARGIN 0x00000004
3015
3016#define LVIM_AFTER 0x00000001
3017
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003018#define LVM_FIRST 0x1000
3019#define LVM_GETBKCOLOR (LVM_FIRST+0)
3020#define LVM_SETBKCOLOR (LVM_FIRST+1)
3021#define LVM_GETIMAGELIST (LVM_FIRST+2)
3022#define LVM_SETIMAGELIST (LVM_FIRST+3)
3023#define LVM_GETITEMCOUNT (LVM_FIRST+4)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00003024#define LVM_GETITEMA (LVM_FIRST+5)
3025#define LVM_GETITEMW (LVM_FIRST+75)
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003026#define LVM_GETITEM WINELIB_NAME_AW(LVM_GETITEM)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00003027#define LVM_SETITEMA (LVM_FIRST+6)
3028#define LVM_SETITEMW (LVM_FIRST+76)
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003029#define LVM_SETITEM WINELIB_NAME_AW(LVM_SETITEM)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00003030#define LVM_INSERTITEMA (LVM_FIRST+7)
3031#define LVM_INSERTITEMW (LVM_FIRST+77)
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003032#define LVM_INSERTITEM WINELIB_NAME_AW(LVM_INSERTITEM)
3033#define LVM_DELETEITEM (LVM_FIRST+8)
3034#define LVM_DELETEALLITEMS (LVM_FIRST+9)
3035#define LVM_GETCALLBACKMASK (LVM_FIRST+10)
3036#define LVM_SETCALLBACKMASK (LVM_FIRST+11)
3037#define LVM_GETNEXTITEM (LVM_FIRST+12)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00003038#define LVM_FINDITEMA (LVM_FIRST+13)
3039#define LVM_FINDITEMW (LVM_FIRST+83)
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003040#define LVM_FINDITEM WINELIB_NAME_AW(LVM_FINDITEM)
3041#define LVM_GETITEMRECT (LVM_FIRST+14)
Alexandre Julliard73cc3ba1999-03-13 17:12:07 +00003042#define LVM_SETITEMPOSITION (LVM_FIRST+15)
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003043#define LVM_GETITEMPOSITION (LVM_FIRST+16)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00003044#define LVM_GETSTRINGWIDTHA (LVM_FIRST+17)
3045#define LVM_GETSTRINGWIDTHW (LVM_FIRST+87)
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003046#define LVM_GETSTRINGWIDTH WINELIB_NAME_AW(LVM_GETSTRINGWIDTH)
3047#define LVM_HITTEST (LVM_FIRST+18)
3048#define LVM_ENSUREVISIBLE (LVM_FIRST+19)
3049#define LVM_SCROLL (LVM_FIRST+20)
3050#define LVM_REDRAWITEMS (LVM_FIRST+21)
3051#define LVM_ARRANGE (LVM_FIRST+22)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00003052#define LVM_EDITLABELA (LVM_FIRST+23)
3053#define LVM_EDITLABELW (LVM_FIRST+118)
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003054#define LVM_EDITLABEL WINELIB_NAME_AW(LVM_EDITLABEL)
3055#define LVM_GETEDITCONTROL (LVM_FIRST+24)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00003056#define LVM_GETCOLUMNA (LVM_FIRST+25)
3057#define LVM_GETCOLUMNW (LVM_FIRST+95)
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003058#define LVM_GETCOLUMN WINELIB_NAME_AW(LVM_GETCOLUMN)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00003059#define LVM_SETCOLUMNA (LVM_FIRST+26)
3060#define LVM_SETCOLUMNW (LVM_FIRST+96)
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003061#define LVM_SETCOLUMN WINELIB_NAME_AW(LVM_SETCOLUMN)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00003062#define LVM_INSERTCOLUMNA (LVM_FIRST+27)
3063#define LVM_INSERTCOLUMNW (LVM_FIRST+97)
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003064#define LVM_INSERTCOLUMN WINELIB_NAME_AW(LVM_INSERTCOLUMN)
3065#define LVM_DELETECOLUMN (LVM_FIRST+28)
3066#define LVM_GETCOLUMNWIDTH (LVM_FIRST+29)
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00003067#define LVM_SETCOLUMNWIDTH (LVM_FIRST+30)
3068#define LVM_GETHEADER (LVM_FIRST+31)
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003069
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00003070#define LVM_CREATEDRAGIMAGE (LVM_FIRST+33)
3071#define LVM_GETVIEWRECT (LVM_FIRST+34)
3072#define LVM_GETTEXTCOLOR (LVM_FIRST+35)
3073#define LVM_SETTEXTCOLOR (LVM_FIRST+36)
3074#define LVM_GETTEXTBKCOLOR (LVM_FIRST+37)
3075#define LVM_SETTEXTBKCOLOR (LVM_FIRST+38)
3076#define LVM_GETTOPINDEX (LVM_FIRST+39)
3077#define LVM_GETCOUNTPERPAGE (LVM_FIRST+40)
3078#define LVM_GETORIGIN (LVM_FIRST+41)
3079#define LVM_UPDATE (LVM_FIRST+42)
3080#define LVM_SETITEMSTATE (LVM_FIRST+43)
3081#define LVM_GETITEMSTATE (LVM_FIRST+44)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00003082#define LVM_GETITEMTEXTA (LVM_FIRST+45)
3083#define LVM_GETITEMTEXTW (LVM_FIRST+115)
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00003084#define LVM_GETITEMTEXT WINELIB_NAME_AW(LVM_GETITEMTEXT)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00003085#define LVM_SETITEMTEXTA (LVM_FIRST+46)
3086#define LVM_SETITEMTEXTW (LVM_FIRST+116)
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00003087#define LVM_SETITEMTEXT WINELIB_NAME_AW(LVM_SETITEMTEXT)
3088#define LVM_SETITEMCOUNT (LVM_FIRST+47)
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003089#define LVM_SORTITEMS (LVM_FIRST+48)
Alexandre Julliard73cc3ba1999-03-13 17:12:07 +00003090#define LVM_SETITEMPOSITION32 (LVM_FIRST+49)
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003091#define LVM_GETSELECTEDCOUNT (LVM_FIRST+50)
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00003092#define LVM_GETITEMSPACING (LVM_FIRST+51)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00003093#define LVM_GETISEARCHSTRINGA (LVM_FIRST+52)
3094#define LVM_GETISEARCHSTRINGW (LVM_FIRST+117)
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00003095#define LVM_GETISEARCHSTRING WINELIB_NAME_AW(LVM_GETISEARCHSTRING)
3096#define LVM_SETICONSPACING (LVM_FIRST+53)
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003097#define LVM_SETEXTENDEDLISTVIEWSTYLE (LVM_FIRST+54)
3098#define LVM_GETEXTENDEDLISTVIEWSTYLE (LVM_FIRST+55)
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00003099#define LVM_GETSUBITEMRECT (LVM_FIRST+56)
3100#define LVM_SUBITEMHITTEST (LVM_FIRST+57)
3101#define LVM_SETCOLUMNORDERARRAY (LVM_FIRST+58)
3102#define LVM_GETCOLUMNORDERARRAY (LVM_FIRST+59)
3103#define LVM_SETHOTITEM (LVM_FIRST+60)
3104#define LVM_GETHOTITEM (LVM_FIRST+61)
3105#define LVM_SETHOTCURSOR (LVM_FIRST+62)
3106#define LVM_GETHOTCURSOR (LVM_FIRST+63)
3107#define LVM_APPROXIMATEVIEWRECT (LVM_FIRST+64)
3108#define LVM_SETWORKAREAS (LVM_FIRST+65)
3109#define LVM_GETSELECTIONMARK (LVM_FIRST+66)
3110#define LVM_SETSELECTIONMARK (LVM_FIRST+67)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00003111#define LVM_SETBKIMAGEA (LVM_FIRST+68)
3112#define LVM_SETBKIMAGEW (LVM_FIRST+138)
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00003113#define LVM_SETBKIMAGE WINELIB_NAME_AW(LVM_SETBKIMAGE)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00003114#define LVM_GETBKIMAGEA (LVM_FIRST+69)
3115#define LVM_GETBKIMAGEW (LVM_FIRST+139)
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00003116#define LVM_GETBKIMAGE WINELIB_NAME_AW(LVM_GETBKIMAGE)
3117#define LVM_GETWORKAREAS (LVM_FIRST+70)
3118#define LVM_SETHOVERTIME (LVM_FIRST+71)
3119#define LVM_GETHOVERTIME (LVM_FIRST+72)
3120#define LVM_GETNUMBEROFWORKAREAS (LVM_FIRST+73)
3121#define LVM_SETTOOLTIPS (LVM_FIRST+74)
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00003122#define LVM_GETTOOLTIPS (LVM_FIRST+78)
Alexandre Julliardb5753592002-08-27 22:32:36 +00003123#define LVM_GETUNICODEFORMAT (CCM_GETUNICODEFORMAT)
3124#define LVM_SETUNICODEFORMAT (CCM_SETUNICODEFORMAT)
Robert Shearmanead9e562004-08-25 02:14:28 +00003125#define LVM_SETSELECTEDCOLUMN (LVM_FIRST + 140)
3126#define LVM_SETTILEWIDTH (LVM_FIRST + 141)
3127#define LVM_SETVIEW (LVM_FIRST + 142)
3128#define LVM_GETVIEW (LVM_FIRST + 143)
3129#define LVM_INSERTGROUP (LVM_FIRST + 145)
3130#define LVM_SETGROUPINFO (LVM_FIRST + 147)
3131#define LVM_GETGROUPINFO (LVM_FIRST + 149)
3132#define LVM_REMOVEGROUP (LVM_FIRST + 150)
3133#define LVM_MOVEGROUP (LVM_FIRST + 151)
3134#define LVM_MOVEITEMTOGROUP (LVM_FIRST + 154)
3135#define LVM_SETGROUPMETRICS (LVM_FIRST + 155)
3136#define LVM_GETGROUPMETRICS (LVM_FIRST + 156)
3137#define LVM_ENABLEGROUPVIEW (LVM_FIRST + 157)
3138#define LVM_SORTGROUPS (LVM_FIRST + 158)
3139#define LVM_INSERTGROUPSORTED (LVM_FIRST + 159)
3140#define LVM_REMOVEALLGROUPS (LVM_FIRST + 160)
3141#define LVM_HASGROUP (LVM_FIRST + 161)
3142#define LVM_SETTILEVIEWINFO (LVM_FIRST + 162)
3143#define LVM_GETTILEVIEWINFO (LVM_FIRST + 163)
3144#define LVM_SETTILEINFO (LVM_FIRST + 164)
3145#define LVM_GETTILEINFO (LVM_FIRST + 165)
3146#define LVM_SETINSERTMARK (LVM_FIRST + 166)
3147#define LVM_GETINSERTMARK (LVM_FIRST + 167)
3148#define LVM_INSERTMARKHITTEST (LVM_FIRST + 168)
3149#define LVM_GETINSERTMARKRECT (LVM_FIRST + 169)
3150#define LVM_SETINSERTMARKCOLOR (LVM_FIRST + 170)
3151#define LVM_GETINSERTMARKCOLOR (LVM_FIRST + 171)
3152#define LVM_SETINFOTIP (LVM_FIRST + 173)
3153#define LVM_GETSELECTEDCOLUMN (LVM_FIRST + 174)
3154#define LVM_ISGROUPVIEWENABLED (LVM_FIRST + 175)
3155#define LVM_GETOUTLINECOLOR (LVM_FIRST + 176)
3156#define LVM_SETOUTLINECOLOR (LVM_FIRST + 177)
3157#define LVM_CANCELEDITLABEL (LVM_FIRST + 179)
3158#define LVM_MAPINDEXTOID (LVM_FIRST + 180)
3159#define LVM_MAPIDTOINDEX (LVM_FIRST + 181)
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003160
3161#define LVN_FIRST (0U-100U)
3162#define LVN_LAST (0U-199U)
3163#define LVN_ITEMCHANGING (LVN_FIRST-0)
3164#define LVN_ITEMCHANGED (LVN_FIRST-1)
3165#define LVN_INSERTITEM (LVN_FIRST-2)
3166#define LVN_DELETEITEM (LVN_FIRST-3)
3167#define LVN_DELETEALLITEMS (LVN_FIRST-4)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00003168#define LVN_BEGINLABELEDITA (LVN_FIRST-5)
3169#define LVN_BEGINLABELEDITW (LVN_FIRST-75)
3170#define LVN_BEGINLABELEDIT WINELIB_NAME_AW(LVN_BEGINLABELEDIT)
3171#define LVN_ENDLABELEDITA (LVN_FIRST-6)
3172#define LVN_ENDLABELEDITW (LVN_FIRST-76)
3173#define LVN_ENDLABELEDIT WINELIB_NAME_AW(LVN_ENDLABELEDIT)
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003174#define LVN_COLUMNCLICK (LVN_FIRST-8)
3175#define LVN_BEGINDRAG (LVN_FIRST-9)
3176#define LVN_BEGINRDRAG (LVN_FIRST-11)
3177#define LVN_ODCACHEHINT (LVN_FIRST-13)
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003178#define LVN_ITEMACTIVATE (LVN_FIRST-14)
3179#define LVN_ODSTATECHANGED (LVN_FIRST-15)
3180#define LVN_HOTTRACK (LVN_FIRST-21)
Eric Kohl2b51c941999-11-23 23:32:03 +00003181#define LVN_ODFINDITEMA (LVN_FIRST-52)
3182#define LVN_ODFINDITEMW (LVN_FIRST-79)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00003183#define LVN_ODFINDITEM WINELIB_NAME_AW(LVN_ODFINDITEM)
3184#define LVN_GETDISPINFOA (LVN_FIRST-50)
3185#define LVN_GETDISPINFOW (LVN_FIRST-77)
3186#define LVN_GETDISPINFO WINELIB_NAME_AW(LVN_GETDISPINFO)
3187#define LVN_SETDISPINFOA (LVN_FIRST-51)
3188#define LVN_SETDISPINFOW (LVN_FIRST-78)
3189#define LVN_SETDISPINFO WINELIB_NAME_AW(LVN_SETDISPINFO)
Eric Kohl2b51c941999-11-23 23:32:03 +00003190#define LVN_KEYDOWN (LVN_FIRST-55)
Francois Gougetf12dbd02001-01-22 19:26:07 +00003191#define LVN_MARQUEEBEGIN (LVN_FIRST-56)
3192#define LVN_GETINFOTIPA (LVN_FIRST-57)
3193#define LVN_GETINFOTIPW (LVN_FIRST-58)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00003194#define LVN_GETINFOTIP WINELIB_NAME_AW(LVN_GETINFOTIP)
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003195
Kouji Sasaki7038bb22005-05-18 09:43:23 +00003196#define LVA_DEFAULT 0x0000
3197#define LVA_ALIGNLEFT 0x0001
Luc Tourangeauce2b1411999-02-17 12:58:48 +00003198#define LVA_ALIGNTOP 0x0002
3199#define LVA_SNAPTOGRID 0x0005
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003200
3201typedef struct tagLVITEMA
3202{
Alexandre Julliarda3960291999-02-26 11:11:13 +00003203 UINT mask;
3204 INT iItem;
3205 INT iSubItem;
3206 UINT state;
3207 UINT stateMask;
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003208 LPSTR pszText;
Alexandre Julliarda3960291999-02-26 11:11:13 +00003209 INT cchTextMax;
3210 INT iImage;
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003211 LPARAM lParam;
Alexandre Julliarda3960291999-02-26 11:11:13 +00003212 INT iIndent; /* (_WIN32_IE >= 0x0300) */
Dimitrie O. Paun9a01be42002-10-17 01:19:45 +00003213 int iGroupId; /* (_WIN32_IE >= 0x560) */
3214 UINT cColumns; /* (_WIN32_IE >= 0x560) */
3215 PUINT puColumns; /* (_WIN32_IE >= 0x560) */
Alexandre Julliarda3960291999-02-26 11:11:13 +00003216} LVITEMA, *LPLVITEMA;
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003217
3218typedef struct tagLVITEMW
3219{
Alexandre Julliarda3960291999-02-26 11:11:13 +00003220 UINT mask;
3221 INT iItem;
3222 INT iSubItem;
3223 UINT state;
3224 UINT stateMask;
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003225 LPWSTR pszText;
Alexandre Julliarda3960291999-02-26 11:11:13 +00003226 INT cchTextMax;
3227 INT iImage;
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003228 LPARAM lParam;
Alexandre Julliarda3960291999-02-26 11:11:13 +00003229 INT iIndent; /* (_WIN32_IE >= 0x0300) */
Dimitrie O. Paun9a01be42002-10-17 01:19:45 +00003230 int iGroupId; /* (_WIN32_IE >= 0x560) */
3231 UINT cColumns; /* (_WIN32_IE >= 0x560) */
3232 PUINT puColumns; /* (_WIN32_IE >= 0x560) */
Alexandre Julliarda3960291999-02-26 11:11:13 +00003233} LVITEMW, *LPLVITEMW;
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003234
Dimitrie O. Paun9a01be42002-10-17 01:19:45 +00003235#define LVITEM WINELIB_NAME_AW(LVITEM)
3236#define LPLVITEM WINELIB_NAME_AW(LPLVITEM)
3237
3238#define LVITEM_V1_SIZEA CCSIZEOF_STRUCT(LVITEMA, lParam)
3239#define LVITEM_V1_SIZEW CCSIZEOF_STRUCT(LVITEMW, lParam)
3240#define LVITEM_V1_SIZE WINELIB_NAME_AW(LVITEM_V1_SIZE)
3241
Dimitrie O. Paun900ee972002-12-19 21:13:15 +00003242#define LV_ITEM LVITEM
3243#define LV_ITEMA LVITEMA
3244#define LV_ITEMW LVITEMW
Dimitrie O. Paun9a01be42002-10-17 01:19:45 +00003245
Mike McCormack03283bf2006-03-19 12:06:54 +09003246typedef struct LVSETINFOTIP
Dimitrie O. Paun9a01be42002-10-17 01:19:45 +00003247{
3248 UINT cbSize;
3249 DWORD dwFlags;
3250 LPWSTR pszText;
3251 int iItem;
3252 int iSubItem;
Mike McCormack03283bf2006-03-19 12:06:54 +09003253} LVSETINFOTIP, *PLVSETINFOTIP;
Dimitrie O. Paun9a01be42002-10-17 01:19:45 +00003254
Ian Schmidt2d127002000-02-26 18:30:12 +00003255/* ListView background image structs and constants
3256 For _WIN32_IE version 0x400 and later. */
3257
3258typedef struct tagLVBKIMAGEA
3259{
3260 ULONG ulFlags;
3261 HBITMAP hbm;
3262 LPSTR pszImage;
3263 UINT cchImageMax;
3264 int xOffsetPercent;
3265 int yOffsetPercent;
3266} LVBKIMAGEA, *LPLVBKIMAGEA;
3267
3268typedef struct tagLVBKIMAGEW
3269{
3270 ULONG ulFlags;
3271 HBITMAP hbm;
3272 LPWSTR pszImage;
3273 UINT cchImageMax;
3274 int xOffsetPercent;
3275 int yOffsetPercent;
3276} LVBKIMAGEW, *LPLVBKIMAGEW;
3277
3278#define LVBKIMAGE WINELIB_NAME_AW(LVBKIMAGE)
Francois Gougete19c60a2001-02-12 19:39:58 +00003279#define LPLVBKIMAGE WINELIB_NAME_AW(LPLVBKIMAGE)
Ian Schmidt2d127002000-02-26 18:30:12 +00003280
3281#define LVBKIF_SOURCE_NONE 0x00000000
3282#define LVBKIF_SOURCE_HBITMAP 0x00000001
3283#define LVBKIF_SOURCE_URL 0x00000002
3284#define LVBKIF_SOURCE_MASK 0x00000003
3285#define LVBKIF_STYLE_NORMAL 0x00000000
3286#define LVBKIF_STYLE_TILE 0x00000010
3287#define LVBKIF_STYLE_MASK 0x00000010
Robert Shearmanead9e562004-08-25 02:14:28 +00003288#define LVBKIF_FLAG_TILEOFFSET 0x00000100
3289#define LVBKIF_TYPE_WATERMARK 0x10000000
Ian Schmidt2d127002000-02-26 18:30:12 +00003290
3291#define ListView_SetBkImage(hwnd, plvbki) \
3292 (BOOL)SNDMSG((hwnd), LVM_SETBKIMAGE, 0, (LPARAM)plvbki)
3293
3294#define ListView_GetBkImage(hwnd, plvbki) \
3295 (BOOL)SNDMSG((hwnd), LVM_GETBKIMAGE, 0, (LPARAM)plvbki)
3296
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003297typedef struct tagLVCOLUMNA
3298{
Alexandre Julliarda3960291999-02-26 11:11:13 +00003299 UINT mask;
3300 INT fmt;
3301 INT cx;
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003302 LPSTR pszText;
Alexandre Julliarda3960291999-02-26 11:11:13 +00003303 INT cchTextMax;
3304 INT iSubItem;
3305 INT iImage; /* (_WIN32_IE >= 0x0300) */
3306 INT iOrder; /* (_WIN32_IE >= 0x0300) */
3307} LVCOLUMNA, *LPLVCOLUMNA;
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003308
3309typedef struct tagLVCOLUMNW
3310{
Alexandre Julliarda3960291999-02-26 11:11:13 +00003311 UINT mask;
3312 INT fmt;
3313 INT cx;
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003314 LPWSTR pszText;
Alexandre Julliarda3960291999-02-26 11:11:13 +00003315 INT cchTextMax;
3316 INT iSubItem;
3317 INT iImage; /* (_WIN32_IE >= 0x0300) */
3318 INT iOrder; /* (_WIN32_IE >= 0x0300) */
3319} LVCOLUMNW, *LPLVCOLUMNW;
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003320
3321#define LVCOLUMN WINELIB_NAME_AW(LVCOLUMN)
3322#define LPLVCOLUMN WINELIB_NAME_AW(LPLVCOLUMN)
3323
Alexandre Julliarda3960291999-02-26 11:11:13 +00003324#define LVCOLUMN_V1_SIZEA CCSIZEOF_STRUCT(LVCOLUMNA, iSubItem)
3325#define LVCOLUMN_V1_SIZEW CCSIZEOF_STRUCT(LVCOLUMNW, iSubItem)
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003326#define LVCOLUMN_V1_SIZE WINELIB_NAME_AW(LVCOLUMN_V1_SIZE)
3327
3328#define LV_COLUMN LVCOLUMN
3329
Alexandre Julliard85ed45e1998-08-22 19:03:56 +00003330
3331typedef struct tagNMLISTVIEW
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003332{
Dimitrie O. Paun9a01be42002-10-17 01:19:45 +00003333 NMHDR hdr;
3334 INT iItem;
3335 INT iSubItem;
3336 UINT uNewState;
3337 UINT uOldState;
3338 UINT uChanged;
Alexandre Julliarda3960291999-02-26 11:11:13 +00003339 POINT ptAction;
Alexandre Julliard85ed45e1998-08-22 19:03:56 +00003340 LPARAM lParam;
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003341} NMLISTVIEW, *LPNMLISTVIEW;
3342
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003343#define NM_LISTVIEW NMLISTVIEW
Francois Gougete19c60a2001-02-12 19:39:58 +00003344#define LPNM_LISTVIEW LPNMLISTVIEW
Alexandre Julliard85ed45e1998-08-22 19:03:56 +00003345
Francois Gougete19c60a2001-02-12 19:39:58 +00003346typedef struct tagNMITEMACTIVATE
3347{
3348 NMHDR hdr;
3349 int iItem;
3350 int iSubItem;
3351 UINT uNewState;
3352 UINT uOldState;
3353 UINT uChanged;
3354 POINT ptAction;
3355 LPARAM lParam;
3356 UINT uKeyFlags;
3357} NMITEMACTIVATE, *LPNMITEMACTIVATE;
Alexandre Julliard85ed45e1998-08-22 19:03:56 +00003358
Maxime Bellengé4dc75a52003-09-22 19:47:42 +00003359#define LVKF_ALT 0x0001
3360#define LVKF_CONTROL 0x0002
3361#define LVKF_SHIFT 0x0004
3362
Juraj Hercek690f89a2003-04-08 20:49:01 +00003363typedef struct tagLVDISPINFO
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003364{
Dimitrie O. Paun9a01be42002-10-17 01:19:45 +00003365 NMHDR hdr;
Alexandre Julliarda3960291999-02-26 11:11:13 +00003366 LVITEMA item;
3367} NMLVDISPINFOA, *LPNMLVDISPINFOA;
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003368
3369typedef struct tagLVDISPINFOW
3370{
Dimitrie O. Paun9a01be42002-10-17 01:19:45 +00003371 NMHDR hdr;
Alexandre Julliarda3960291999-02-26 11:11:13 +00003372 LVITEMW item;
3373} NMLVDISPINFOW, *LPNMLVDISPINFOW;
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003374
3375#define NMLVDISPINFO WINELIB_NAME_AW(NMLVDISPINFO)
3376#define LPNMLVDISPINFO WINELIB_NAME_AW(LPNMLVDISPINFO)
Alexandre Julliard85ed45e1998-08-22 19:03:56 +00003377
Dimitrie O. Paun900ee972002-12-19 21:13:15 +00003378#define LV_DISPINFO NMLVDISPINFO
3379#define LV_DISPINFOA NMLVDISPINFOA
3380#define LV_DISPINFOW NMLVDISPINFOW
Alexandre Julliard85ed45e1998-08-22 19:03:56 +00003381
Dimitrie O. Paun53f9c212003-08-28 21:43:34 +00003382#include <pshpack1.h>
Alexandre Julliarde32be241999-02-10 06:43:59 +00003383typedef struct tagLVKEYDOWN
3384{
3385 NMHDR hdr;
3386 WORD wVKey;
Alexandre Julliarda3960291999-02-26 11:11:13 +00003387 UINT flags;
Alexandre Julliarde32be241999-02-10 06:43:59 +00003388} NMLVKEYDOWN, *LPNMLVKEYDOWN;
Dimitrie O. Paun53f9c212003-08-28 21:43:34 +00003389#include <poppack.h>
Alexandre Julliarde32be241999-02-10 06:43:59 +00003390
3391#define LV_KEYDOWN NMLVKEYDOWN
Alexandre Julliard85ed45e1998-08-22 19:03:56 +00003392
Francois Gougete19c60a2001-02-12 19:39:58 +00003393typedef struct tagNMLVGETINFOTIPA
3394{
3395 NMHDR hdr;
3396 DWORD dwFlags;
3397 LPSTR pszText;
3398 int cchTextMax;
3399 int iItem;
3400 int iSubItem;
3401 LPARAM lParam;
3402} NMLVGETINFOTIPA, *LPNMLVGETINFOTIPA;
3403
3404typedef struct tagNMLVGETINFOTIPW
3405{
3406 NMHDR hdr;
3407 DWORD dwFlags;
3408 LPWSTR pszText;
3409 int cchTextMax;
3410 int iItem;
3411 int iSubItem;
3412 LPARAM lParam;
3413} NMLVGETINFOTIPW, *LPNMLVGETINFOTIPW;
3414
3415#define NMLVGETINFOTIP WINELIB_NAME_AW(NMLVGETINFOTIP)
3416#define LPNMLVGETINFOTIP WINELIB_NAME_AW(LPNMLVGETINFOTIP)
3417
Eric Kohla8670301998-11-08 11:30:27 +00003418typedef struct tagLVHITTESTINFO
3419{
Alexandre Julliarda3960291999-02-26 11:11:13 +00003420 POINT pt;
3421 UINT flags;
3422 INT iItem;
3423 INT iSubItem;
Eric Kohla8670301998-11-08 11:30:27 +00003424} LVHITTESTINFO, *LPLVHITTESTINFO;
3425
3426#define LV_HITTESTINFO LVHITTESTINFO
3427#define _LV_HITTESTINFO tagLVHITTESTINFO
3428#define LVHITTESTINFO_V1_SIZE CCSIZEOF_STRUCT(LVHITTESTINFO,iItem)
3429
Dimitrie O. Paun9e99d2b2002-01-18 19:05:35 +00003430typedef struct tagLVFINDINFOA
Paul Quinn1beaae51998-12-15 15:38:36 +00003431{
Alexandre Julliarda3960291999-02-26 11:11:13 +00003432 UINT flags;
Paul Quinn1beaae51998-12-15 15:38:36 +00003433 LPCSTR psz;
3434 LPARAM lParam;
Alexandre Julliarda3960291999-02-26 11:11:13 +00003435 POINT pt;
3436 UINT vkDirection;
Dimitrie O. Paun9e99d2b2002-01-18 19:05:35 +00003437} LVFINDINFOA, *LPLVFINDINFOA;
Paul Quinn1beaae51998-12-15 15:38:36 +00003438
Dimitrie O. Paun9e99d2b2002-01-18 19:05:35 +00003439typedef struct tagLVFINDINFOW
3440{
3441 UINT flags;
3442 LPCWSTR psz;
3443 LPARAM lParam;
3444 POINT pt;
3445 UINT vkDirection;
3446} LVFINDINFOW, *LPLVFINDINFOW;
3447
3448#define LVFINDINFO WINELIB_NAME_AW(LVFINDINFO)
3449#define LPLVFINDINFO WINELIB_NAME_AW(LPLVFINDINFO)
Paul Quinn1beaae51998-12-15 15:38:36 +00003450
Dimitrie O. Paun900ee972002-12-19 21:13:15 +00003451#define LV_FINDINFO LVFINDINFO
3452#define LV_FINDINFOA LVFINDINFOA
3453#define LV_FINDINFOW LVFINDINFOW
3454
Dimitrie O. Paun9a01be42002-10-17 01:19:45 +00003455/* Groups relates structures */
3456
James Hawkinsbb47d542005-05-20 09:44:01 +00003457typedef struct LVGROUP
Dimitrie O. Paun9a01be42002-10-17 01:19:45 +00003458{
3459 UINT cbSize;
3460 UINT mask;
3461 LPWSTR pszHeader;
3462 int cchHeader;
James Hawkinsbb47d542005-05-20 09:44:01 +00003463 LPWSTR pszFooter;
3464 int cchFooter;
Dimitrie O. Paun9a01be42002-10-17 01:19:45 +00003465 int iGroupId;
3466 UINT stateMask;
3467 UINT state;
3468 UINT uAlign;
James Hawkinsbb47d542005-05-20 09:44:01 +00003469} LVGROUP, *PLVGROUP;
Dimitrie O. Paun9a01be42002-10-17 01:19:45 +00003470
3471typedef struct LVGROUPMETRICS
3472{
3473 UINT cbSize;
3474 UINT mask;
3475 UINT Left;
3476 UINT Top;
3477 UINT Right;
3478 UINT Bottom;
3479 COLORREF crLeft;
3480 COLORREF crTop;
3481 COLORREF crRight;
3482 COLORREF crBottom;
3483 COLORREF crRightHeader;
3484 COLORREF crFooter;
3485} LVGROUPMETRICS, *PLVGROUPMETRICS;
3486
3487typedef INT (*PFNLVGROUPCOMPARE)(INT, INT, VOID*);
3488
James Hawkinsbb47d542005-05-20 09:44:01 +00003489typedef struct LVINSERTGROUPSORTED
Dimitrie O. Paun9a01be42002-10-17 01:19:45 +00003490{
3491 PFNLVGROUPCOMPARE pfnGroupCompare;
3492 LPVOID *pvData;
James Hawkinsbb47d542005-05-20 09:44:01 +00003493 LVGROUP lvGroup;
3494} LVINSERTGROUPSORTED, *PLVINSERTGROUPSORTED;
Dimitrie O. Paun9a01be42002-10-17 01:19:45 +00003495
3496/* Tile related structures */
3497
Robert Shearmanead9e562004-08-25 02:14:28 +00003498typedef struct LVTILEINFO
Dimitrie O. Paun9a01be42002-10-17 01:19:45 +00003499{
3500 UINT cbSize;
3501 int iItem;
3502 UINT cColumns;
3503 PUINT puColumns;
3504} LVTILEINFO, *PLVTILEINFO;
3505
3506typedef struct LVTILEVIEWINFO
3507{
3508 UINT cbSize;
3509 DWORD dwMask;
3510 DWORD dwFlags;
3511 SIZE sizeTile;
3512 int cLines;
3513 RECT rcLabelMargin;
3514} LVTILEVIEWINFO, *PLVTILEVIEWINFO;
3515
3516typedef struct LVINSERTMARK
3517{
3518 UINT cbSize;
3519 DWORD dwFlags;
3520 int iItem;
3521 DWORD dwReserved;
3522} LVINSERTMARK, *PLVINSERTMARK;
3523
Paul Quinn1beaae51998-12-15 15:38:36 +00003524typedef struct tagTCHITTESTINFO
3525{
Alexandre Julliarda3960291999-02-26 11:11:13 +00003526 POINT pt;
3527 UINT flags;
Paul Quinn1beaae51998-12-15 15:38:36 +00003528} TCHITTESTINFO, *LPTCHITTESTINFO;
3529
3530#define TC_HITTESTINFO TCHITTESTINFO
3531
Patrik Stridvallf94462f2002-01-31 23:22:07 +00003532typedef INT (CALLBACK *PFNLVCOMPARE)(LPARAM, LPARAM, LPARAM);
Alexandre Julliard85ed45e1998-08-22 19:03:56 +00003533
Francois Gougete19c60a2001-02-12 19:39:58 +00003534#define NMLVCUSTOMDRAW_V3_SIZE CCSIZEOF_STRUCT(NMLCUSTOMDRW, clrTextBk)
3535
3536typedef struct tagNMLVCUSTOMDRAW
3537{
3538 NMCUSTOMDRAW nmcd;
3539 COLORREF clrText;
3540 COLORREF clrTextBk;
Dimitrie O. Paun9a01be42002-10-17 01:19:45 +00003541 int iSubItem; /* (_WIN32_IE >= 0x0400) */
3542 DWORD dwItemType; /* (_WIN32_IE >= 0x560) */
3543 COLORREF clrFace; /* (_WIN32_IE >= 0x560) */
3544 int iIconEffect; /* (_WIN32_IE >= 0x560) */
3545 int iIconPhase; /* (_WIN32_IE >= 0x560) */
3546 int iPartId; /* (_WIN32_IE >= 0x560) */
3547 int iStateId; /* (_WIN32_IE >= 0x560) */
3548 RECT rcText; /* (_WIN32_IE >= 0x560) */
3549 UINT uAlign; /* (_WIN32_IE >= 0x560) */
Francois Gougete19c60a2001-02-12 19:39:58 +00003550} NMLVCUSTOMDRAW, *LPNMLVCUSTOMDRAW;
3551
Eric Kohl2b51c941999-11-23 23:32:03 +00003552typedef struct tagNMLVCACHEHINT
3553{
3554 NMHDR hdr;
3555 INT iFrom;
3556 INT iTo;
3557} NMLVCACHEHINT, *LPNMLVCACHEHINT;
3558
3559#define LPNM_CACHEHINT LPNMLVCACHEHINT
3560#define PNM_CACHEHINT LPNMLVCACHEHINT
3561#define NM_CACHEHINT NMLVCACHEHINT
3562
Dimitrie O. Paun9e99d2b2002-01-18 19:05:35 +00003563typedef struct tagNMLVFINDITEMA
Aric Stewarteef99e02000-09-06 19:44:49 +00003564{
Francois Gougete19c60a2001-02-12 19:39:58 +00003565 NMHDR hdr;
3566 int iStart;
Dimitrie O. Paun9e99d2b2002-01-18 19:05:35 +00003567 LVFINDINFOA lvfi;
3568} NMLVFINDITEMA, *LPNMLVFINDITEMA;
Francois Gougete19c60a2001-02-12 19:39:58 +00003569
Dimitrie O. Paun9e99d2b2002-01-18 19:05:35 +00003570typedef struct tagNMLVFINDITEMW
3571{
3572 NMHDR hdr;
3573 int iStart;
3574 LVFINDINFOW lvfi;
3575} NMLVFINDITEMW, *LPNMLVFINDITEMW;
3576
Francois Gouget3826f772002-03-19 02:02:41 +00003577#define NMLVFINDITEM WINELIB_NAME_AW(NMLVFINDITEM)
3578#define LPNMLVFINDITEM WINELIB_NAME_AW(LPNMLVFINDITEM)
3579#define NM_FINDITEM NMLVFINDITEM
3580#define LPNM_FINDITEM LPNMLVFINDITEM
3581#define PNM_FINDITEM LPNMLVFINDITEM
Francois Gougete19c60a2001-02-12 19:39:58 +00003582
3583typedef struct tagNMLVODSTATECHANGE
3584{
3585 NMHDR hdr;
3586 int iFrom;
3587 int iTo;
3588 UINT uNewState;
3589 UINT uOldState;
3590} NMLVODSTATECHANGE, *LPNMLVODSTATECHANGE;
3591
3592#define PNM_ODSTATECHANGE LPNMLVODSTATECHANGE
3593#define LPNM_ODSTATECHANGE LPNMLVODSTATECHANGE
3594#define NM_ODSTATECHANGE NMLVODSTATECHANGE
Matthew Lake18727102000-07-08 18:31:43 +00003595
Dimitrie O. Paun9a01be42002-10-17 01:19:45 +00003596typedef struct NMLVSCROLL
3597{
3598 NMHDR hdr;
3599 int dx;
3600 int dy;
3601} NMLVSCROLL, *LPNMLVSCROLL;
3602
Dimitrie O. Paunf3cd07f2003-02-11 22:15:22 +00003603#define ListView_SetItemCount(hwnd,count) \
3604 (BOOL)SNDMSGA((hwnd),LVM_SETITEMCOUNT,(WPARAM)(INT)(count),0)
Matthew Lake18727102000-07-08 18:31:43 +00003605#define ListView_SetTextBkColor(hwnd,clrBk) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003606 (BOOL)SNDMSGA((hwnd),LVM_SETTEXTBKCOLOR,0,(LPARAM)(COLORREF)(clrBk))
Matthew Lake18727102000-07-08 18:31:43 +00003607#define ListView_SetTextColor(hwnd,clrBk) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003608 (BOOL)SNDMSGA((hwnd),LVM_SETTEXTCOLOR,0,(LPARAM)(COLORREF)(clrBk))
Matthew Lake18727102000-07-08 18:31:43 +00003609#define ListView_DeleteColumn(hwnd,col)\
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003610 (LRESULT)SNDMSGA((hwnd),LVM_DELETECOLUMN,0,(LPARAM)(INT)(col))
Matthew Lake18727102000-07-08 18:31:43 +00003611#define ListView_GetColumnA(hwnd,x,col)\
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003612 (LRESULT)SNDMSGA((hwnd),LVM_GETCOLUMNA,(WPARAM)(INT)(x),(LPARAM)(LPLVCOLUMNA)(col))
Francois Gougetf12dbd02001-01-22 19:26:07 +00003613#define ListView_GetColumnW(hwnd,x,col)\
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003614 (LRESULT)SNDMSGW((hwnd),LVM_GETCOLUMNW,(WPARAM)(INT)(x),(LPARAM)(LPLVCOLUMNW)(col))
Francois Gougetf12dbd02001-01-22 19:26:07 +00003615#define ListView_GetColumn WINELIB_NAME_AW(ListView_GetColumn)
Matthew Lake18727102000-07-08 18:31:43 +00003616#define ListView_SetColumnA(hwnd,x,col)\
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003617 (LRESULT)SNDMSGA((hwnd),LVM_SETCOLUMNA,(WPARAM)(INT)(x),(LPARAM)(LPLVCOLUMNA)(col))
Francois Gougetf12dbd02001-01-22 19:26:07 +00003618#define ListView_SetColumnW(hwnd,x,col)\
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003619 (LRESULT)SNDMSGW((hwnd),LVM_SETCOLUMNW,(WPARAM)(INT)(x),(LPARAM)(LPLVCOLUMNW)(col))
Francois Gougetf12dbd02001-01-22 19:26:07 +00003620#define ListView_SetColumn WINELIB_NAME_AW(ListView_SetColumn)
Felix Nawothnig25c0a1d2003-09-23 22:48:49 +00003621#define ListView_GetColumnWidth(hwnd,x)\
3622 (INT)SNDMSGW((hwnd),LVM_GETCOLUMNWIDTH,(WPARAM)(INT)(x),0L)
3623#define ListView_SetColumnWidth(hwnd,x,width)\
3624 (BOOL)SNDMSGW((hwnd),LVM_SETCOLUMNWIDTH,(WPARAM)(INT)(x),(LPARAM)(MAKELPARAM(width,0)))
Matthew Lake18727102000-07-08 18:31:43 +00003625
3626
Luc Tourangeaua6d833a1999-05-29 11:07:11 +00003627#define ListView_GetNextItem(hwnd,nItem,flags) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003628 (INT)SNDMSGA((hwnd),LVM_GETNEXTITEM,(WPARAM)(INT)(nItem),(LPARAM)(MAKELPARAM(flags,0)))
Dimitrie O. Paun9e99d2b2002-01-18 19:05:35 +00003629#define ListView_FindItemA(hwnd,nItem,plvfi) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003630 (INT)SNDMSGA((hwnd),LVM_FINDITEMA,(WPARAM)(INT)(nItem),(LPARAM)(LVFINDINFOA*)(plvfi))
Dimitrie O. Paun9e99d2b2002-01-18 19:05:35 +00003631#define ListView_FindItemW(hwnd,nItem,plvfi) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003632 (INT)SNDMSGW((hwnd),LVM_FINDITEMW,(WPARAM)(INT)(nItem),(LPARAM)(LVFINDINFOW*)(plvfi))
Alexandre Julliardb5753592002-08-27 22:32:36 +00003633#define ListView_FindItem WINELIB_NAME_AW(ListView_FindItem)
3634
Luc Tourangeau4d6df2c1999-03-12 17:31:08 +00003635#define ListView_Arrange(hwnd,code) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003636 (INT)SNDMSGA((hwnd),LVM_ARRANGE,(WPARAM)(INT)(code),0L)
Luc Tourangeau4d6df2c1999-03-12 17:31:08 +00003637#define ListView_GetItemPosition(hwnd,i,ppt) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003638 (INT)SNDMSGA((hwnd),LVM_GETITEMPOSITION,(WPARAM)(INT)(i),(LPARAM)(LPPOINT)(ppt))
Chris Morgand62dd822001-02-12 03:46:00 +00003639#define ListView_GetItemRect(hwnd,i,prc,code) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003640 (BOOL)SNDMSGA((hwnd), LVM_GETITEMRECT, (WPARAM)(int)(i), \
Chris Morgand62dd822001-02-12 03:46:00 +00003641 ((prc) ? (((RECT*)(prc))->left = (code),(LPARAM)(RECT \
3642 *)(prc)) : (LPARAM)(RECT*)NULL))
Luc Tourangeau4d6df2c1999-03-12 17:31:08 +00003643#define ListView_SetItemA(hwnd,pitem) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003644 (INT)SNDMSGA((hwnd),LVM_SETITEMA,0,(LPARAM)(const LVITEMA *)(pitem))
Francois Gougetf12dbd02001-01-22 19:26:07 +00003645#define ListView_SetItemW(hwnd,pitem) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003646 (INT)SNDMSGW((hwnd),LVM_SETITEMW,0,(LPARAM)(const LVITEMW *)(pitem))
Francois Gougetf12dbd02001-01-22 19:26:07 +00003647#define ListView_SetItem WINELIB_NAME_AW(ListView_SetItem)
Rein Klazes5737fe62003-04-16 23:08:10 +00003648#define ListView_SetItemState(hwnd,i,data,dataMask) \
3649{ LVITEMA _LVi; _LVi.state = data; _LVi.stateMask = dataMask;\
3650 SNDMSGA(hwnd, LVM_SETITEMSTATE, (WPARAM)(UINT)i, (LPARAM) (LPLVITEMA)&_LVi);}
Luc Tourangeau4d6df2c1999-03-12 17:31:08 +00003651#define ListView_GetItemState(hwnd,i,mask) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003652 (BOOL)SNDMSGA((hwnd),LVM_GETITEMSTATE,(WPARAM)(UINT)(i),(LPARAM)(UINT)(mask))
Luc Tourangeau4d6df2c1999-03-12 17:31:08 +00003653#define ListView_GetCountPerPage(hwnd) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003654 (BOOL)SNDMSGW((hwnd),LVM_GETCOUNTPERPAGE,0,0L)
Luc Tourangeau4d6df2c1999-03-12 17:31:08 +00003655#define ListView_GetImageList(hwnd,iImageList) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003656 (HIMAGELIST)SNDMSGA((hwnd),LVM_GETIMAGELIST,(WPARAM)(INT)(iImageList),0L)
Luc Tourangeau4d6df2c1999-03-12 17:31:08 +00003657#define ListView_GetStringWidthA(hwnd,pstr) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003658 (INT)SNDMSGA((hwnd),LVM_GETSTRINGWIDTHA,0,(LPARAM)(LPCSTR)(pstr))
Francois Gougetf12dbd02001-01-22 19:26:07 +00003659#define ListView_GetStringWidthW(hwnd,pstr) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003660 (INT)SNDMSGW((hwnd),LVM_GETSTRINGWIDTHW,0,(LPARAM)(LPCWSTR)(pstr))
Francois Gougetf12dbd02001-01-22 19:26:07 +00003661#define ListView_GetStringWidth WINELIB_NAME_AW(ListView_GetStringWidth)
Luc Tourangeau4d6df2c1999-03-12 17:31:08 +00003662#define ListView_GetTopIndex(hwnd) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003663 (BOOL)SNDMSGA((hwnd),LVM_GETTOPINDEX,0,0L)
Luc Tourangeau4d6df2c1999-03-12 17:31:08 +00003664#define ListView_Scroll(hwnd,dx,dy) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003665 (BOOL)SNDMSGA((hwnd),LVM_SCROLL,(WPARAM)(INT)(dx),(LPARAM)(INT)(dy))
Luc Tourangeau4d6df2c1999-03-12 17:31:08 +00003666#define ListView_EnsureVisible(hwnd,i,fPartialOk) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003667 (BOOL)SNDMSGA((hwnd),LVM_ENSUREVISIBLE,(WPARAM)(INT)i,(LPARAM)(BOOL)fPartialOk)
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003668#define ListView_SetBkColor(hwnd,clrBk) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003669 (BOOL)SNDMSGA((hwnd),LVM_SETBKCOLOR,0,(LPARAM)(COLORREF)(clrBk))
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003670#define ListView_SetImageList(hwnd,himl,iImageList) \
Kevin Koltzau95a173a2005-09-02 11:32:17 +00003671 (HIMAGELIST)SNDMSGA((hwnd),LVM_SETIMAGELIST,(WPARAM)(iImageList),(LPARAM)(HIMAGELIST)(himl))
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003672#define ListView_GetItemCount(hwnd) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003673 (INT)SNDMSGA((hwnd),LVM_GETITEMCOUNT,0,0L)
Felix Nawothnig25c0a1d2003-09-23 22:48:49 +00003674#define ListView_RedrawItems(hwnd,first,last) \
3675 (BOOL)SNDMSGA((hwnd),LVM_REDRAWITEMS,(WPARAM)(INT)(first),(LPARAM)(INT)(last))
Jon Griffiths32e3d892004-05-25 18:04:30 +00003676#define ListView_GetEditControl(hwnd) \
3677 (HWND)SNDMSGA((hwnd), LVM_GETEDITCONTROL, 0, 0)
3678#define ListView_GetTextColor(hwnd) \
3679 (COLORREF)SNDMSGA((hwnd), LVM_GETTEXTCOLOR, 0, 0)
3680#define ListView_GetBkColor(hwnd) \
3681 (COLORREF)SNDMSGA((hwnd), LVM_GETBKCOLOR, 0, 0)
Alexandre Julliarda3960291999-02-26 11:11:13 +00003682#define ListView_GetItemA(hwnd,pitem) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003683 (BOOL)SNDMSGA((hwnd),LVM_GETITEMA,0,(LPARAM)(LVITEMA *)(pitem))
Alexandre Julliarda3960291999-02-26 11:11:13 +00003684#define ListView_GetItemW(hwnd,pitem) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003685 (BOOL)SNDMSGW((hwnd),LVM_GETITEMW,0,(LPARAM)(LVITEMW *)(pitem))
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003686#define ListView_GetItem WINELIB_NAME_AW(ListView_GetItem)
Juergen Schmieda5387392000-02-25 20:52:20 +00003687
Eric Kohla8670301998-11-08 11:30:27 +00003688#define ListView_HitTest(hwnd,pinfo) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003689 (INT)SNDMSGA((hwnd),LVM_HITTEST,0,(LPARAM)(LPLVHITTESTINFO)(pinfo))
Juergen Schmieda5387392000-02-25 20:52:20 +00003690
Alexandre Julliarda3960291999-02-26 11:11:13 +00003691#define ListView_InsertItemA(hwnd,pitem) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003692 (INT)SNDMSGA((hwnd),LVM_INSERTITEMA,0,(LPARAM)(const LVITEMA *)(pitem))
Alexandre Julliarda3960291999-02-26 11:11:13 +00003693#define ListView_InsertItemW(hwnd,pitem) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003694 (INT)SNDMSGW((hwnd),LVM_INSERTITEMW,0,(LPARAM)(const LVITEMW *)(pitem))
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003695#define ListView_InsertItem WINELIB_NAME_AW(ListView_InsertItem)
Juergen Schmieda5387392000-02-25 20:52:20 +00003696
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003697#define ListView_DeleteAllItems(hwnd) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003698 (BOOL)SNDMSGA((hwnd),LVM_DELETEALLITEMS,0,0L)
Juergen Schmieda5387392000-02-25 20:52:20 +00003699
Alexandre Julliarda3960291999-02-26 11:11:13 +00003700#define ListView_InsertColumnA(hwnd,iCol,pcol) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003701 (INT)SNDMSGA((hwnd),LVM_INSERTCOLUMNA,(WPARAM)(INT)(iCol),(LPARAM)(const LVCOLUMNA *)(pcol))
Alexandre Julliarda3960291999-02-26 11:11:13 +00003702#define ListView_InsertColumnW(hwnd,iCol,pcol) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003703 (INT)SNDMSGW((hwnd),LVM_INSERTCOLUMNW,(WPARAM)(INT)(iCol),(LPARAM)(const LVCOLUMNW *)(pcol))
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003704#define ListView_InsertColumn WINELIB_NAME_AW(ListView_InsertColumn)
Juergen Schmieda5387392000-02-25 20:52:20 +00003705
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003706#define ListView_SortItems(hwndLV,_pfnCompare,_lPrm) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003707 (BOOL)SNDMSGA((hwndLV),LVM_SORTITEMS,(WPARAM)(LPARAM)_lPrm,(LPARAM)(PFNLVCOMPARE)_pfnCompare)
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003708#define ListView_SetItemPosition(hwndLV, i, x, y) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003709 (BOOL)SNDMSGA((hwndLV),LVM_SETITEMPOSITION,(WPARAM)(INT)(i),MAKELPARAM((x),(y)))
Alexandre Julliarda0d77311998-09-13 16:32:00 +00003710#define ListView_GetSelectedCount(hwndLV) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003711 (UINT)SNDMSGA((hwndLV),LVM_GETSELECTEDCOUNT,0,0L)
Juergen Schmieda5387392000-02-25 20:52:20 +00003712
Juergen Schmiedd90f15d2000-02-07 17:18:00 +00003713#define ListView_EditLabelA(hwndLV, i) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003714 (HWND)SNDMSGA((hwndLV),LVM_EDITLABELA,(WPARAM)(int)(i), 0L)
Juergen Schmiedd90f15d2000-02-07 17:18:00 +00003715#define ListView_EditLabelW(hwndLV, i) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003716 (HWND)SNDMSGW((hwndLV),LVM_EDITLABELW,(WPARAM)(int)(i), 0L)
Juergen Schmieda5387392000-02-25 20:52:20 +00003717#define ListView_EditLabel WINELIB_NAME_AW(ListView_EditLabel)
3718
Kusanagi Kouichic7827212003-06-23 03:35:19 +00003719#define ListView_GetItemTextA(hwndLV, i, _iSubItem, _pszText, _cchTextMax) \
3720{ \
3721 LVITEMA _LVi;\
3722 _LVi.iSubItem = _iSubItem;\
3723 _LVi.cchTextMax = _cchTextMax;\
3724 _LVi.pszText = _pszText;\
3725 SNDMSGA(hwndLV, LVM_GETITEMTEXTA, (WPARAM)(i), (LPARAM)&_LVi);\
3726}
3727#define ListView_GetItemTextW(hwndLV, i, _iSubItem, _pszText, _cchTextMax) \
3728{ \
3729 LVITEMW _LVi;\
3730 _LVi.iSubItem = _iSubItem;\
3731 _LVi.cchTextMax = _cchTextMax;\
3732 _LVi.pszText = _pszText;\
3733 SNDMSGW(hwndLV, LVM_GETITEMTEXTW, (WPARAM)(i), (LPARAM)&_LVi);\
3734}
3735#define ListView_GetItemText WINELIB_NAME_AW(ListView_GetItemText)
Jon Griffiths32e3d892004-05-25 18:04:30 +00003736#define ListView_SetItemPosition32(hwnd,n,x1,y1) \
3737{ POINT ptNewPos; ptNewPos.x = (x1); ptNewPos.y = (y1); SNDMSGA((hwnd), LVM_SETITEMPOSITION32, (WPARAM)(int)(n), (LPARAM)&ptNewPos); }
Juergen Schmieda5387392000-02-25 20:52:20 +00003738#define ListView_SetItemTextA(hwndLV, i, _iSubItem, _pszText) \
3739{ LVITEMA _LVi; _LVi.iSubItem = _iSubItem; _LVi.pszText = _pszText;\
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003740 SNDMSGA(hwndLV, LVM_SETITEMTEXTA, (WPARAM)i, (LPARAM) (LVITEMA*)&_LVi);}
Juergen Schmieda5387392000-02-25 20:52:20 +00003741#define ListView_SetItemTextW(hwndLV, i, _iSubItem, _pszText) \
3742{ LVITEMW _LVi; _LVi.iSubItem = _iSubItem; _LVi.pszText = _pszText;\
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003743 SNDMSGW(hwndLV, LVM_SETITEMTEXTW, (WPARAM)i, (LPARAM) (LVITEMW*)& _LVi);}
Juergen Schmieda5387392000-02-25 20:52:20 +00003744#define ListView_SetItemText WINELIB_NAME_AW(ListView_SetItemText)
3745
3746#define ListView_DeleteItem(hwndLV, i) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003747 (BOOL)SNDMSGA(hwndLV, LVM_DELETEITEM, (WPARAM)(int)(i), 0L)
Juergen Schmieda5387392000-02-25 20:52:20 +00003748#define ListView_Update(hwndLV, i) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003749 (BOOL)SNDMSGA((hwndLV), LVM_UPDATE, (WPARAM)(i), 0L)
Francois Gougetf12dbd02001-01-22 19:26:07 +00003750#define ListView_GetColumnOrderArray(hwndLV, iCount, pi) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003751 (BOOL)SNDMSGA((hwndLV), LVM_GETCOLUMNORDERARRAY, (WPARAM)iCount, (LPARAM)(LPINT)pi)
Francois Gougetf12dbd02001-01-22 19:26:07 +00003752#define ListView_GetExtendedListViewStyle(hwndLV) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003753 (DWORD)SNDMSGA((hwndLV), LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0L)
Francois Gougetf12dbd02001-01-22 19:26:07 +00003754#define ListView_GetHotCursor(hwndLV) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003755 (HCURSOR)SNDMSGA((hwndLV), LVM_GETHOTCURSOR, 0, 0L)
Francois Gougetf12dbd02001-01-22 19:26:07 +00003756#define ListView_GetHotItem(hwndLV) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003757 (int)SNDMSGA((hwndLV), LVM_GETHOTITEM, 0, 0L)
Francois Gougetf12dbd02001-01-22 19:26:07 +00003758#define ListView_GetItemSpacing(hwndLV, fSmall) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003759 (DWORD)SNDMSGA((hwndLV), LVM_GETITEMSPACING, (WPARAM)fSmall, 0L)
Francois Gougetf12dbd02001-01-22 19:26:07 +00003760#define ListView_GetSubItemRect(hwndLV, iItem, iSubItem, code, prc) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003761 (BOOL)SNDMSGA((hwndLV), LVM_GETSUBITEMRECT, (WPARAM)(int)(iItem), \
Vincent Béron9afc3eb2005-02-21 18:28:30 +00003762 ((prc) ? ((((LPRECT)(prc))->top = iSubItem), (((LPRECT)(prc))->left = code), (LPARAM)(prc)) : 0))
Francois Gougetf12dbd02001-01-22 19:26:07 +00003763#define ListView_GetToolTips(hwndLV) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003764 (HWND)SNDMSGA((hwndLV), LVM_GETTOOLTIPS, 0, 0L)
Francois Gougetf12dbd02001-01-22 19:26:07 +00003765#define ListView_SetColumnOrderArray(hwndLV, iCount, pi) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003766 (BOOL)SNDMSGA((hwndLV), LVM_SETCOLUMNORDERARRAY, (WPARAM)iCount, (LPARAM)(LPINT)pi)
Francois Gougetf12dbd02001-01-22 19:26:07 +00003767#define ListView_SetExtendedListViewStyle(hwndLV, dw) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003768 (DWORD)SNDMSGA((hwndLV), LVM_SETEXTENDEDLISTVIEWSTYLE, 0, (LPARAM)dw)
Francois Gougetf12dbd02001-01-22 19:26:07 +00003769#define ListView_SetExtendedListViewStyleEx(hwndLV, dwMask, dw) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003770 (DWORD)SNDMSGA((hwndLV), LVM_SETEXTENDEDLISTVIEWSTYLE, (WPARAM)dwMask, (LPARAM)dw)
Francois Gougetf12dbd02001-01-22 19:26:07 +00003771#define ListView_SetHotCursor(hwndLV, hcur) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003772 (HCURSOR)SNDMSGA((hwndLV), LVM_SETHOTCURSOR, 0, (LPARAM)hcur)
Francois Gougetf12dbd02001-01-22 19:26:07 +00003773#define ListView_SetHotItem(hwndLV, i) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003774 (int)SNDMSGA((hwndLV), LVM_SETHOTITEM, (WPARAM)i, 0L)
Francois Gougetf12dbd02001-01-22 19:26:07 +00003775#define ListView_SetIconSpacing(hwndLV, cx, cy) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003776 (DWORD)SNDMSGA((hwndLV), LVM_SETICONSPACING, 0, MAKELONG(cx,cy))
Francois Gougetf12dbd02001-01-22 19:26:07 +00003777#define ListView_SetToolTips(hwndLV, hwndNewHwnd) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003778 (HWND)SNDMSGA((hwndLV), LVM_SETTOOLTIPS, (WPARAM)hwndNewHwnd, 0L)
Francois Gougetf12dbd02001-01-22 19:26:07 +00003779#define ListView_SubItemHitTest(hwndLV, plvhti) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003780 (int)SNDMSGA((hwndLV), LVM_SUBITEMHITTEST, 0, (LPARAM)(LPLVHITTESTINFO)(plvhti))
Eric Pouechda8b5822003-09-02 18:16:22 +00003781#define ListView_GetSelectionMark(hwndLV) \
3782 (int)SNDMSG((hwndLV), LVM_GETSELECTIONMARK, 0, 0)
3783#define ListView_SetSelectionMark(hwndLV, iItem) \
3784 (int)SNDMSG((hwndLV), LVM_SETSELECTIONMARK, 0, (LPARAM)(iItem))
Dimitrie O. Paun2f2c08d2003-12-04 20:52:39 +00003785#define ListView_GetViewRect(hwndLV, prc) \
3786 (BOOL)SNDMSG((hwndLV),LVM_GETVIEWRECT,0,(LPARAM)(LPRECT)(prc))
Eric Pouech2fba6872004-02-02 23:09:42 +00003787#define ListView_GetHeader(hwndLV) \
3788 (HWND)SNDMSG((hwndLV),LVM_GETHEADER,0,0L)
Robert Shearmanead9e562004-08-25 02:14:28 +00003789#define ListView_SetSelectedColumn(hwnd, iCol) \
3790 SNDMSG((hwnd), LVM_SETSELECTEDCOLUMN, (WPARAM)iCol, 0)
3791#define ListView_SetTileWidth(hwnd, cpWidth) \
3792 SNDMSG((hwnd), LVM_SETTILEWIDTH, (WPARAM)cpWidth, 0)
3793#define ListView_SetView(hwnd, iView) \
3794 (DWORD)SNDMSG((hwnd), LVM_SETVIEW, (WPARAM)(DWORD)iView, 0)
3795#define ListView_GetView(hwnd) \
3796 (DWORD)SNDMSG((hwnd), LVM_GETVIEW, 0, 0)
3797#define ListView_InsertGroup(hwnd, index, pgrp) \
3798 SNDMSG((hwnd), LVM_INSERTGROUP, (WPARAM)index, (LPARAM)pgrp)
3799#define ListView_SetGroupInfo(hwnd, iGroupId, pgrp) \
3800 SNDMSG((hwnd), LVM_SETGROUPINFO, (WPARAM)iGroupId, (LPARAM)pgrp)
3801#define ListView_GetGroupInfo(hwnd, iGroupId, pgrp) \
3802 SNDMSG((hwnd), LVM_GETGROUPINFO, (WPARAM)iGroupId, (LPARAM)pgrp)
3803#define ListView_RemoveGroup(hwnd, iGroupId) \
3804 SNDMSG((hwnd), LVM_REMOVEGROUP, (WPARAM)iGroupId, 0)
3805#define ListView_MoveGroup(hwnd, iGroupId, toIndex) \
3806 SNDMSG((hwnd), LVM_MOVEGROUP, (WPARAM)iGroupId, (LPARAM)toIndex)
3807#define ListView_MoveItemToGroup(hwnd, idItemFrom, idGroupTo) \
3808 SNDMSG((hwnd), LVM_MOVEITEMTOGROUP, (WPARAM)idItemFrom, (LPARAM)idGroupTo)
3809#define ListView_SetGroupMetrics(hwnd, pGroupMetrics) \
3810 SNDMSG((hwnd), LVM_SETGROUPMETRICS, 0, (LPARAM)pGroupMetrics)
3811#define ListView_GetGroupMetrics(hwnd, pGroupMetrics) \
3812 SNDMSG((hwnd), LVM_GETGROUPMETRICS, 0, (LPARAM)pGroupMetrics)
3813#define ListView_EnableGroupView(hwnd, fEnable) \
3814 SNDMSG((hwnd), LVM_ENABLEGROUPVIEW, (WPARAM)fEnable, 0)
3815#define ListView_SortGroups(hwnd, _pfnGroupCompate, _plv) \
3816 SNDMSG((hwnd), LVM_SORTGROUPS, (WPARAM)_pfnGroupCompate, (LPARAM)_plv)
3817#define ListView_InsertGroupSorted(hwnd, structInsert) \
3818 SNDMSG((hwnd), LVM_INSERTGROUPSORTED, (WPARAM)structInsert, 0)
3819#define ListView_RemoveAllGroups(hwnd) \
3820 SNDMSG((hwnd), LVM_REMOVEALLGROUPS, 0, 0)
3821#define ListView_HasGroup(hwnd, dwGroupId) \
3822 SNDMSG((hwnd), LVM_HASGROUP, dwGroupId, 0)
3823#define ListView_SetTileViewInfo(hwnd, ptvi) \
3824 SNDMSG((hwnd), LVM_SETTILEVIEWINFO, 0, (LPARAM)ptvi)
3825#define ListView_GetTileViewInfo(hwnd, ptvi) \
3826 SNDMSG((hwnd), LVM_GETTILEVIEWINFO, 0, (LPARAM)ptvi)
3827#define ListView_SetTileInfo(hwnd, pti) \
3828 SNDMSG((hwnd), LVM_SETTILEINFO, 0, (LPARAM)pti)
3829#define ListView_GetTileInfo(hwnd, pti) \
3830 SNDMSG((hwnd), LVM_GETTILEINFO, 0, (LPARAM)pti)
3831#define ListView_SetInsertMark(hwnd, lvim) \
3832 (BOOL)SNDMSG((hwnd), LVM_SETINSERTMARK, (WPARAM) 0, (LPARAM) (lvim))
3833#define ListView_GetInsertMark(hwnd, lvim) \
3834 (BOOL)SNDMSG((hwnd), LVM_GETINSERTMARK, (WPARAM) 0, (LPARAM) (lvim))
3835#define ListView_InsertMarkHitTest(hwnd, point, lvim) \
3836 (int)SNDMSG((hwnd), LVM_INSERTMARKHITTEST, (WPARAM)(LPPOINT)(point), (LPARAM)(LPLVINSERTMARK)(lvim))
3837#define ListView_GetInsertMarkRect(hwnd, rc) \
3838 (int)SNDMSG((hwnd), LVM_GETINSERTMARKRECT, (WPARAM)0, (LPARAM)(LPRECT)(rc))
3839#define ListView_SetInsertMarkColor(hwnd, color) \
3840 (COLORREF)SNDMSG((hwnd), LVM_SETINSERTMARKCOLOR, (WPARAM)0, (LPARAM)(COLORREF)(color))
3841#define ListView_GetInsertMarkColor(hwnd) \
3842 (COLORREF)SNDMSG((hwnd), LVM_GETINSERTMARKCOLOR, (WPARAM)0, (LPARAM)0)
3843#define ListView_SetInfoTip(hwndLV, plvInfoTip)\
3844 (BOOL)SNDMSG((hwndLV), LVM_SETINFOTIP, (WPARAM)0, (LPARAM)plvInfoTip)
3845#define ListView_GetSelectedColumn(hwnd) \
3846 (UINT)SNDMSG((hwnd), LVM_GETSELECTEDCOLUMN, 0, 0)
3847#define ListView_IsGroupViewEnabled(hwnd) \
3848 (BOOL)SNDMSG((hwnd), LVM_ISGROUPVIEWENABLED, 0, 0)
3849#define ListView_GetOutlineColor(hwnd) \
3850 (COLORREF)SNDMSG((hwnd), LVM_GETOUTLINECOLOR, 0, 0)
3851#define ListView_SetOutlineColor(hwnd, color) \
3852 (COLORREF)SNDMSG((hwnd), LVM_SETOUTLINECOLOR, (WPARAM)0, (LPARAM)(COLORREF)(color))
3853#define ListView_CancelEditLabel(hwnd) \
3854 (VOID)SNDMSG((hwnd), LVM_CANCELEDITLABEL, (WPARAM)0, (LPARAM)0)
3855#define ListView_MapIndexToID(hwnd, index) \
3856 (UINT)SNDMSG((hwnd), LVM_MAPINDEXTOID, (WPARAM)index, (LPARAM)0)
3857#define ListView_MapIDToIndex(hwnd, id) \
3858 (UINT)SNDMSG((hwnd), LVM_MAPIDTOINDEX, (WPARAM)id, (LPARAM)0)
Eric Pouech2fba6872004-02-02 23:09:42 +00003859
Eric Kohl9d8e8641998-10-24 10:49:27 +00003860/* Tab Control */
3861
Jon Griffiths7a6bad82001-01-22 02:13:58 +00003862#define WC_TABCONTROLA "SysTabControl32"
Dmitry Timoshkova9c057f2002-09-16 19:29:36 +00003863#if defined(__GNUC__)
3864# define WC_TABCONTROLW (const WCHAR []){ 'S','y','s', \
3865 'T','a','b','C','o','n','t','r','o','l','3','2',0 }
3866#elif defined(_MSC_VER)
3867# define WC_TABCONTROLW L"SysTabControl32"
3868#else
Jon Griffiths7a6bad82001-01-22 02:13:58 +00003869static const WCHAR WC_TABCONTROLW[] = { 'S','y','s',
3870 'T','a','b','C','o','n','t','r','o','l','3','2',0 };
Dmitry Timoshkova9c057f2002-09-16 19:29:36 +00003871#endif
Eric Kohl9d8e8641998-10-24 10:49:27 +00003872#define WC_TABCONTROL WINELIB_NAME_AW(WC_TABCONTROL)
3873
Paul Quinn1beaae51998-12-15 15:38:36 +00003874/* tab control styles */
Marcus Meissner73458b01998-12-26 12:54:29 +00003875#define TCS_SCROLLOPPOSITE 0x0001 /* assumes multiline tab */
Paul Quinn1beaae51998-12-15 15:38:36 +00003876#define TCS_BOTTOM 0x0002
3877#define TCS_RIGHT 0x0002
Marcus Meissner73458b01998-12-26 12:54:29 +00003878#define TCS_MULTISELECT 0x0004 /* allow multi-select in button mode */
Alex Priemd2d7f961999-01-30 13:02:30 +00003879#define TCS_FLATBUTTONS 0x0008
Paul Quinn1beaae51998-12-15 15:38:36 +00003880#define TCS_FORCEICONLEFT 0x0010
3881#define TCS_FORCELABELLEFT 0x0020
3882#define TCS_HOTTRACK 0x0040
3883#define TCS_VERTICAL 0x0080
3884#define TCS_TABS 0x0000
3885#define TCS_BUTTONS 0x0100
3886#define TCS_SINGLELINE 0x0000
3887#define TCS_MULTILINE 0x0200
3888#define TCS_RIGHTJUSTIFY 0x0000
3889#define TCS_FIXEDWIDTH 0x0400
3890#define TCS_RAGGEDRIGHT 0x0800
3891#define TCS_FOCUSONBUTTONDOWN 0x1000
3892#define TCS_OWNERDRAWFIXED 0x2000
3893#define TCS_TOOLTIPS 0x4000
3894#define TCS_FOCUSNEVER 0x8000
Alex Priemd2d7f961999-01-30 13:02:30 +00003895#define TCS_EX_FLATSEPARATORS 0x00000001 /* to be used with */
3896#define TCS_EX_REGISTERDROP 0x00000002 /* TCM_SETEXTENDEDSTYLE */
3897
Paul Quinn1beaae51998-12-15 15:38:36 +00003898
Eric Kohl9d8e8641998-10-24 10:49:27 +00003899#define TCM_FIRST 0x1300
3900
Paul Quinn1beaae51998-12-15 15:38:36 +00003901#define TCM_GETIMAGELIST (TCM_FIRST + 2)
3902#define TCM_SETIMAGELIST (TCM_FIRST + 3)
Eric Kohl9d8e8641998-10-24 10:49:27 +00003903#define TCM_GETITEMCOUNT (TCM_FIRST + 4)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00003904#define TCM_GETITEM WINELIB_NAME_AW(TCM_GETITEM)
3905#define TCM_GETITEMA (TCM_FIRST + 5)
3906#define TCM_GETITEMW (TCM_FIRST + 60)
3907#define TCM_SETITEMA (TCM_FIRST + 6)
3908#define TCM_SETITEMW (TCM_FIRST + 61)
3909#define TCM_SETITEM WINELIB_NAME_AW(TCM_SETITEM)
Alexandre Julliarda3960291999-02-26 11:11:13 +00003910#define TCM_INSERTITEMA (TCM_FIRST + 7)
3911#define TCM_INSERTITEMW (TCM_FIRST + 62)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00003912#define TCM_INSERTITEM WINELIB_NAME_AW(TCM_INSERTITEM)
Paul Quinn1beaae51998-12-15 15:38:36 +00003913#define TCM_DELETEITEM (TCM_FIRST + 8)
3914#define TCM_DELETEALLITEMS (TCM_FIRST + 9)
3915#define TCM_GETITEMRECT (TCM_FIRST + 10)
Eric Kohl9d8e8641998-10-24 10:49:27 +00003916#define TCM_GETCURSEL (TCM_FIRST + 11)
Paul Quinn1beaae51998-12-15 15:38:36 +00003917#define TCM_SETCURSEL (TCM_FIRST + 12)
3918#define TCM_HITTEST (TCM_FIRST + 13)
Eric Kohl9d8e8641998-10-24 10:49:27 +00003919#define TCM_SETITEMEXTRA (TCM_FIRST + 14)
Paul Quinn1beaae51998-12-15 15:38:36 +00003920#define TCM_ADJUSTRECT (TCM_FIRST + 40)
3921#define TCM_SETITEMSIZE (TCM_FIRST + 41)
3922#define TCM_REMOVEIMAGE (TCM_FIRST + 42)
3923#define TCM_SETPADDING (TCM_FIRST + 43)
3924#define TCM_GETROWCOUNT (TCM_FIRST + 44)
3925#define TCM_GETTOOLTIPS (TCM_FIRST + 45)
3926#define TCM_SETTOOLTIPS (TCM_FIRST + 46)
3927#define TCM_GETCURFOCUS (TCM_FIRST + 47)
3928#define TCM_SETCURFOCUS (TCM_FIRST + 48)
Ian Schmidt2d127002000-02-26 18:30:12 +00003929#define TCM_SETMINTABWIDTH (TCM_FIRST + 49)
Paul Quinn1beaae51998-12-15 15:38:36 +00003930#define TCM_DESELECTALL (TCM_FIRST + 50)
Alexandre Julliard638f1691999-01-17 16:32:32 +00003931#define TCM_HIGHLIGHTITEM (TCM_FIRST + 51)
3932#define TCM_SETEXTENDEDSTYLE (TCM_FIRST + 52)
3933#define TCM_GETEXTENDEDSTYLE (TCM_FIRST + 53)
3934#define TCM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
3935#define TCM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
3936
Eric Kohl9d8e8641998-10-24 10:49:27 +00003937
3938#define TCIF_TEXT 0x0001
3939#define TCIF_IMAGE 0x0002
3940#define TCIF_RTLREADING 0x0004
3941#define TCIF_PARAM 0x0008
Alexandre Julliard638f1691999-01-17 16:32:32 +00003942#define TCIF_STATE 0x0010
Eric Kohl9d8e8641998-10-24 10:49:27 +00003943
Alex Priemd2d7f961999-01-30 13:02:30 +00003944#define TCIS_BUTTONPRESSED 0x0001
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00003945#define TCIS_HIGHLIGHTED 0x0002
Alex Priemd2d7f961999-01-30 13:02:30 +00003946
Paul Quinn6f57fe71999-04-01 10:03:11 +00003947/* TabCtrl Macros */
3948#define TabCtrl_GetImageList(hwnd) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003949 (HIMAGELIST)SNDMSGA((hwnd), TCM_GETIMAGELIST, 0, 0L)
Paul Quinn6f57fe71999-04-01 10:03:11 +00003950#define TabCtrl_SetImageList(hwnd, himl) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003951 (HIMAGELIST)SNDMSGA((hwnd), TCM_SETIMAGELIST, 0, (LPARAM)(UINT)(HIMAGELIST)(himl))
Paul Quinn6f57fe71999-04-01 10:03:11 +00003952#define TabCtrl_GetItemCount(hwnd) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003953 (int)SNDMSGA((hwnd), TCM_GETITEMCOUNT, 0, 0L)
Alex Priemcbd5ed71999-07-18 15:32:32 +00003954#define TabCtrl_GetItemA(hwnd, iItem, pitem) \
Jon Griffithsee6884b2004-12-08 13:39:52 +00003955 (BOOL)SNDMSGA((hwnd), TCM_GETITEMA, (WPARAM)(int)iItem, (LPARAM)(TCITEMA *)(pitem))
Alex Priemcbd5ed71999-07-18 15:32:32 +00003956#define TabCtrl_GetItemW(hwnd, iItem, pitem) \
Jon Griffithsee6884b2004-12-08 13:39:52 +00003957 (BOOL)SNDMSGW((hwnd), TCM_GETITEMW, (WPARAM)(int)iItem, (LPARAM)(TCITEMW *)(pitem))
Alex Priemcbd5ed71999-07-18 15:32:32 +00003958#define TabCtrl_GetItem WINELIB_NAME_AW(TabCtrl_GetItem)
3959#define TabCtrl_SetItemA(hwnd, iItem, pitem) \
Jon Griffithsee6884b2004-12-08 13:39:52 +00003960 (BOOL)SNDMSGA((hwnd), TCM_SETITEMA, (WPARAM)(int)iItem, (LPARAM)(TCITEMA *)(pitem))
Alex Priemcbd5ed71999-07-18 15:32:32 +00003961#define TabCtrl_SetItemW(hwnd, iItem, pitem) \
Jon Griffithsee6884b2004-12-08 13:39:52 +00003962 (BOOL)SNDMSGW((hwnd), TCM_SETITEMW, (WPARAM)(int)iItem, (LPARAM)(TCITEMW *)(pitem))
Jon Griffiths8b3aeac2004-07-06 21:02:36 +00003963#define TabCtrl_SetItem WINELIB_NAME_AW(TabCtrl_SetItem)
Alex Priemcbd5ed71999-07-18 15:32:32 +00003964#define TabCtrl_InsertItemA(hwnd, iItem, pitem) \
Jon Griffithsee6884b2004-12-08 13:39:52 +00003965 (int)SNDMSGA((hwnd), TCM_INSERTITEMA, (WPARAM)(int)iItem, (LPARAM)(const TCITEMA *)(pitem))
Alex Priemcbd5ed71999-07-18 15:32:32 +00003966#define TabCtrl_InsertItemW(hwnd, iItem, pitem) \
Jon Griffithsee6884b2004-12-08 13:39:52 +00003967 (int)SNDMSGW((hwnd), TCM_INSERTITEMW, (WPARAM)(int)iItem, (LPARAM)(const TCITEMW *)(pitem))
Alex Priemcbd5ed71999-07-18 15:32:32 +00003968#define TabCtrl_InsertItem WINELIB_NAME_AW(TabCtrl_InsertItem)
Paul Quinn6f57fe71999-04-01 10:03:11 +00003969#define TabCtrl_DeleteItem(hwnd, i) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003970 (BOOL)SNDMSGA((hwnd), TCM_DELETEITEM, (WPARAM)(int)(i), 0L)
Paul Quinn6f57fe71999-04-01 10:03:11 +00003971#define TabCtrl_DeleteAllItems(hwnd) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003972 (BOOL)SNDMSGA((hwnd), TCM_DELETEALLITEMS, 0, 0L)
Paul Quinn6f57fe71999-04-01 10:03:11 +00003973#define TabCtrl_GetItemRect(hwnd, i, prc) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003974 (BOOL)SNDMSGA((hwnd), TCM_GETITEMRECT, (WPARAM)(int)(i), (LPARAM)(RECT *)(prc))
Paul Quinn6f57fe71999-04-01 10:03:11 +00003975#define TabCtrl_GetCurSel(hwnd) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003976 (int)SNDMSGA((hwnd), TCM_GETCURSEL, 0, 0)
Paul Quinn6f57fe71999-04-01 10:03:11 +00003977#define TabCtrl_SetCurSel(hwnd, i) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003978 (int)SNDMSGA((hwnd), TCM_SETCURSEL, (WPARAM)i, 0)
Paul Quinn6f57fe71999-04-01 10:03:11 +00003979#define TabCtrl_HitTest(hwndTC, pinfo) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003980 (int)SNDMSGA((hwndTC), TCM_HITTEST, 0, (LPARAM)(TC_HITTESTINFO *)(pinfo))
Paul Quinn6f57fe71999-04-01 10:03:11 +00003981#define TabCtrl_SetItemExtra(hwndTC, cb) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003982 (BOOL)SNDMSGA((hwndTC), TCM_SETITEMEXTRA, (WPARAM)(cb), 0L)
Paul Quinn6f57fe71999-04-01 10:03:11 +00003983#define TabCtrl_AdjustRect(hwnd, bLarger, prc) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003984 (int)SNDMSGA(hwnd, TCM_ADJUSTRECT, (WPARAM)(BOOL)bLarger, (LPARAM)(RECT *)prc)
Paul Quinn6f57fe71999-04-01 10:03:11 +00003985#define TabCtrl_SetItemSize(hwnd, x, y) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003986 (DWORD)SNDMSGA((hwnd), TCM_SETITEMSIZE, 0, MAKELPARAM(x,y))
Paul Quinn6f57fe71999-04-01 10:03:11 +00003987#define TabCtrl_RemoveImage(hwnd, i) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003988 (void)SNDMSGA((hwnd), TCM_REMOVEIMAGE, i, 0L)
Paul Quinn6f57fe71999-04-01 10:03:11 +00003989#define TabCtrl_SetPadding(hwnd, cx, cy) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003990 (void)SNDMSGA((hwnd), TCM_SETPADDING, 0, MAKELPARAM(cx, cy))
Paul Quinn6f57fe71999-04-01 10:03:11 +00003991#define TabCtrl_GetRowCount(hwnd) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003992 (int)SNDMSGA((hwnd), TCM_GETROWCOUNT, 0, 0L)
Paul Quinn6f57fe71999-04-01 10:03:11 +00003993#define TabCtrl_GetToolTips(hwnd) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003994 (HWND)SNDMSGA((hwnd), TCM_GETTOOLTIPS, 0, 0L)
Paul Quinn6f57fe71999-04-01 10:03:11 +00003995#define TabCtrl_SetToolTips(hwnd, hwndTT) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003996 (void)SNDMSGA((hwnd), TCM_SETTOOLTIPS, (WPARAM)hwndTT, 0L)
Paul Quinn6f57fe71999-04-01 10:03:11 +00003997#define TabCtrl_GetCurFocus(hwnd) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00003998 (int)SNDMSGA((hwnd), TCM_GETCURFOCUS, 0, 0)
Paul Quinn6f57fe71999-04-01 10:03:11 +00003999#define TabCtrl_SetCurFocus(hwnd, i) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004000 SNDMSGA((hwnd),TCM_SETCURFOCUS, i, 0)
Paul Quinn6f57fe71999-04-01 10:03:11 +00004001#define TabCtrl_SetMinTabWidth(hwnd, x) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004002 (int)SNDMSGA((hwnd), TCM_SETMINTABWIDTH, 0, x)
Paul Quinn6f57fe71999-04-01 10:03:11 +00004003#define TabCtrl_DeselectAll(hwnd, fExcludeFocus)\
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004004 (void)SNDMSGA((hwnd), TCM_DESELECTALL, fExcludeFocus, 0)
Dimitrie O. Paun4bb62422003-11-26 05:20:32 +00004005#define TabCtrl_GetUnicodeFormat(hwnd) \
4006 (BOOL)SNDMSGA((hwnd), TCM_GETUNICODEFORMAT, 0, 0)
4007#define TabCtrl_SetUnicodeFormat(hwnd, fUnicode) \
4008 (BOOL)SNDMSGA((hwnd), TCM_SETUNICODEFORMAT, (WPARAM)fUnicode, 0)
4009#define TabCtrl_GetExtendedStyle(hwnd) \
4010 (BOOL)SNDMSGA((hwnd), TCM_GETEXTENDEDSTYLE, 0, 0)
4011#define TabCtrl_SetExtendedStyle(hwnd, dwExStyle) \
4012 (BOOL)SNDMSGA((hwnd), TCM_GETEXTENDEDSTYLE, 0, (LPARAM)dwExStyle)
4013#define TabCtrl_HighlightItem(hwnd, i, fHighlight) \
4014 (BOOL)SNDMSG((hwnd), TCM_HIGHLIGHTITEM, (WPARAM)i, (LPARAM)MAKELONG(fHighlight, 0))
Alex Priemd2d7f961999-01-30 13:02:30 +00004015
4016/* constants for TCHITTESTINFO */
4017
4018#define TCHT_NOWHERE 0x01
4019#define TCHT_ONITEMICON 0x02
4020#define TCHT_ONITEMLABEL 0x04
4021#define TCHT_ONITEM (TCHT_ONITEMICON | TCHT_ONITEMLABEL)
4022
Jon Griffiths024dc2f2004-06-28 20:27:33 +00004023typedef struct tagTCITEMHEADERA
4024{
4025 UINT mask;
4026 UINT lpReserved1;
4027 UINT lpReserved2;
4028 LPSTR pszText;
4029 int cchTextMax;
4030 int iImage;
4031} TCITEMHEADERA, *LPTCITEMHEADERA;
Alexandre Julliard638f1691999-01-17 16:32:32 +00004032
Jon Griffiths024dc2f2004-06-28 20:27:33 +00004033typedef struct tagTCITEMHEADERW
4034{
4035 UINT mask;
4036 UINT lpReserved1;
4037 UINT lpReserved2;
4038 LPWSTR pszText;
4039 int cchTextMax;
4040 int iImage;
4041} TCITEMHEADERW, *LPTCITEMHEADERW;
4042
4043#define TCITEMHEADER WINELIB_NAME_AW(TCITEMHEADER)
4044#define LPTCITEMHEADER WINELIB_NAME_AW(LPTCITEMHEADER)
4045#define TC_ITEMHEADER WINELIB_NAME_AW(TCITEMHEADER)
4046#define LPTC_ITEMHEADER WINELIB_NAME_AW(LPTCITEMHEADER)
4047
4048typedef struct tagTCITEMA
4049{
Alexandre Julliarda3960291999-02-26 11:11:13 +00004050 UINT mask;
4051 UINT dwState;
4052 UINT dwStateMask;
Eric Kohl9d8e8641998-10-24 10:49:27 +00004053 LPSTR pszText;
Alexandre Julliarda3960291999-02-26 11:11:13 +00004054 INT cchTextMax;
4055 INT iImage;
Eric Kohl9d8e8641998-10-24 10:49:27 +00004056 LPARAM lParam;
Alexandre Julliarda3960291999-02-26 11:11:13 +00004057} TCITEMA, *LPTCITEMA;
Alexandre Julliard638f1691999-01-17 16:32:32 +00004058
Alexandre Julliarda3960291999-02-26 11:11:13 +00004059typedef struct tagTCITEMW
Alexandre Julliard638f1691999-01-17 16:32:32 +00004060{
Alexandre Julliarda3960291999-02-26 11:11:13 +00004061 UINT mask;
Alexandre Julliard638f1691999-01-17 16:32:32 +00004062 DWORD dwState;
4063 DWORD dwStateMask;
4064 LPWSTR pszText;
Alexandre Julliarda3960291999-02-26 11:11:13 +00004065 INT cchTextMax;
4066 INT iImage;
Alexandre Julliard638f1691999-01-17 16:32:32 +00004067 LPARAM lParam;
Alexandre Julliarda3960291999-02-26 11:11:13 +00004068} TCITEMW, *LPTCITEMW;
Alexandre Julliard638f1691999-01-17 16:32:32 +00004069
Jon Griffiths024dc2f2004-06-28 20:27:33 +00004070#define TCITEM WINELIB_NAME_AW(TCITEM)
4071#define LPTCITEM WINELIB_NAME_AW(LPTCITEM)
4072#define TC_ITEM WINELIB_NAME_AW(TCITEM)
4073#define LPTC_ITEM WINELIB_NAME_AW(LPTCITEM)
Eric Kohl9d8e8641998-10-24 10:49:27 +00004074
4075#define TCN_FIRST (0U-550U)
4076#define TCN_LAST (0U-580U)
4077#define TCN_KEYDOWN (TCN_FIRST - 0)
4078#define TCN_SELCHANGE (TCN_FIRST - 1)
4079#define TCN_SELCHANGING (TCN_FIRST - 2)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00004080#define TCN_GETOBJECT (TCN_FIRST - 3)
Eric Kohl9d8e8641998-10-24 10:49:27 +00004081
Dimitrie O. Paun53f9c212003-08-28 21:43:34 +00004082#include <pshpack1.h>
Francois Gougete19c60a2001-02-12 19:39:58 +00004083typedef struct tagTCKEYDOWN
4084{
4085 NMHDR hdr;
4086 WORD wVKey;
4087 UINT flags;
4088} NMTCKEYDOWN;
Dimitrie O. Paun53f9c212003-08-28 21:43:34 +00004089#include <poppack.h>
Francois Gougete19c60a2001-02-12 19:39:58 +00004090
4091#define TC_KEYDOWN NMTCKEYDOWN
Eric Kohl9d8e8641998-10-24 10:49:27 +00004092
Alexandre Julliarda0d77311998-09-13 16:32:00 +00004093/* ComboBoxEx control */
4094
Alexandre Julliarda3960291999-02-26 11:11:13 +00004095#define WC_COMBOBOXEXA "ComboBoxEx32"
Dmitry Timoshkova9c057f2002-09-16 19:29:36 +00004096#if defined(__GNUC__)
4097# define WC_COMBOBOXEXW (const WCHAR []){ 'C','o','m','b','o', \
4098 'B','o','x','E','x','3','2',0 }
4099#elif defined(_MSC_VER)
4100# define WC_COMBOBOXEXW L"ComboBoxEx32"
4101#else
Jon Griffiths7a6bad82001-01-22 02:13:58 +00004102static const WCHAR WC_COMBOBOXEXW[] = { 'C','o','m','b','o',
4103 'B','o','x','E','x','3','2',0 };
Dmitry Timoshkova9c057f2002-09-16 19:29:36 +00004104#endif
Alexandre Julliarda0d77311998-09-13 16:32:00 +00004105#define WC_COMBOBOXEX WINELIB_NAME_AW(WC_COMBOBOXEX)
4106
Francois Gougeta82de9b2000-10-13 17:08:42 +00004107#define CBEIF_TEXT 0x00000001
4108#define CBEIF_IMAGE 0x00000002
4109#define CBEIF_SELECTEDIMAGE 0x00000004
4110#define CBEIF_OVERLAY 0x00000008
4111#define CBEIF_INDENT 0x00000010
4112#define CBEIF_LPARAM 0x00000020
4113#define CBEIF_DI_SETITEM 0x10000000
4114
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00004115#define CBEM_INSERTITEMA (WM_USER+1)
4116#define CBEM_INSERTITEMW (WM_USER+11)
Alexandre Julliarda0d77311998-09-13 16:32:00 +00004117#define CBEM_INSERTITEM WINELIB_NAME_AW(CBEM_INSERTITEM)
4118#define CBEM_SETIMAGELIST (WM_USER+2)
4119#define CBEM_GETIMAGELIST (WM_USER+3)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00004120#define CBEM_GETITEMA (WM_USER+4)
4121#define CBEM_GETITEMW (WM_USER+13)
Alexandre Julliarda0d77311998-09-13 16:32:00 +00004122#define CBEM_GETITEM WINELIB_NAME_AW(CBEM_GETITEM)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00004123#define CBEM_SETITEMA (WM_USER+5)
4124#define CBEM_SETITEMW (WM_USER+12)
Alexandre Julliarda0d77311998-09-13 16:32:00 +00004125#define CBEM_SETITEM WINELIB_NAME_AW(CBEM_SETITEM)
Francois Gougetafddcfd2000-09-27 22:31:28 +00004126#define CBEM_DELETEITEM CB_DELETESTRING
Alexandre Julliarda0d77311998-09-13 16:32:00 +00004127#define CBEM_GETCOMBOCONTROL (WM_USER+6)
4128#define CBEM_GETEDITCONTROL (WM_USER+7)
4129#define CBEM_SETEXSTYLE (WM_USER+8)
4130#define CBEM_GETEXSTYLE (WM_USER+9)
4131#define CBEM_GETEXTENDEDSTYLE (WM_USER+9)
4132#define CBEM_SETEXTENDEDSTYLE (WM_USER+14)
Francois Gougetafddcfd2000-09-27 22:31:28 +00004133#define CBEM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
4134#define CBEM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
Alexandre Julliarda0d77311998-09-13 16:32:00 +00004135#define CBEM_HASEDITCHANGED (WM_USER+10)
Robert Shearmanead9e562004-08-25 02:14:28 +00004136#define CBEM_SETWINDOWTHEME CCM_SETWINDOWTHEME
Alexandre Julliarda0d77311998-09-13 16:32:00 +00004137
Guy L. Albertelli2e642082000-10-17 00:28:36 +00004138#define CBEIF_TEXT 0x00000001
4139#define CBEIF_IMAGE 0x00000002
4140#define CBEIF_SELECTEDIMAGE 0x00000004
4141#define CBEIF_OVERLAY 0x00000008
4142#define CBEIF_INDENT 0x00000010
4143#define CBEIF_LPARAM 0x00000020
4144#define CBEIF_DI_SETITEM 0x10000000
4145
Alexandre Julliarda0d77311998-09-13 16:32:00 +00004146#define CBEN_FIRST (0U-800U)
4147#define CBEN_LAST (0U-830U)
4148
Guy L. Albertelli2e642082000-10-17 00:28:36 +00004149#define CBEN_GETDISPINFOA (CBEN_FIRST - 0)
4150#define CBEN_GETDISPINFOW (CBEN_FIRST - 7)
4151#define CBEN_GETDISPINFO WINELIB_NAME_AW(CBEN_GETDISPINFO)
4152#define CBEN_INSERTITEM (CBEN_FIRST - 1)
4153#define CBEN_DELETEITEM (CBEN_FIRST - 2)
4154#define CBEN_BEGINEDIT (CBEN_FIRST - 4)
4155#define CBEN_ENDEDITA (CBEN_FIRST - 5)
4156#define CBEN_ENDEDITW (CBEN_FIRST - 6)
4157#define CBEN_ENDEDIT WINELIB_NAME_AW(CBEN_ENDEDIT)
4158#define CBEN_DRAGBEGINA (CBEN_FIRST - 8)
4159#define CBEN_DRAGBEGINW (CBEN_FIRST - 9)
4160#define CBEN_DRAGBEGIN WINELIB_NAME_AW(CBEN_DRAGBEGIN)
4161
Francois Gougete19c60a2001-02-12 19:39:58 +00004162#define CBES_EX_NOEDITIMAGE 0x00000001
4163#define CBES_EX_NOEDITIMAGEINDENT 0x00000002
4164#define CBES_EX_PATHWORDBREAKPROC 0x00000004
4165#define CBES_EX_NOSIZELIMIT 0x00000008
4166#define CBES_EX_CASESENSITIVE 0x00000010
4167
4168
Ian Schmidt2d127002000-02-26 18:30:12 +00004169typedef struct tagCOMBOBOXEXITEMA
4170{
4171 UINT mask;
4172 int iItem;
4173 LPSTR pszText;
4174 int cchTextMax;
4175 int iImage;
4176 int iSelectedImage;
4177 int iOverlay;
4178 int iIndent;
4179 LPARAM lParam;
4180} COMBOBOXEXITEMA, *PCOMBOBOXEXITEMA;
Patrik Stridvallbb721402001-07-26 21:44:12 +00004181typedef COMBOBOXEXITEMA const *PCCOMBOEXITEMA; /* Yes, there's a BOX missing */
Ian Schmidt2d127002000-02-26 18:30:12 +00004182
4183typedef struct tagCOMBOBOXEXITEMW
4184{
4185 UINT mask;
4186 int iItem;
4187 LPWSTR pszText;
4188 int cchTextMax;
4189 int iImage;
4190 int iSelectedImage;
4191 int iOverlay;
4192 int iIndent;
4193 LPARAM lParam;
4194} COMBOBOXEXITEMW, *PCOMBOBOXEXITEMW;
Patrik Stridvallbb721402001-07-26 21:44:12 +00004195typedef COMBOBOXEXITEMW const *PCCOMBOEXITEMW; /* Yes, there's a BOX missing */
Ian Schmidt2d127002000-02-26 18:30:12 +00004196
4197#define COMBOBOXEXITEM WINELIB_NAME_AW(COMBOBOXEXITEM)
Francois Gougete19c60a2001-02-12 19:39:58 +00004198#define PCOMBOBOXEXITEM WINELIB_NAME_AW(PCOMBOBOXEXITEM)
4199#define PCCOMBOBOXEXITEM WINELIB_NAME_AW(PCCOMBOEXITEM) /* Yes, there's a BOX missing */
Guy L. Albertelli1410bfe2001-01-21 21:10:29 +00004200
4201#define CBENF_KILLFOCUS 1
4202#define CBENF_RETURN 2
4203#define CBENF_ESCAPE 3
4204#define CBENF_DROPDOWN 4
4205
4206#define CBEMAXSTRLEN 260
4207
4208typedef struct tagNMCBEENDEDITW
4209{
4210 NMHDR hdr;
Guy L. Albertellie13633b2001-02-12 01:16:38 +00004211 BOOL fChanged;
Guy L. Albertelli1410bfe2001-01-21 21:10:29 +00004212 int iNewSelection;
4213 WCHAR szText[CBEMAXSTRLEN];
4214 int iWhy;
4215} NMCBEENDEDITW, *LPNMCBEENDEDITW, *PNMCBEENDEDITW;
4216
4217typedef struct tagNMCBEENDEDITA
4218{
4219 NMHDR hdr;
4220 BOOL fChanged;
4221 int iNewSelection;
4222 char szText[CBEMAXSTRLEN];
4223 int iWhy;
4224} NMCBEENDEDITA, *LPNMCBEENDEDITA, *PNMCBEENDEDITA;
4225
4226#define NMCBEENDEDIT WINELIB_NAME_AW(NMCBEENDEDIT)
4227#define LPNMCBEENDEDIT WINELIB_NAME_AW(LPNMCBEENDEDIT)
4228#define PNMCBEENDEDIT WINELIB_NAME_AW(PNMCBEENDEDIT)
4229
Francois Gougete19c60a2001-02-12 19:39:58 +00004230typedef struct
Guy L. Albertellie13633b2001-02-12 01:16:38 +00004231{
Francois Gougete19c60a2001-02-12 19:39:58 +00004232 NMHDR hdr;
4233 COMBOBOXEXITEMA ceItem;
Guy L. Albertellie13633b2001-02-12 01:16:38 +00004234} NMCOMBOBOXEXA, *PNMCOMBOBOXEXA;
4235
Francois Gougete19c60a2001-02-12 19:39:58 +00004236typedef struct
Guy L. Albertellie13633b2001-02-12 01:16:38 +00004237{
Francois Gougete19c60a2001-02-12 19:39:58 +00004238 NMHDR hdr;
4239 COMBOBOXEXITEMW ceItem;
Guy L. Albertellie13633b2001-02-12 01:16:38 +00004240} NMCOMBOBOXEXW, *PNMCOMBOBOXEXW;
4241
4242#define NMCOMBOBOXEX WINELIB_NAME_AW(NMCOMBOBOXEX)
4243#define PNMCOMBOBOXEX WINELIB_NAME_AW(PNMCOMBOBOXEX)
4244
Francois Gougete19c60a2001-02-12 19:39:58 +00004245typedef struct
4246{
4247 NMHDR hdr;
4248 int iItemid;
4249 char szText[CBEMAXSTRLEN];
4250} NMCBEDRAGBEGINA, *PNMCBEDRAGBEGINA, *LPNMCBEDRAGBEGINA;
4251
4252typedef struct
4253{
4254 NMHDR hdr;
4255 int iItemid;
4256 WCHAR szText[CBEMAXSTRLEN];
4257} NMCBEDRAGBEGINW, *PNMCBEDRAGBEGINW, *LPNMCBEDRAGBEGINW;
4258
4259#define NMCBEDRAGBEGIN WINELIB_NAME_AW(NMCBEDRAGBEGIN)
4260#define PNMCBEDRAGBEGIN WINELIB_NAME_AW(PNMCBEDRAGBEGIN)
4261#define LPNMCBEDRAGBEGIN WINELIB_NAME_AW(LPNMCBEDRAGBEGIN)
4262
Guy L. Albertelli1410bfe2001-01-21 21:10:29 +00004263
Alexandre Julliarda0d77311998-09-13 16:32:00 +00004264/* Hotkey control */
4265
Jon Griffiths7a6bad82001-01-22 02:13:58 +00004266#define HOTKEY_CLASSA "msctls_hotkey32"
Dmitry Timoshkova9c057f2002-09-16 19:29:36 +00004267#if defined(__GNUC__)
4268# define HOTKEY_CLASSW (const WCHAR []){ 'm','s','c','t','l','s','_', \
4269 'h','o','t','k','e','y','3','2',0 }
4270#elif defined(_MSC_VER)
4271# define HOTKEY_CLASSW L"msctls_hotkey32"
4272#else
Jon Griffiths7a6bad82001-01-22 02:13:58 +00004273static const WCHAR HOTKEY_CLASSW[] = { 'm','s','c','t','l','s','_',
4274 'h','o','t','k','e','y','3','2',0 };
Dmitry Timoshkova9c057f2002-09-16 19:29:36 +00004275#endif
Alexandre Julliarda0d77311998-09-13 16:32:00 +00004276#define HOTKEY_CLASS WINELIB_NAME_AW(HOTKEY_CLASS)
4277
4278#define HOTKEYF_SHIFT 0x01
4279#define HOTKEYF_CONTROL 0x02
4280#define HOTKEYF_ALT 0x04
4281#define HOTKEYF_EXT 0x08
4282
4283#define HKCOMB_NONE 0x0001
4284#define HKCOMB_S 0x0002
4285#define HKCOMB_C 0x0004
4286#define HKCOMB_A 0x0008
4287#define HKCOMB_SC 0x0010
4288#define HKCOMB_SA 0x0020
4289#define HKCOMB_CA 0x0040
4290#define HKCOMB_SCA 0x0080
4291
4292#define HKM_SETHOTKEY (WM_USER+1)
4293#define HKM_GETHOTKEY (WM_USER+2)
4294#define HKM_SETRULES (WM_USER+3)
4295
4296
4297/* animate control */
4298
Alexandre Julliarda3960291999-02-26 11:11:13 +00004299#define ANIMATE_CLASSA "SysAnimate32"
Dmitry Timoshkova9c057f2002-09-16 19:29:36 +00004300#if defined(__GNUC__)
4301# define ANIMATE_CLASSW (const WCHAR []){ 'S','y','s', \
4302 'A','n','i','m','a','t','e','3','2',0 }
4303#elif defined(_MSC_VER)
4304# define ANIMATE_CLASSW L"SysAnimate32"
4305#else
Jon Griffiths7a6bad82001-01-22 02:13:58 +00004306static const WCHAR ANIMATE_CLASSW[] = { 'S','y','s',
4307 'A','n','i','m','a','t','e','3','2',0 };
Dmitry Timoshkova9c057f2002-09-16 19:29:36 +00004308#endif
Alexandre Julliarda0d77311998-09-13 16:32:00 +00004309#define ANIMATE_CLASS WINELIB_NAME_AW(ANIMATE_CLASS)
4310
4311#define ACS_CENTER 0x0001
4312#define ACS_TRANSPARENT 0x0002
4313#define ACS_AUTOPLAY 0x0004
4314#define ACS_TIMER 0x0008 /* no threads, just timers */
4315
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00004316#define ACM_OPENA (WM_USER+100)
4317#define ACM_OPENW (WM_USER+103)
Alexandre Julliarda0d77311998-09-13 16:32:00 +00004318#define ACM_OPEN WINELIB_NAME_AW(ACM_OPEN)
4319#define ACM_PLAY (WM_USER+101)
4320#define ACM_STOP (WM_USER+102)
4321
4322#define ACN_START 1
4323#define ACN_STOP 2
4324
Alexandre Julliarda3960291999-02-26 11:11:13 +00004325#define Animate_CreateA(hwndP,id,dwStyle,hInstance) \
4326 CreateWindowA(ANIMATE_CLASSA,NULL,dwStyle,0,0,0,0,hwndP,(HMENU)(id),hInstance,NULL)
4327#define Animate_CreateW(hwndP,id,dwStyle,hInstance) \
4328 CreateWindowW(ANIMATE_CLASSW,NULL,dwStyle,0,0,0,0,hwndP,(HMENU)(id),hInstance,NULL)
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00004329#define Animate_Create WINELIB_NAME_AW(Animate_Create)
Alexandre Julliarda3960291999-02-26 11:11:13 +00004330#define Animate_OpenA(hwnd,szName) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004331 (BOOL)SNDMSGA(hwnd,ACM_OPENA,0,(LPARAM)(LPSTR)(szName))
Alexandre Julliarda3960291999-02-26 11:11:13 +00004332#define Animate_OpenW(hwnd,szName) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004333 (BOOL)SNDMSGW(hwnd,ACM_OPENW,0,(LPARAM)(LPWSTR)(szName))
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00004334#define Animate_Open WINELIB_NAME_AW(Animate_Open)
Alexandre Julliarda3960291999-02-26 11:11:13 +00004335#define Animate_OpenExA(hwnd,hInst,szName) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004336 (BOOL)SNDMSGA(hwnd,ACM_OPENA,(WPARAM)hInst,(LPARAM)(LPSTR)(szName))
Alexandre Julliarda3960291999-02-26 11:11:13 +00004337#define Animate_OpenExW(hwnd,hInst,szName) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004338 (BOOL)SNDMSGW(hwnd,ACM_OPENW,(WPARAM)hInst,(LPARAM)(LPWSTR)(szName))
Alexandre Julliardd30dfd21998-09-27 18:28:36 +00004339#define Animate_OpenEx WINELIB_NAME_AW(Animate_OpenEx)
Alexandre Julliarda0d77311998-09-13 16:32:00 +00004340#define Animate_Play(hwnd,from,to,rep) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004341 (BOOL)SNDMSGA(hwnd,ACM_PLAY,(WPARAM)(UINT)(rep),(LPARAM)MAKELONG(from,to))
Alexandre Julliarda0d77311998-09-13 16:32:00 +00004342#define Animate_Stop(hwnd) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004343 (BOOL)SNDMSGA(hwnd,ACM_STOP,0,0)
Alexandre Julliarda0d77311998-09-13 16:32:00 +00004344#define Animate_Close(hwnd) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004345 (BOOL)SNDMSGA(hwnd,ACM_OPENA,0,0)
Alexandre Julliarda0d77311998-09-13 16:32:00 +00004346#define Animate_Seek(hwnd,frame) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004347 (BOOL)SNDMSGA(hwnd,ACM_PLAY,1,(LPARAM)MAKELONG(frame,frame))
Alexandre Julliarda0d77311998-09-13 16:32:00 +00004348
4349
Eric Kohl17216d31998-10-11 13:21:17 +00004350/**************************************************************************
4351 * IP Address control
4352 */
4353
Alexandre Julliarda3960291999-02-26 11:11:13 +00004354#define WC_IPADDRESSA "SysIPAddress32"
Dmitry Timoshkova9c057f2002-09-16 19:29:36 +00004355#if defined(__GNUC__)
4356# define WC_IPADDRESSW (const WCHAR []){ 'S','y','s', \
4357 'I','P','A','d','d','r','e','s','s','3','2',0 }
4358#elif defined(_MSC_VER)
4359# define WC_IPADDRESSW L"SysIPAddress32"
4360#else
Jon Griffiths7a6bad82001-01-22 02:13:58 +00004361static const WCHAR WC_IPADDRESSW[] = { 'S','y','s',
4362 'I','P','A','d','d','r','e','s','s','3','2',0 };
Dmitry Timoshkova9c057f2002-09-16 19:29:36 +00004363#endif
Eric Kohl17216d31998-10-11 13:21:17 +00004364#define WC_IPADDRESS WINELIB_NAME_AW(WC_IPADDRESS)
4365
4366#define IPM_CLEARADDRESS (WM_USER+100)
4367#define IPM_SETADDRESS (WM_USER+101)
4368#define IPM_GETADDRESS (WM_USER+102)
4369#define IPM_SETRANGE (WM_USER+103)
4370#define IPM_SETFOCUS (WM_USER+104)
4371#define IPM_ISBLANK (WM_USER+105)
4372
Alex Priemd70de841998-12-26 11:48:35 +00004373#define IPN_FIRST (0U-860U)
4374#define IPN_LAST (0U-879U)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00004375#define IPN_FIELDCHANGED (IPN_FIRST-0)
Eric Kohl17216d31998-10-11 13:21:17 +00004376
4377typedef struct tagNMIPADDRESS
4378{
4379 NMHDR hdr;
Alexandre Julliarda3960291999-02-26 11:11:13 +00004380 INT iField;
4381 INT iValue;
Eric Kohl17216d31998-10-11 13:21:17 +00004382} NMIPADDRESS, *LPNMIPADDRESS;
4383
4384#define MAKEIPRANGE(low,high) \
4385 ((LPARAM)(WORD)(((BYTE)(high)<<8)+(BYTE)(low)))
4386#define MAKEIPADDRESS(b1,b2,b3,b4) \
4387 ((LPARAM)(((DWORD)(b1)<<24)+((DWORD)(b2)<16)+((DWORD)(b3)<<8)+((DWORD)(b4))))
4388
4389#define FIRST_IPADDRESS(x) (((x)>>24)&0xff)
4390#define SECOND_IPADDRESS(x) (((x)>>16)&0xff)
4391#define THIRD_IPADDRESS(x) (((x)>>8)&0xff)
4392#define FOURTH_IPADDRESS(x) ((x)&0xff)
4393
4394
4395/**************************************************************************
4396 * Native Font control
4397 */
4398
Alexandre Julliarda3960291999-02-26 11:11:13 +00004399#define WC_NATIVEFONTCTLA "NativeFontCtl"
Dmitry Timoshkova9c057f2002-09-16 19:29:36 +00004400#if defined(__GNUC__)
4401# define WC_NATIVEFONTCTLW (const WCHAR []){ 'N','a','t','i','v','e', \
4402 'F','o','n','t','C','t','l',0 }
4403#elif defined(_MSC_VER)
4404# define WC_NATIVEFONTCTLW L"NativeFontCtl"
4405#else
Jon Griffiths7a6bad82001-01-22 02:13:58 +00004406static const WCHAR WC_NATIVEFONTCTLW[] = { 'N','a','t','i','v','e',
4407 'F','o','n','t','C','t','l',0 };
Dmitry Timoshkova9c057f2002-09-16 19:29:36 +00004408#endif
Eric Kohl17216d31998-10-11 13:21:17 +00004409#define WC_NATIVEFONTCTL WINELIB_NAME_AW(WC_NATIVEFONTCTL)
4410
4411#define NFS_EDIT 0x0001
4412#define NFS_STATIC 0x0002
4413#define NFS_LISTCOMBO 0x0004
4414#define NFS_BUTTON 0x0008
4415#define NFS_ALL 0x0010
4416
Alexandre Julliarda0d77311998-09-13 16:32:00 +00004417
4418/**************************************************************************
Eric Kohla8670301998-11-08 11:30:27 +00004419 * Month calendar control
Alex Priemb2e91b61999-07-10 12:00:04 +00004420 *
Eric Kohla8670301998-11-08 11:30:27 +00004421 */
4422
Alexandre Julliarda3960291999-02-26 11:11:13 +00004423#define MONTHCAL_CLASSA "SysMonthCal32"
Dmitry Timoshkova9c057f2002-09-16 19:29:36 +00004424#if defined(__GNUC__)
4425# define MONTHCAL_CLASSW (const WCHAR []){ 'S','y','s', \
4426 'M','o','n','t','h','C','a','l','3','2',0 }
4427#elif defined(_MSC_VER)
4428# define MONTHCAL_CLASSW L"SysMonthCal32"
4429#else
Jon Griffiths7a6bad82001-01-22 02:13:58 +00004430static const WCHAR MONTHCAL_CLASSW[] = { 'S','y','s',
4431 'M','o','n','t','h','C','a','l','3','2',0 };
Dmitry Timoshkova9c057f2002-09-16 19:29:36 +00004432#endif
Eric Kohla8670301998-11-08 11:30:27 +00004433#define MONTHCAL_CLASS WINELIB_NAME_AW(MONTHCAL_CLASS)
4434
Alex Priemb2e91b61999-07-10 12:00:04 +00004435#define MCM_FIRST 0x1000
4436#define MCN_FIRST (0U-750U)
4437#define MCN_LAST (0U-759U)
4438
4439
4440#define MCM_GETCURSEL (MCM_FIRST + 1)
4441#define MCM_SETCURSEL (MCM_FIRST + 2)
4442#define MCM_GETMAXSELCOUNT (MCM_FIRST + 3)
4443#define MCM_SETMAXSELCOUNT (MCM_FIRST + 4)
4444#define MCM_GETSELRANGE (MCM_FIRST + 5)
4445#define MCM_SETSELRANGE (MCM_FIRST + 6)
4446#define MCM_GETMONTHRANGE (MCM_FIRST + 7)
4447#define MCM_SETDAYSTATE (MCM_FIRST + 8)
4448#define MCM_GETMINREQRECT (MCM_FIRST + 9)
4449#define MCM_SETCOLOR (MCM_FIRST + 10)
4450#define MCM_GETCOLOR (MCM_FIRST + 11)
4451#define MCM_SETTODAY (MCM_FIRST + 12)
4452#define MCM_GETTODAY (MCM_FIRST + 13)
4453#define MCM_HITTEST (MCM_FIRST + 14)
4454#define MCM_SETFIRSTDAYOFWEEK (MCM_FIRST + 15)
4455#define MCM_GETFIRSTDAYOFWEEK (MCM_FIRST + 16)
4456#define MCM_GETRANGE (MCM_FIRST + 17)
4457#define MCM_SETRANGE (MCM_FIRST + 18)
4458#define MCM_GETMONTHDELTA (MCM_FIRST + 19)
4459#define MCM_SETMONTHDELTA (MCM_FIRST + 20)
4460#define MCM_GETMAXTODAYWIDTH (MCM_FIRST + 21)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00004461#define MCM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
4462#define MCM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
Alex Priemb2e91b61999-07-10 12:00:04 +00004463
4464
4465/* Notifications */
4466
4467#define MCN_SELCHANGE (MCN_FIRST + 1)
4468#define MCN_GETDAYSTATE (MCN_FIRST + 3)
4469#define MCN_SELECT (MCN_FIRST + 4)
4470
Vincent Béron9a624912002-05-31 23:06:46 +00004471#define MCSC_BACKGROUND 0
4472#define MCSC_TEXT 1
4473#define MCSC_TITLEBK 2
Alex Priemb2e91b61999-07-10 12:00:04 +00004474#define MCSC_TITLETEXT 3
Vincent Béron9a624912002-05-31 23:06:46 +00004475#define MCSC_MONTHBK 4
4476#define MCSC_TRAILINGTEXT 5
Alex Priemb2e91b61999-07-10 12:00:04 +00004477
4478#define MCS_DAYSTATE 0x0001
4479#define MCS_MULTISELECT 0x0002
4480#define MCS_WEEKNUMBERS 0x0004
4481#define MCS_NOTODAY 0x0010
4482#define MCS_NOTODAYCIRCLE 0x0008
4483
4484#define MCHT_TITLE 0x00010000
4485#define MCHT_CALENDAR 0x00020000
4486#define MCHT_TODAYLINK 0x00030000
4487
Vincent Béron9a624912002-05-31 23:06:46 +00004488#define MCHT_NEXT 0x01000000
4489#define MCHT_PREV 0x02000000
Alex Priemb2e91b61999-07-10 12:00:04 +00004490#define MCHT_NOWHERE 0x00000000
4491#define MCHT_TITLEBK (MCHT_TITLE)
4492#define MCHT_TITLEMONTH (MCHT_TITLE | 0x0001)
4493#define MCHT_TITLEYEAR (MCHT_TITLE | 0x0002)
4494#define MCHT_TITLEBTNNEXT (MCHT_TITLE | MCHT_NEXT | 0x0003)
4495#define MCHT_TITLEBTNPREV (MCHT_TITLE | MCHT_PREV | 0x0003)
4496
4497#define MCHT_CALENDARBK (MCHT_CALENDAR)
4498#define MCHT_CALENDARDATE (MCHT_CALENDAR | 0x0001)
4499#define MCHT_CALENDARDATENEXT (MCHT_CALENDARDATE | MCHT_NEXT)
4500#define MCHT_CALENDARDATEPREV (MCHT_CALENDARDATE | MCHT_PREV)
4501#define MCHT_CALENDARDAY (MCHT_CALENDAR | 0x0002)
4502#define MCHT_CALENDARWEEKNUM (MCHT_CALENDAR | 0x0003)
4503
4504
4505
Vincent Béron9a624912002-05-31 23:06:46 +00004506#define GMR_VISIBLE 0
4507#define GMR_DAYSTATE 1
Alex Priemb2e91b61999-07-10 12:00:04 +00004508
4509
4510/* Month calendar's structures */
4511
4512
4513typedef struct {
4514 UINT cbSize;
4515 POINT pt;
Vincent Béron9a624912002-05-31 23:06:46 +00004516 UINT uHit;
Alex Priemb2e91b61999-07-10 12:00:04 +00004517 SYSTEMTIME st;
4518} MCHITTESTINFO, *PMCHITTESTINFO;
4519
4520typedef struct tagNMSELCHANGE
4521{
Vincent Béron9a624912002-05-31 23:06:46 +00004522 NMHDR nmhdr;
Alex Priemb2e91b61999-07-10 12:00:04 +00004523 SYSTEMTIME stSelStart;
4524 SYSTEMTIME stSelEnd;
4525} NMSELCHANGE, *LPNMSELCHANGE;
4526
4527typedef NMSELCHANGE NMSELECT, *LPNMSELECT;
4528typedef DWORD MONTHDAYSTATE, *LPMONTHDAYSTATE;
4529
4530typedef struct tagNMDAYSTATE
4531{
Vincent Béron9a624912002-05-31 23:06:46 +00004532 NMHDR nmhdr;
Alex Priemb2e91b61999-07-10 12:00:04 +00004533 SYSTEMTIME stStart;
4534 int cDayState;
4535 LPMONTHDAYSTATE prgDayState;
4536} NMDAYSTATE, *LPNMDAYSTATE;
4537
4538
4539/* macros */
4540
4541#define MonthCal_GetCurSel(hmc, pst) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004542 (BOOL)SNDMSGA(hmc, MCM_GETCURSEL, 0, (LPARAM)(pst))
Alex Priemb2e91b61999-07-10 12:00:04 +00004543#define MonthCal_SetCurSel(hmc, pst) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004544 (BOOL)SNDMSGA(hmc, MCM_SETCURSEL, 0, (LPARAM)(pst))
Alex Priemb2e91b61999-07-10 12:00:04 +00004545#define MonthCal_GetMaxSelCount(hmc) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004546 (DWORD)SNDMSGA(hmc, MCM_GETMAXSELCOUNT, 0, 0L)
Alex Priemb2e91b61999-07-10 12:00:04 +00004547#define MonthCal_SetMaxSelCount(hmc, n) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004548 (BOOL)SNDMSGA(hmc, MCM_SETMAXSELCOUNT, (WPARAM)(n), 0L)
Alex Priemb2e91b61999-07-10 12:00:04 +00004549#define MonthCal_GetSelRange(hmc, rgst) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004550 SNDMSGA(hmc, MCM_GETSELRANGE, 0, (LPARAM) (rgst))
Alex Priemb2e91b61999-07-10 12:00:04 +00004551#define MonthCal_SetSelRange(hmc, rgst) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004552 SNDMSGA(hmc, MCM_SETSELRANGE, 0, (LPARAM) (rgst))
Alex Priemb2e91b61999-07-10 12:00:04 +00004553#define MonthCal_GetMonthRange(hmc, gmr, rgst) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004554 (DWORD)SNDMSGA(hmc, MCM_GETMONTHRANGE, (WPARAM)(gmr), (LPARAM)(rgst))
Alex Priemb2e91b61999-07-10 12:00:04 +00004555#define MonthCal_SetDayState(hmc, cbds, rgds) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004556 SNDMSGA(hmc, MCM_SETDAYSTATE, (WPARAM)(cbds), (LPARAM)(rgds))
Alex Priemb2e91b61999-07-10 12:00:04 +00004557#define MonthCal_GetMinReqRect(hmc, prc) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004558 SNDMSGA(hmc, MCM_GETMINREQRECT, 0, (LPARAM)(prc))
Alex Priemb2e91b61999-07-10 12:00:04 +00004559#define MonthCal_SetColor(hmc, iColor, clr)\
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004560 SNDMSGA(hmc, MCM_SETCOLOR, iColor, clr)
Alex Priemb2e91b61999-07-10 12:00:04 +00004561#define MonthCal_GetColor(hmc, iColor) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004562 SNDMSGA(hmc, MCM_SETCOLOR, iColor, 0)
Alex Priemb2e91b61999-07-10 12:00:04 +00004563#define MonthCal_GetToday(hmc, pst)\
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004564 (BOOL)SNDMSGA(hmc, MCM_GETTODAY, 0, (LPARAM)pst)
Alex Priemb2e91b61999-07-10 12:00:04 +00004565#define MonthCal_SetToday(hmc, pst)\
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004566 SNDMSGA(hmc, MCM_SETTODAY, 0, (LPARAM)pst)
Alex Priemb2e91b61999-07-10 12:00:04 +00004567#define MonthCal_HitTest(hmc, pinfo) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004568 SNDMSGA(hmc, MCM_HITTEST, 0, (LPARAM)(PMCHITTESTINFO)pinfo)
Alex Priemb2e91b61999-07-10 12:00:04 +00004569#define MonthCal_SetFirstDayOfWeek(hmc, iDay) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004570 SNDMSGA(hmc, MCM_SETFIRSTDAYOFWEEK, 0, iDay)
Alex Priemb2e91b61999-07-10 12:00:04 +00004571#define MonthCal_GetFirstDayOfWeek(hmc) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004572 (DWORD)SNDMSGA(hmc, MCM_GETFIRSTDAYOFWEEK, 0, 0)
Alex Priemb2e91b61999-07-10 12:00:04 +00004573#define MonthCal_GetRange(hmc, rgst) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004574 (DWORD)SNDMSGA(hmc, MCM_GETRANGE, 0, (LPARAM)(rgst))
Alex Priemb2e91b61999-07-10 12:00:04 +00004575#define MonthCal_SetRange(hmc, gd, rgst) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004576 (BOOL)SNDMSGA(hmc, MCM_SETRANGE, (WPARAM)(gd), (LPARAM)(rgst))
Alex Priemb2e91b61999-07-10 12:00:04 +00004577#define MonthCal_GetMonthDelta(hmc) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004578 (int)SNDMSGA(hmc, MCM_GETMONTHDELTA, 0, 0)
Alex Priemb2e91b61999-07-10 12:00:04 +00004579#define MonthCal_SetMonthDelta(hmc, n) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004580 (int)SNDMSGA(hmc, MCM_SETMONTHDELTA, n, 0)
Alex Priemb2e91b61999-07-10 12:00:04 +00004581#define MonthCal_GetMaxTodayWidth(hmc) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004582 (DWORD)SNDMSGA(hmc, MCM_GETMAXTODAYWIDTH, 0, 0)
Alex Priemb2e91b61999-07-10 12:00:04 +00004583#define MonthCal_SetUnicodeFormat(hwnd, fUnicode) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004584 (BOOL)SNDMSGA((hwnd), MCM_SETUNICODEFORMAT, (WPARAM)(fUnicode), 0)
Alex Priemb2e91b61999-07-10 12:00:04 +00004585#define MonthCal_GetUnicodeFormat(hwnd) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004586 (BOOL)SNDMSGA((hwnd), MCM_GETUNICODEFORMAT, 0, 0)
Alex Priemb2e91b61999-07-10 12:00:04 +00004587
Eric Kohla8670301998-11-08 11:30:27 +00004588
4589/**************************************************************************
4590 * Date and time picker control
4591 */
4592
Alexandre Julliarda3960291999-02-26 11:11:13 +00004593#define DATETIMEPICK_CLASSA "SysDateTimePick32"
Dmitry Timoshkova9c057f2002-09-16 19:29:36 +00004594#if defined(__GNUC__)
4595# define DATETIMEPICK_CLASSW (const WCHAR []){ 'S','y','s', \
4596 'D','a','t','e','T','i','m','e','P','i','c','k','3','2',0 }
4597#elif defined(_MSC_VER)
4598# define DATETIMEPICK_CLASSW L"SysDateTimePick32"
4599#else
Jon Griffiths7a6bad82001-01-22 02:13:58 +00004600static const WCHAR DATETIMEPICK_CLASSW[] = { 'S','y','s',
4601 'D','a','t','e','T','i','m','e','P','i','c','k','3','2',0 };
Dmitry Timoshkova9c057f2002-09-16 19:29:36 +00004602#endif
Eric Kohla8670301998-11-08 11:30:27 +00004603#define DATETIMEPICK_CLASS WINELIB_NAME_AW(DATETIMEPICK_CLASS)
4604
Alexandre Julliard638f1691999-01-17 16:32:32 +00004605#define DTM_FIRST 0x1000
Jon Griffiths7a6bad82001-01-22 02:13:58 +00004606#define DTN_FIRST (0U-760U)
Alex Priemc8cc3251999-07-31 11:12:45 +00004607#define DTN_LAST (0U-799U)
4608
Alexandre Julliard638f1691999-01-17 16:32:32 +00004609
4610#define DTM_GETSYSTEMTIME (DTM_FIRST+1)
4611#define DTM_SETSYSTEMTIME (DTM_FIRST+2)
4612#define DTM_GETRANGE (DTM_FIRST+3)
4613#define DTM_SETRANGE (DTM_FIRST+4)
Dimitrie O. Paun846f2532003-04-27 20:36:08 +00004614#define DTM_SETFORMATA (DTM_FIRST+5)
4615#define DTM_SETFORMATW (DTM_FIRST + 50)
Alexandre Julliard638f1691999-01-17 16:32:32 +00004616#define DTM_SETFORMAT WINELIB_NAME_AW(DTM_SETFORMAT)
4617#define DTM_SETMCCOLOR (DTM_FIRST+6)
4618#define DTM_GETMCCOLOR (DTM_FIRST+7)
Alexandre Julliard638f1691999-01-17 16:32:32 +00004619#define DTM_GETMONTHCAL (DTM_FIRST+8)
Alexandre Julliard638f1691999-01-17 16:32:32 +00004620#define DTM_SETMCFONT (DTM_FIRST+9)
4621#define DTM_GETMCFONT (DTM_FIRST+10)
4622
4623
Alex Priemc8cc3251999-07-31 11:12:45 +00004624/* Datetime Notifications */
4625
Vincent Béron9a624912002-05-31 23:06:46 +00004626#define DTN_DATETIMECHANGE (DTN_FIRST + 1)
4627#define DTN_USERSTRINGA (DTN_FIRST + 2)
4628#define DTN_WMKEYDOWNA (DTN_FIRST + 3)
4629#define DTN_FORMATA (DTN_FIRST + 4)
4630#define DTN_FORMATQUERYA (DTN_FIRST + 5)
Alex Priemc8cc3251999-07-31 11:12:45 +00004631#define DTN_DROPDOWN (DTN_FIRST + 6)
Vincent Béron9a624912002-05-31 23:06:46 +00004632#define DTN_CLOSEUP (DTN_FIRST + 7)
Alex Priemc8cc3251999-07-31 11:12:45 +00004633#define DTN_USERSTRINGW (DTN_FIRST + 15)
4634#define DTN_WMKEYDOWNW (DTN_FIRST + 16)
4635#define DTN_FORMATW (DTN_FIRST + 17)
4636#define DTN_FORMATQUERYW (DTN_FIRST + 18)
4637
Peter Hunnisett565b0082000-09-19 02:43:00 +00004638#define DTN_USERSTRING WINELIB_NAME_AW(DTN_USERSTRING)
4639#define DTN_WMKEYDOWN WINELIB_NAME_AW(DTN_WMKEYDOWN)
4640#define DTN_FORMAT WINELIB_NAME_AW(DTN_FORMAT)
4641#define DTN_FORMATQUERY WINELIB_NAME_AW(DTN_FORMATQUERY)
Alex Priemc8cc3251999-07-31 11:12:45 +00004642
Vincent Béron9a624912002-05-31 23:06:46 +00004643#define DTS_SHORTDATEFORMAT 0x0000
4644#define DTS_UPDOWN 0x0001
4645#define DTS_SHOWNONE 0x0002
4646#define DTS_LONGDATEFORMAT 0x0004
4647#define DTS_TIMEFORMAT 0x0009
4648#define DTS_APPCANPARSE 0x0010
4649#define DTS_RIGHTALIGN 0x0020
Alex Priemc8cc3251999-07-31 11:12:45 +00004650
4651typedef struct tagNMDATETIMECHANGE
4652{
4653 NMHDR nmhdr;
Vincent Béron9a624912002-05-31 23:06:46 +00004654 DWORD dwFlags;
4655 SYSTEMTIME st;
Alex Priemc8cc3251999-07-31 11:12:45 +00004656} NMDATETIMECHANGE, *LPNMDATETIMECHANGE;
4657
4658typedef struct tagNMDATETIMESTRINGA
4659{
4660 NMHDR nmhdr;
Vincent Béron9a624912002-05-31 23:06:46 +00004661 LPCSTR pszUserString;
4662 SYSTEMTIME st;
4663 DWORD dwFlags;
Alex Priemc8cc3251999-07-31 11:12:45 +00004664} NMDATETIMESTRINGA, *LPNMDATETIMESTRINGA;
4665
4666typedef struct tagNMDATETIMESTRINGW
4667{
4668 NMHDR nmhdr;
4669 LPCWSTR pszUserString;
Vincent Béron9a624912002-05-31 23:06:46 +00004670 SYSTEMTIME st;
4671 DWORD dwFlags;
Alex Priemc8cc3251999-07-31 11:12:45 +00004672} NMDATETIMESTRINGW, *LPNMDATETIMESTRINGW;
4673
Peter Hunnisett565b0082000-09-19 02:43:00 +00004674DECL_WINELIB_TYPE_AW(NMDATETIMESTRING)
4675DECL_WINELIB_TYPE_AW(LPNMDATETIMESTRING)
Alex Priemc8cc3251999-07-31 11:12:45 +00004676
4677typedef struct tagNMDATETIMEWMKEYDOWNA
4678{
4679 NMHDR nmhdr;
Vincent Béron9a624912002-05-31 23:06:46 +00004680 int nVirtKey;
4681 LPCSTR pszFormat;
4682 SYSTEMTIME st;
Alex Priemc8cc3251999-07-31 11:12:45 +00004683} NMDATETIMEWMKEYDOWNA, *LPNMDATETIMEWMKEYDOWNA;
4684
4685typedef struct tagNMDATETIMEWMKEYDOWNW
4686{
4687 NMHDR nmhdr;
Vincent Béron9a624912002-05-31 23:06:46 +00004688 int nVirtKey;
4689 LPCWSTR pszFormat;
4690 SYSTEMTIME st;
Alex Priemc8cc3251999-07-31 11:12:45 +00004691} NMDATETIMEWMKEYDOWNW, *LPNMDATETIMEWMKEYDOWNW;
4692
Peter Hunnisett565b0082000-09-19 02:43:00 +00004693DECL_WINELIB_TYPE_AW(NMDATETIMEWMKEYDOWN)
4694DECL_WINELIB_TYPE_AW(LPNMDATETIMEWMKEYDOWN)
Alex Priemc8cc3251999-07-31 11:12:45 +00004695
4696typedef struct tagNMDATETIMEFORMATA
4697{
4698 NMHDR nmhdr;
Vincent Béron9a624912002-05-31 23:06:46 +00004699 LPCSTR pszFormat;
4700 SYSTEMTIME st;
4701 LPCSTR pszDisplay;
4702 CHAR szDisplay[64];
Alex Priemc8cc3251999-07-31 11:12:45 +00004703} NMDATETIMEFORMATA, *LPNMDATETIMEFORMATA;
4704
4705
4706typedef struct tagNMDATETIMEFORMATW
4707{
4708 NMHDR nmhdr;
Vincent Béron9a624912002-05-31 23:06:46 +00004709 LPCWSTR pszFormat;
4710 SYSTEMTIME st;
Alex Priemc8cc3251999-07-31 11:12:45 +00004711 LPCWSTR pszDisplay;
4712 WCHAR szDisplay[64];
4713} NMDATETIMEFORMATW, *LPNMDATETIMEFORMATW;
4714
Peter Hunnisett565b0082000-09-19 02:43:00 +00004715DECL_WINELIB_TYPE_AW(NMDATETIMEFORMAT)
4716DECL_WINELIB_TYPE_AW(LPNMDATETIMEFORMAT)
Alex Priemc8cc3251999-07-31 11:12:45 +00004717
4718typedef struct tagNMDATETIMEFORMATQUERYA
4719{
4720 NMHDR nmhdr;
Vincent Béron9a624912002-05-31 23:06:46 +00004721 LPCSTR pszFormat;
4722 SIZE szMax;
Alex Priemc8cc3251999-07-31 11:12:45 +00004723} NMDATETIMEFORMATQUERYA, *LPNMDATETIMEFORMATQUERYA;
4724
4725typedef struct tagNMDATETIMEFORMATQUERYW
4726{
4727 NMHDR nmhdr;
Vincent Béron9a624912002-05-31 23:06:46 +00004728 LPCWSTR pszFormat;
4729 SIZE szMax;
Alex Priemc8cc3251999-07-31 11:12:45 +00004730} NMDATETIMEFORMATQUERYW, *LPNMDATETIMEFORMATQUERYW;
4731
Peter Hunnisett565b0082000-09-19 02:43:00 +00004732DECL_WINELIB_TYPE_AW(NMDATETIMEFORMATQUERY)
4733DECL_WINELIB_TYPE_AW(LPNMDATETIMEFORMATQUERY)
Alex Priemc8cc3251999-07-31 11:12:45 +00004734
Alexandre Julliard638f1691999-01-17 16:32:32 +00004735
4736
4737#define GDT_ERROR -1
4738#define GDT_VALID 0
4739#define GDT_NONE 1
4740
4741#define GDTR_MIN 0x0001
4742#define GDTR_MAX 0x0002
4743
4744
Bertho Stultiensfbde5be1999-08-14 15:01:54 +00004745#define DateTime_GetSystemtime(hdp, pst) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004746 (DWORD)SNDMSGA (hdp, DTM_GETSYSTEMTIME , 0, (LPARAM)(pst))
Bertho Stultiensfbde5be1999-08-14 15:01:54 +00004747#define DateTime_SetSystemtime(hdp, gd, pst) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004748 (BOOL)SNDMSGA (hdp, DTM_SETSYSTEMTIME, (LPARAM)(gd), (LPARAM)(pst))
Bertho Stultiensfbde5be1999-08-14 15:01:54 +00004749#define DateTime_GetRange(hdp, rgst) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004750 (DWORD)SNDMSGA (hdp, DTM_GETRANGE, 0, (LPARAM)(rgst))
Bertho Stultiensfbde5be1999-08-14 15:01:54 +00004751#define DateTime_SetRange(hdp, gd, rgst) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004752 (BOOL)SNDMSGA (hdp, DTM_SETRANGE, (WPARAM)(gd), (LPARAM)(rgst))
Bertho Stultiensfbde5be1999-08-14 15:01:54 +00004753#define DateTime_SetFormatA(hdp, sz) \
Jon Griffithsee6884b2004-12-08 13:39:52 +00004754 (BOOL)SNDMSGA (hdp, DTM_SETFORMATA, 0, (LPARAM)(sz))
Bertho Stultiensfbde5be1999-08-14 15:01:54 +00004755#define DateTime_SetFormatW(hdp, sz) \
Jon Griffithsee6884b2004-12-08 13:39:52 +00004756 (BOOL)SNDMSGW (hdp, DTM_SETFORMATW, 0, (LPARAM)(sz))
4757#define DateTime_SetFormat WINELIB_NAME_AW(DateTime_SetFormat)
Bertho Stultiensfbde5be1999-08-14 15:01:54 +00004758#define DateTime_GetMonthCalColor(hdp, iColor) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004759 SNDMSGA (hdp, DTM_GETMCCOLOR, iColor, 0)
Andrew Webb22a23832005-11-23 15:13:59 +01004760#define DateTime_SetMonthCalColor(hdp, iColor, clr) \
4761 SNDMSGA (hdp, DTM_SETMCCOLOR, iColor, clr)
Bertho Stultiensfbde5be1999-08-14 15:01:54 +00004762#define DateTime_GetMonthCal(hdp) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004763 (HWND) SNDMSGA (hdp, DTM_GETMONTHCAL, 0, 0)
Bertho Stultiensfbde5be1999-08-14 15:01:54 +00004764#define DateTime_SetMonthCalFont(hdp, hfont, fRedraw) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004765 SNDMSGA (hdp, DTM_SETMCFONT, (WPARAM)hfont, (LPARAM)fRedraw)
Bertho Stultiensfbde5be1999-08-14 15:01:54 +00004766#define DateTime_GetMonthCalFont(hdp) \
Dimitrie O. Paunb4488412002-11-18 19:45:47 +00004767 SNDMSGA (hdp, DTM_GETMCFONT, 0, 0)
Alex Priemc8cc3251999-07-31 11:12:45 +00004768
Rolf Kalbermatter1816f8c2003-11-11 00:29:31 +00004769#define DA_LAST (0x7fffffff)
4770#define DPA_APPEND (0x7fffffff)
4771#define DPA_ERR (-1)
4772
4773#define DSA_APPEND (0x7fffffff)
4774#define DSA_ERR (-1)
Alex Priemc8cc3251999-07-31 11:12:45 +00004775
Alexandre Julliardf5cb3dd2003-09-17 20:15:21 +00004776struct _DSA;
4777typedef struct _DSA *HDSA;
Alex Priemc8cc3251999-07-31 11:12:45 +00004778
Alexandre Julliardf5cb3dd2003-09-17 20:15:21 +00004779typedef INT (CALLBACK *PFNDSAENUMCALLBACK)(LPVOID, LPVOID);
Alex Priemc8cc3251999-07-31 11:12:45 +00004780
Alexandre Julliardf5cb3dd2003-09-17 20:15:21 +00004781HDSA WINAPI DSA_Create(INT, INT);
4782BOOL WINAPI DSA_Destroy(HDSA);
4783void WINAPI DSA_DestroyCallback(HDSA, PFNDSAENUMCALLBACK, LPVOID);
4784LPVOID WINAPI DSA_GetItemPtr(HDSA, INT);
4785INT WINAPI DSA_InsertItem(HDSA, INT, LPVOID);
Eric Kohlb406c7d1999-01-24 19:12:34 +00004786
4787#define DPAS_SORTED 0x0001
4788#define DPAS_INSERTBEFORE 0x0002
4789#define DPAS_INSERTAFTER 0x0004
Vincent Béron9a624912002-05-31 23:06:46 +00004790
Eric Kohlb406c7d1999-01-24 19:12:34 +00004791
Alexandre Julliardf5cb3dd2003-09-17 20:15:21 +00004792struct _DPA;
4793typedef struct _DPA *HDPA;
Eric Kohlb406c7d1999-01-24 19:12:34 +00004794
Alexandre Julliardf5cb3dd2003-09-17 20:15:21 +00004795typedef INT (CALLBACK *PFNDPAENUMCALLBACK)(LPVOID, LPVOID);
4796typedef INT (CALLBACK *PFNDPACOMPARE)(LPVOID, LPVOID, LPARAM);
Eric Kohlb406c7d1999-01-24 19:12:34 +00004797
Alexandre Julliardf5cb3dd2003-09-17 20:15:21 +00004798HDPA WINAPI DPA_Create(INT);
4799BOOL WINAPI DPA_Destroy(HDPA);
4800LPVOID WINAPI DPA_DeletePtr(HDPA, INT);
4801BOOL WINAPI DPA_DeleteAllPtrs(HDPA);
4802BOOL WINAPI DPA_SetPtr(HDPA, INT, LPVOID);
4803LPVOID WINAPI DPA_GetPtr(HDPA, INT);
4804INT WINAPI DPA_InsertPtr(HDPA, INT, LPVOID);
4805BOOL WINAPI DPA_Sort(HDPA, PFNDPACOMPARE, LPARAM);
4806void WINAPI DPA_EnumCallback(HDPA, PFNDPAENUMCALLBACK, LPVOID);
4807void WINAPI DPA_DestroyCallback(HDPA, PFNDPAENUMCALLBACK, LPVOID);
4808INT WINAPI DPA_Search(HDPA, LPVOID, INT, PFNDPACOMPARE, LPARAM, UINT);
Eric Kohlb406c7d1999-01-24 19:12:34 +00004809
Alexandre Julliardf5cb3dd2003-09-17 20:15:21 +00004810BOOL WINAPI Str_SetPtrW (LPWSTR *, LPCWSTR);
Eric Kohlb406c7d1999-01-24 19:12:34 +00004811
Thomas Weidenmüller9d6f88c2004-08-06 19:17:49 +00004812/**************************************************************************
4813 * SysLink control
4814 */
4815
4816#if defined(__GNUC__)
4817# define WC_LINK (const WCHAR []){ 'S','y','s','L','i','n','k',0 }
4818#elif defined(_MSC_VER)
4819# define WC_LINK L"SysLink"
4820#else
4821static const WCHAR WC_LINK[] = { 'S','y','s','L','i','n','k',0 };
4822#endif
4823
4824/* SysLink messages */
4825#define LM_HITTEST (WM_USER + 768)
4826#define LM_GETIDEALHEIGHT (WM_USER + 769)
4827#define LM_SETITEM (WM_USER + 770)
4828#define LM_GETITEM (WM_USER + 771)
4829
4830/* SysLink links flags */
4831
4832#define LIF_ITEMINDEX 1
4833#define LIF_STATE 2
4834#define LIF_ITEMID 4
4835#define LIF_URL 8
4836
4837/* SysLink links states */
4838
4839#define LIS_FOCUSED 1
4840#define LIS_ENABLED 2
4841#define LIS_VISITED 4
4842
4843/* SysLink misc. */
4844
4845#define INVALID_LINK_INDEX (-1)
4846#define MAX_LINKID_TEXT 48
4847#define L_MAX_URL_LENGTH 2084
4848
4849/* SysLink structures */
4850
4851typedef struct tagLITEM
4852{
4853 UINT mask;
4854 int iLink;
4855 UINT state;
4856 UINT stateMask;
4857 WCHAR szID[MAX_LINKID_TEXT];
4858 WCHAR szUrl[L_MAX_URL_LENGTH];
4859} LITEM, *PLITEM;
4860
4861typedef struct tagLHITTESTINFO
4862{
4863 POINT pt;
4864 LITEM item;
4865} LHITTESTINFO, *PLHITTESTINFO;
4866
4867typedef struct tagNMLINK
4868{
4869 NMHDR hdr;
Dimi Pauncb5edab2005-06-01 19:50:34 +00004870 LITEM item;
Thomas Weidenmüller9d6f88c2004-08-06 19:17:49 +00004871} NMLINK, *PNMLINK;
4872
Frank Richter1f72eba2005-07-12 17:55:54 +00004873/**************************************************************************
4874 * Static control
4875 */
4876
4877#define WC_STATICA "Static"
4878#if defined(__GNUC__)
4879# define WC_STATICW (const WCHAR []){ 'S','t','a','t','i','c',0 }
4880#elif defined(_MSC_VER)
4881# define WC_STATICW L"Static"
4882#else
4883static const WCHAR WC_STATICW[] = { 'S','t','a','t','i','c',0 };
4884#endif
4885#define WC_STATIC WINELIB_NAME_AW(WC_STATIC)
4886
Frank Richter9a2084f2005-08-11 17:06:41 +00004887/**************************************************************************
4888 * Combobox control
4889 */
4890
4891#define WC_COMBOBOXA "ComboBox"
4892#if defined(__GNUC__)
4893# define WC_COMBOBOXW (const WCHAR []){ 'C','o','m','b','o','B','o','x',0 }
4894#elif defined(_MSC_VER)
4895# define WC_COMBOBOXW L"ComboBox"
4896#else
4897static const WCHAR WC_COMBOBOXW[] = { 'C','o','m','b','o','B','o','x',0 };
4898#endif
4899#define WC_COMBOBOX WINELIB_NAME_AW(WC_COMBOBOX)
4900
Frank Richter085662f2005-08-15 09:44:53 +00004901/**************************************************************************
4902 * Edit control
4903 */
4904
4905#define WC_EDITA "Edit"
4906#if defined(__GNUC__)
4907# define WC_EDITW (const WCHAR []){ 'E','d','i','t',0 }
4908#elif defined(_MSC_VER)
4909# define WC_EDITW L"Edit"
4910#else
4911static const WCHAR WC_EDITW[] = { 'E','d','i','t',0 };
4912#endif
4913#define WC_EDIT WINELIB_NAME_AW(WC_EDIT)
4914
4915/**************************************************************************
4916 * List box control
4917 */
4918
4919#define WC_LISTBOXA "ListBox"
4920#if defined(__GNUC__)
4921# define WC_LISTBOXW (const WCHAR []){ 'L','i','s','t','B','o','x',0 }
4922#elif defined(_MSC_VER)
4923# define WC_LISTBOXW L"ListBox"
4924#else
4925static const WCHAR WC_LISTBOXW[] = { 'L','i','s','t','B','o','x',0 };
4926#endif
4927#define WC_LISTBOX WINELIB_NAME_AW(WC_LISTBOX)
4928
Frank Richter8d862122005-08-27 09:20:43 +00004929/**************************************************************************
4930 * Scroll bar control
4931 */
4932
4933#define WC_SCROLLBARA "ScrollBar"
4934#if defined(__GNUC__)
4935# define WC_SCROLLBARW (const WCHAR []){ 'S','c','r','o','l','l','B','a','r',0 }
4936#elif defined(_MSC_VER)
4937# define WC_SCROLLBARW L"ScrollBar"
4938#else
4939static const WCHAR WC_SCROLLBARW[] = { 'S','c','r','o','l','l','B','a','r',0 };
4940#endif
4941#define WC_SCROLLBAR WINELIB_NAME_AW(WC_SCROLLBAR)
4942
Uwe Bonnes627702d1998-11-08 13:14:55 +00004943#ifdef __cplusplus
4944}
4945#endif
Eric Kohl17216d31998-10-11 13:21:17 +00004946
Alexandre Julliard8cc3a5e1996-08-11 15:49:51 +00004947#endif /* __WINE_COMMCTRL_H */