commdlg.h 27.6 KB
Newer Older
1
/*
Alexandre Julliard's avatar
Alexandre Julliard committed
2
 * COMMDLG - Common Wine Dialog ... :-)
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
 *
 * Copyright (C) the Wine project
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
Alexandre Julliard's avatar
Alexandre Julliard committed
19 20
 */

Alexandre Julliard's avatar
Alexandre Julliard committed
21 22 23 24 25 26
#ifndef __WINE_COMMDLG_H
#define __WINE_COMMDLG_H

#ifdef __cplusplus
extern "C" {
#endif
Alexandre Julliard's avatar
Alexandre Julliard committed
27

28
#include <prsht.h>
29
#ifndef _WIN64
30
#include <pshpack1.h>
31
#endif
Alexandre Julliard's avatar
Alexandre Julliard committed
32

György 'Nog' Jeney's avatar
György 'Nog' Jeney committed
33 34 35 36 37 38 39 40
#ifndef SNDMSG
#ifdef __cplusplus
#define SNDMSG ::SendMessage
#else   /* __cplusplus */
#define SNDMSG SendMessage
#endif  /* __cplusplus */
#endif  /* SNDMSG */

Alexandre Julliard's avatar
Alexandre Julliard committed
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
#define OFN_READONLY                 0x00000001
#define OFN_OVERWRITEPROMPT          0x00000002
#define OFN_HIDEREADONLY             0x00000004
#define OFN_NOCHANGEDIR              0x00000008
#define OFN_SHOWHELP                 0x00000010
#define OFN_ENABLEHOOK               0x00000020
#define OFN_ENABLETEMPLATE           0x00000040
#define OFN_ENABLETEMPLATEHANDLE     0x00000080
#define OFN_NOVALIDATE               0x00000100
#define OFN_ALLOWMULTISELECT         0x00000200
#define OFN_EXTENSIONDIFFERENT       0x00000400
#define OFN_PATHMUSTEXIST            0x00000800
#define OFN_FILEMUSTEXIST            0x00001000
#define OFN_CREATEPROMPT             0x00002000
#define OFN_SHAREAWARE               0x00004000
#define OFN_NOREADONLYRETURN         0x00008000
#define OFN_NOTESTFILECREATE         0x00010000
58
#define OFN_NONETWORKBUTTON          0x00020000
Alexandre Julliard's avatar
Alexandre Julliard committed
59 60 61 62
#define OFN_NOLONGNAMES              0x00040000
#define OFN_EXPLORER                 0x00080000
#define OFN_NODEREFERENCELINKS       0x00100000
#define OFN_LONGNAMES                0x00200000
63 64
#define OFN_ENABLEINCLUDENOTIFY      0x00400000
#define OFN_ENABLESIZING             0x00800000
65 66
#define OFN_DONTADDTORECENT          0x02000000
#define OFN_FORCESHOWHIDDEN          0x10000000
Alexandre Julliard's avatar
Alexandre Julliard committed
67

68 69
#define OFN_EX_NOPLACESBAR           0x00000001

Alexandre Julliard's avatar
Alexandre Julliard committed
70 71 72 73
#define OFN_SHAREFALLTHROUGH     2
#define OFN_SHARENOWARN          1
#define OFN_SHAREWARN            0

74 75
#define SAVE_DIALOG  1
#define OPEN_DIALOG  2
76

77
typedef UINT_PTR (CALLBACK *LPOFNHOOKPROC)(HWND,UINT,WPARAM,LPARAM);
78

79
typedef struct tagOFNA {
Alexandre Julliard's avatar
Alexandre Julliard committed
80
	DWORD		lStructSize;
81 82
	HWND		hwndOwner;
	HINSTANCE	hInstance;
Alexandre Julliard's avatar
Alexandre Julliard committed
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
	LPCSTR		lpstrFilter;
	LPSTR		lpstrCustomFilter;
	DWORD		nMaxCustFilter;
	DWORD		nFilterIndex;
	LPSTR		lpstrFile;
	DWORD		nMaxFile;
	LPSTR		lpstrFileTitle;
	DWORD		nMaxFileTitle;
	LPCSTR		lpstrInitialDir;
	LPCSTR		lpstrTitle;
	DWORD		Flags;
	WORD		nFileOffset;
	WORD		nFileExtension;
	LPCSTR		lpstrDefExt;
	LPARAM		lCustData;
98
	LPOFNHOOKPROC	lpfnHook;
Alexandre Julliard's avatar
Alexandre Julliard committed
99
	LPCSTR		lpTemplateName;
100 101 102
        void           *pvReserved;
        DWORD           dwReserved;
        DWORD           FlagsEx;
103
} OPENFILENAMEA,*LPOPENFILENAMEA;
Alexandre Julliard's avatar
Alexandre Julliard committed
104

105
typedef struct tagOFNW {
Alexandre Julliard's avatar
Alexandre Julliard committed
106
	DWORD		lStructSize;
107 108
	HWND		hwndOwner;
	HINSTANCE	hInstance;
Alexandre Julliard's avatar
Alexandre Julliard committed
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
	LPCWSTR		lpstrFilter;
	LPWSTR		lpstrCustomFilter;
	DWORD		nMaxCustFilter;
	DWORD		nFilterIndex;
	LPWSTR		lpstrFile;
	DWORD		nMaxFile;
	LPWSTR		lpstrFileTitle;
	DWORD		nMaxFileTitle;
	LPCWSTR		lpstrInitialDir;
	LPCWSTR		lpstrTitle;
	DWORD		Flags;
	WORD		nFileOffset;
	WORD		nFileExtension;
	LPCWSTR		lpstrDefExt;
	LPARAM		lCustData;
124
	LPOFNHOOKPROC	lpfnHook;
Alexandre Julliard's avatar
Alexandre Julliard committed
125
	LPCWSTR		lpTemplateName;
126 127 128
        void           *pvReserved;
        DWORD           dwReserved;
        DWORD           FlagsEx;
129
} OPENFILENAMEW,*LPOPENFILENAMEW;
Alexandre Julliard's avatar
Alexandre Julliard committed
130

Alexandre Julliard's avatar
Alexandre Julliard committed
131 132
DECL_WINELIB_TYPE_AW(OPENFILENAME)
DECL_WINELIB_TYPE_AW(LPOPENFILENAME)
Alexandre Julliard's avatar
Alexandre Julliard committed
133

134
#ifndef CDSIZEOF_STRUCT
135
#define CDSIZEOF_STRUCT(type,field) ((INT_PTR)&(((type *)0)->field) + sizeof(((type*)0)->field))
136 137 138 139 140 141 142
#endif

#define OPENFILENAME_SIZE_VERSION_400A CDSIZEOF_STRUCT(OPENFILENAMEA,lpTemplateName)
#define OPENFILENAME_SIZE_VERSION_400W CDSIZEOF_STRUCT(OPENFILENAMEW,lpTemplateName)
#define OPENFILENAME_SIZE_VERSION_400 WINELIB_NAME_AW(OPENFILENAME_SIZE_VERSION_400)


143 144 145
typedef struct
{
	NMHDR           hdr;
146
	LPOPENFILENAMEA lpOFN;
147
	LPSTR           pszFile;
148
} OFNOTIFYA, *LPOFNOTIFYA;
149 150 151 152

typedef struct
{
	NMHDR           hdr;
153
	LPOPENFILENAMEW lpOFN;
154
	LPWSTR          pszFile;
155
} OFNOTIFYW, *LPOFNOTIFYW;
156 157 158

DECL_WINELIB_TYPE_AW(OFNOTIFY)
DECL_WINELIB_TYPE_AW(LPOFNOTIFY)
159

160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178
typedef struct _OFNOTIFYEXA
{
        NMHDR           hdr;
        LPOPENFILENAMEA lpOFN;
        LPVOID          psf;
        LPVOID          pidl;
} OFNOTIFYEXA, *LPOFNOTIFYEXA;

typedef struct _OFNOTIFYEXW
{
        NMHDR           hdr;
        LPOPENFILENAMEW lpOFN;
        LPVOID          psf;
        LPVOID          pidl;
} OFNOTIFYEXW, *LPOFNOTIFYEXW;

DECL_WINELIB_TYPE_AW(OFNOTIFYEX)
DECL_WINELIB_TYPE_AW(LPOFNOTIFYEX)

179
typedef UINT_PTR (CALLBACK *LPCCHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
Alexandre Julliard's avatar
Alexandre Julliard committed
180 181 182

typedef struct {
	DWORD		lStructSize;
183
	HWND		hwndOwner;
184
	HWND		hInstance; /* Should be an HINSTANCE but MS made a typo */
185 186
	COLORREF        rgbResult;
	COLORREF       *lpCustColors;
Alexandre Julliard's avatar
Alexandre Julliard committed
187
	DWORD 		Flags;
188
	LPARAM		lCustData;
Alexandre Julliard's avatar
Alexandre Julliard committed
189 190
        LPCCHOOKPROC    lpfnHook;
	LPCSTR 		lpTemplateName;
191 192
} CHOOSECOLORA;
typedef CHOOSECOLORA *LPCHOOSECOLORA;
Alexandre Julliard's avatar
Alexandre Julliard committed
193 194 195

typedef struct {
	DWORD		lStructSize;
196
	HWND		hwndOwner;
197
	HWND		hInstance; /* Should be an HINSTANCE but MS made a typo */
198 199
	COLORREF        rgbResult;
	COLORREF       *lpCustColors;
Alexandre Julliard's avatar
Alexandre Julliard committed
200
	DWORD 		Flags;
201
	LPARAM		lCustData;
Alexandre Julliard's avatar
Alexandre Julliard committed
202 203
        LPCCHOOKPROC    lpfnHook;
	LPCWSTR 	lpTemplateName;
204 205
} CHOOSECOLORW;
typedef CHOOSECOLORW *LPCHOOSECOLORW;
Alexandre Julliard's avatar
Alexandre Julliard committed
206

Alexandre Julliard's avatar
Alexandre Julliard committed
207 208
DECL_WINELIB_TYPE_AW(CHOOSECOLOR)
DECL_WINELIB_TYPE_AW(LPCHOOSECOLOR)
Alexandre Julliard's avatar
Alexandre Julliard committed
209

Alexandre Julliard's avatar
Alexandre Julliard committed
210 211 212 213 214 215 216 217

#define CC_RGBINIT               0x00000001
#define CC_FULLOPEN              0x00000002
#define CC_PREVENTFULLOPEN       0x00000004
#define CC_SHOWHELP              0x00000008
#define CC_ENABLEHOOK            0x00000010
#define CC_ENABLETEMPLATE        0x00000020
#define CC_ENABLETEMPLATEHANDLE  0x00000040
218 219
#define CC_SOLIDCOLOR            0x00000080
#define CC_ANYCOLOR              0x00000100
Alexandre Julliard's avatar
Alexandre Julliard committed
220

221
typedef UINT_PTR (CALLBACK *LPFRHOOKPROC)(HWND,UINT,WPARAM,LPARAM);
222

Alexandre Julliard's avatar
Alexandre Julliard committed
223 224
typedef struct {
	DWORD		lStructSize;
225 226
	HWND		hwndOwner;
	HINSTANCE	hInstance;
Alexandre Julliard's avatar
Alexandre Julliard committed
227 228 229 230 231 232
	DWORD		Flags;
	LPSTR		lpstrFindWhat;
	LPSTR		lpstrReplaceWith;
	WORD		wFindWhatLen;
	WORD 		wReplaceWithLen;
	LPARAM 		lCustData;
233
        LPFRHOOKPROC    lpfnHook;
Alexandre Julliard's avatar
Alexandre Julliard committed
234
	LPCSTR 		lpTemplateName;
235
} FINDREPLACEA, *LPFINDREPLACEA;
Alexandre Julliard's avatar
Alexandre Julliard committed
236 237 238

typedef struct {
	DWORD		lStructSize;
239 240
	HWND		hwndOwner;
	HINSTANCE	hInstance;
Alexandre Julliard's avatar
Alexandre Julliard committed
241 242 243 244 245 246
	DWORD		Flags;
	LPWSTR		lpstrFindWhat;
	LPWSTR		lpstrReplaceWith;
	WORD		wFindWhatLen;
	WORD 		wReplaceWithLen;
	LPARAM 		lCustData;
247
        LPFRHOOKPROC    lpfnHook;
Alexandre Julliard's avatar
Alexandre Julliard committed
248
	LPCWSTR		lpTemplateName;
249
} FINDREPLACEW, *LPFINDREPLACEW;
250

Alexandre Julliard's avatar
Alexandre Julliard committed
251 252
DECL_WINELIB_TYPE_AW(FINDREPLACE)
DECL_WINELIB_TYPE_AW(LPFINDREPLACE)
253

Alexandre Julliard's avatar
Alexandre Julliard committed
254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270
#define FR_DOWN                         0x00000001
#define FR_WHOLEWORD                    0x00000002
#define FR_MATCHCASE                    0x00000004
#define FR_FINDNEXT                     0x00000008
#define FR_REPLACE                      0x00000010
#define FR_REPLACEALL                   0x00000020
#define FR_DIALOGTERM                   0x00000040
#define FR_SHOWHELP                     0x00000080
#define FR_ENABLEHOOK                   0x00000100
#define FR_ENABLETEMPLATE               0x00000200
#define FR_NOUPDOWN                     0x00000400
#define FR_NOMATCHCASE                  0x00000800
#define FR_NOWHOLEWORD                  0x00001000
#define FR_ENABLETEMPLATEHANDLE         0x00002000
#define FR_HIDEUPDOWN                   0x00004000
#define FR_HIDEMATCHCASE                0x00008000
#define FR_HIDEWHOLEWORD                0x00010000
271 272 273
#define FR_MATCHDIAC                    0x20000000
#define FR_MATCHKASHIDA                 0x40000000
#define FR_MATCHALEFHAMZA               0x80000000
Alexandre Julliard's avatar
Alexandre Julliard committed
274

275
typedef UINT_PTR (CALLBACK *LPCFHOOKPROC)(HWND,UINT,WPARAM,LPARAM);
276

277
typedef struct tagCHOOSEFONTA
Alexandre Julliard's avatar
Alexandre Julliard committed
278
{
279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294
	UINT  	lStructSize;
	HWND 		hwndOwner;
	HDC  		hDC;
	LPLOGFONTA    lpLogFont;
	INT		iPointSize;
	DWORD		Flags;
	COLORREF	rgbColors;
	LPARAM		lCustData;
	LPCFHOOKPROC 	lpfnHook;
	LPCSTR		lpTemplateName;
	HINSTANCE	hInstance;
	LPSTR		lpszStyle;
	WORD		nFontType;
	WORD	___MISSING_ALIGNMENT__;
	INT   	nSizeMin;
	INT		nSizeMax;
295
} CHOOSEFONTA, *LPCHOOSEFONTA;
Alexandre Julliard's avatar
Alexandre Julliard committed
296

297
typedef struct tagCHOOSEFONTW
Alexandre Julliard's avatar
Alexandre Julliard committed
298
{
299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314
	UINT  	lStructSize;
	HWND 		hwndOwner;
	HDC  		hDC;
	LPLOGFONTW    lpLogFont;
	INT		iPointSize;
	DWORD		Flags;
	COLORREF	rgbColors;
	LPARAM		lCustData;
	LPCFHOOKPROC 	lpfnHook;
	LPCWSTR		lpTemplateName;
	HINSTANCE	hInstance;
	LPWSTR		lpszStyle;
	WORD		nFontType;
	WORD	___MISSING_ALIGNMENT__;
	INT   	nSizeMin;
	INT		nSizeMax;
315
} CHOOSEFONTW, *LPCHOOSEFONTW;
Alexandre Julliard's avatar
Alexandre Julliard committed
316

Alexandre Julliard's avatar
Alexandre Julliard committed
317 318
DECL_WINELIB_TYPE_AW(CHOOSEFONT)
DECL_WINELIB_TYPE_AW(LPCHOOSEFONT)
Alexandre Julliard's avatar
Alexandre Julliard committed
319 320 321 322

#define CF_SCREENFONTS               0x00000001
#define CF_PRINTERFONTS              0x00000002
#define CF_BOTH                      (CF_SCREENFONTS | CF_PRINTERFONTS)
323 324 325 326 327 328 329 330 331
#define CF_SHOWHELP                  __MSABI_LONG(0x00000004)
#define CF_ENABLEHOOK                __MSABI_LONG(0x00000008)
#define CF_ENABLETEMPLATE            __MSABI_LONG(0x00000010)
#define CF_ENABLETEMPLATEHANDLE      __MSABI_LONG(0x00000020)
#define CF_INITTOLOGFONTSTRUCT       __MSABI_LONG(0x00000040)
#define CF_USESTYLE                  __MSABI_LONG(0x00000080)
#define CF_EFFECTS                   __MSABI_LONG(0x00000100)
#define CF_APPLY                     __MSABI_LONG(0x00000200)
#define CF_ANSIONLY                  __MSABI_LONG(0x00000400)
Alexandre Julliard's avatar
Alexandre Julliard committed
332
#define CF_SCRIPTSONLY               CF_ANSIONLY
333
#define CF_NOVECTORFONTS             __MSABI_LONG(0x00000800)
Alexandre Julliard's avatar
Alexandre Julliard committed
334
#define CF_NOOEMFONTS                CF_NOVECTORFONTS
335 336 337 338 339 340 341 342 343 344 345 346 347
#define CF_NOSIMULATIONS             __MSABI_LONG(0x00001000)
#define CF_LIMITSIZE                 __MSABI_LONG(0x00002000)
#define CF_FIXEDPITCHONLY            __MSABI_LONG(0x00004000)
#define CF_WYSIWYG                   __MSABI_LONG(0x00008000) /* use with CF_SCREENFONTS & CF_PRINTERFONTS */
#define CF_FORCEFONTEXIST            __MSABI_LONG(0x00010000)
#define CF_SCALABLEONLY              __MSABI_LONG(0x00020000)
#define CF_TTONLY                    __MSABI_LONG(0x00040000)
#define CF_NOFACESEL                 __MSABI_LONG(0x00080000)
#define CF_NOSTYLESEL                __MSABI_LONG(0x00100000)
#define CF_NOSIZESEL                 __MSABI_LONG(0x00200000)
#define CF_SELECTSCRIPT              __MSABI_LONG(0x00400000)
#define CF_NOSCRIPTSEL               __MSABI_LONG(0x00800000)
#define CF_NOVERTFONTS               __MSABI_LONG(0x01000000)
Alexandre Julliard's avatar
Alexandre Julliard committed
348 349 350 351 352 353 354 355 356

#define SIMULATED_FONTTYPE      0x8000
#define PRINTER_FONTTYPE        0x4000
#define SCREEN_FONTTYPE         0x2000
#define BOLD_FONTTYPE           0x0100
#define ITALIC_FONTTYPE         0x0200
#define REGULAR_FONTTYPE        0x0400

#define WM_CHOOSEFONT_GETLOGFONT        (WM_USER + 1)
Alexandre Julliard's avatar
Alexandre Julliard committed
357 358
#define WM_CHOOSEFONT_SETLOGFONT	(WM_USER + 101)
#define WM_CHOOSEFONT_SETFLAGS		(WM_USER + 102)
Alexandre Julliard's avatar
Alexandre Julliard committed
359

360
#define LBSELCHSTRINGA  "commdlg_LBSelChangedNotify"
361
#if defined(_MSC_VER) || defined(__MINGW32__)
362 363
# define LBSELCHSTRINGW L"commdlg_LBSelChangedNotify"
#else
364 365
static const WCHAR LBSELCHSTRINGW[] = { 'c','o','m','m','d','l','g','_',
  'L','B','S','e','l','C','h','a','n','g','e','d','N','o','t','i','f','y',0 };
366
#endif
367 368 369
#define LBSELCHSTRING   WINELIB_NAME_AW(LBSELCHSTRING)

#define SHAREVISTRINGA  "commdlg_ShareViolation"
370
#if defined(_MSC_VER) || defined(__MINGW32__)
371 372
# define SHAREVISTRINGW L"commdlg_ShareViolation"
#else
373 374
static const WCHAR SHAREVISTRINGW[] = { 'c','o','m','m','d','l','g','_',
  'S','h','a','r','e','V','i','o','l','a','t','i','o','n',0 };
375
#endif
376 377 378
#define SHAREVISTRING   WINELIB_NAME_AW(SHAREVISTRING)

#define FILEOKSTRINGA   "commdlg_FileNameOK"
379
#if defined(_MSC_VER) || defined(__MINGW32__)
380 381
# define FILEOKSTRINGW  L"commdlg_FileNameOK"
#else
382 383
static const WCHAR FILEOKSTRINGW[] = { 'c','o','m','m','d','l','g','_',
  'F','i','l','e','N','a','m','e','O','K',0 };
384
#endif
385 386 387
#define FILEOKSTRING    WINELIB_NAME_AW(FILEOKSTRING)

#define COLOROKSTRINGA  "commdlg_ColorOK"
388
#if defined(_MSC_VER) || defined(__MINGW32__)
389 390
# define COLOROKSTRINGW L"commdlg_ColorOK"
#else
391 392
static const WCHAR COLOROKSTRINGW[] = { 'c','o','m','m','d','l','g','_',
  'C','o','l','o','r','O','K',0 };
393
#endif
394 395 396
#define COLOROKSTRING   WINELIB_NAME_AW(COLOROKSTRING)

#define SETRGBSTRINGA   "commdlg_SetRGBColor"
397
#if defined(_MSC_VER) || defined(__MINGW32__)
398 399
# define SETRGBSTRINGW  L"commdlg_SetRGBColor"
#else
400 401
static const WCHAR SETRGBSTRINGW[] = { 'c','o','m','m','d','l','g','_',
  'S','e','t','R','G','B','C','o','l','o','r',0 };
402
#endif
403 404 405
#define SETRGBSTRING    WINELIB_NAME_AW(SETRGBSTRING)

#define FINDMSGSTRINGA  "commdlg_FindReplace"
406
#if defined(_MSC_VER) || defined(__MINGW32__)
407 408
# define FINDMSGSTRINGW L"commdlg_FindReplace"
#else
409 410
static const WCHAR FINDMSGSTRINGW[] = { 'c','o','m','m','d','l','g','_',
  'F','i','n','d','R','e','p','l','a','c','e',0 };
411
#endif
412 413 414
#define FINDMSGSTRING   WINELIB_NAME_AW(FINDMSGSTRING)

#define HELPMSGSTRINGA  "commdlg_help"
415
#if defined(_MSC_VER) || defined(__MINGW32__)
416 417
# define HELPMSGSTRINGW L"commdlg_help"
#else
418 419
static const WCHAR HELPMSGSTRINGW[] = { 'c','o','m','m','d','l','g','_',
  'H','e','l','p',0 };
420
#endif
421 422
#define HELPMSGSTRING   WINELIB_NAME_AW(HELPMSGSTRING)

Alexandre Julliard's avatar
Alexandre Julliard committed
423 424 425 426 427
#define CD_LBSELNOITEMS -1
#define CD_LBSELCHANGE   0
#define CD_LBSELSUB      1
#define CD_LBSELADD      2

428 429 430 431 432 433 434 435 436 437
#define CDN_FIRST   (0U-601U)
#define CDN_LAST    (0U-699U)

#define CDN_INITDONE            (CDN_FIRST - 0x0000)
#define CDN_SELCHANGE           (CDN_FIRST - 0x0001)
#define CDN_FOLDERCHANGE        (CDN_FIRST - 0x0002)
#define CDN_SHAREVIOLATION      (CDN_FIRST - 0x0003)
#define CDN_HELP                (CDN_FIRST - 0x0004)
#define CDN_FILEOK              (CDN_FIRST - 0x0005)
#define CDN_TYPECHANGE          (CDN_FIRST - 0x0006)
438
#define CDN_INCLUDEITEM         (CDN_FIRST - 0x0007)
439 440 441 442 443 444 445

#define CDM_FIRST               (WM_USER + 100)
#define CDM_LAST                (WM_USER + 200)

#define CDM_GETSPEC             (CDM_FIRST + 0x0000)
#define CDM_GETFILEPATH         (CDM_FIRST + 0x0001)
#define CDM_GETFOLDERPATH       (CDM_FIRST + 0x0002)
446
#define CDM_GETFOLDERIDLIST     (CDM_FIRST + 0x0003)
447 448 449 450
#define CDM_SETCONTROLTEXT      (CDM_FIRST + 0x0004)
#define CDM_HIDECONTROL         (CDM_FIRST + 0x0005)
#define CDM_SETDEFEXT           (CDM_FIRST + 0x0006)

451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473

/* Messages to query information from the open or save dialogs */

#define CommDlg_OpenSave_GetSpecA(_hdlg, _psz, _cbmax) \
        (int)SNDMSG(_hdlg, CDM_GETSPEC, (WPARAM)_cbmax, (LPARAM)(LPSTR)_psz)
#define CommDlg_OpenSave_GetSpecW(_hdlg, _psz, _cbmax) \
        (int)SNDMSG(_hdlg, CDM_GETSPEC, (WPARAM)_cbmax, (LPARAM)(LPWSTR)_psz)
#define CommDlg_OpenSave_GetSpec  WINELIB_NAME_AW(CommDlg_OpenSave_GetSpec)

#define CommDlg_OpenSave_GetFilePathA(_hdlg, _psz, _cbmax) \
        (int)SNDMSG(_hdlg, CDM_GETFILEPATH, (WPARAM)_cbmax, (LPARAM)(LPSTR)_psz)
#define CommDlg_OpenSave_GetFilePathW(_hdlg, _psz, _cbmax) \
        (int)SNDMSG(_hdlg, CDM_GETFILEPATH, (WPARAM)_cbmax, (LPARAM)(LPWSTR)_psz)
#define CommDlg_OpenSave_GetFilePath  WINELIB_NAME_AW(CommDlg_OpenSave_GetFilePath)

#define CommDlg_OpenSave_GetFolderPathA(_hdlg, _psz, _cbmax) \
        (int)SNDMSG(_hdlg, CDM_GETFOLDERPATH, (WPARAM)_cbmax, (LPARAM)(LPSTR)_psz)
#define CommDlg_OpenSave_GetFolderPathW(_hdlg, _psz, _cbmax) \
        (int)SNDMSG(_hdlg, CDM_GETFOLDERPATH, (WPARAM)_cbmax, (LPARAM)(LPWSTR)_psz)
#define CommDlg_OpenSave_GetFolderPath  WINELIB_NAME_AW(CommDlg_OpenSave_GetFolderPath)

#define CommDlg_OpenSave_GetFolderIDList(_hdlg, _pidl, _cbmax) \
        (int)SNDMSG(_hdlg, CDM_GETFOLDERIDLIST, (WPARAM)_cbmax, (LPARAM)(LPVOID)_pidl)
474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503

#define CommDlg_OpenSave_SetControlText(_hdlg, _id, _text) \
        (void)SNDMSG(_hdlg, CDM_SETCONTROLTEXT, (WPARAM)_id, (LPARAM)(LPSTR)_text)

#define CommDlg_OpenSave_HideControl(_hdlg, _id) \
        (void)SNDMSG(_hdlg, CDM_HIDECONTROL, (WPARAM)_id, 0)

#define CommDlg_OpenSave_SetDefExt(_hdlg, _pszext) \
        (void)SNDMSG(_hdlg, CDM_SETDEFEXT, 0, (LPARAM)(LPSTR)_pszext)

#define CommDlg_OpenSave_GetSpecA(_hdlg, _psz, _cbmax) \
        (int)SNDMSG(_hdlg, CDM_GETSPEC, (WPARAM)_cbmax, (LPARAM)(LPSTR)_psz)
#define CommDlg_OpenSave_GetSpecW(_hdlg, _psz, _cbmax) \
        (int)SNDMSG(_hdlg, CDM_GETSPEC, (WPARAM)_cbmax, (LPARAM)(LPWSTR)_psz)
#define CommDlg_OpenSave_GetSpec WINELIB_NAME_AW(CommDlg_OpenSave_GetSpec)

#define CommDlg_OpenSave_GetFilePathA(_hdlg, _psz, _cbmax) \
        (int)SNDMSG(_hdlg, CDM_GETFILEPATH, (WPARAM)_cbmax, (LPARAM)(LPSTR)_psz)
#define CommDlg_OpenSave_GetFilePathW(_hdlg, _psz, _cbmax) \
        (int)SNDMSG(_hdlg, CDM_GETFILEPATH, (WPARAM)_cbmax, (LPARAM)(LPWSTR)_psz)
#define CommDlg_OpenSave_GetFilePath WINELIB_NAME_AW(CommDlg_OpenSave_GetFilePath)

#define CommDlg_OpenSave_GetFolderPathA(_hdlg, _psz, _cbmax) \
        (int)SNDMSG(_hdlg, CDM_GETFOLDERPATH, (WPARAM)_cbmax, (LPARAM)(LPSTR)_psz)
#define CommDlg_OpenSave_GetFolderPathW(_hdlg, _psz, _cbmax) \
        (int)SNDMSG(_hdlg, CDM_GETFOLDERPATH, (WPARAM)_cbmax, (LPARAM)(LPWSTR)_psz)
#define CommDlg_OpenSave_GetFolderPath WINELIB_NAME_AW(CommDlg_OpenSave_GetFolderPath)

#define CommDlg_OpenSave_GetFolderIDList(_hdlg, _pidl, _cbmax) \
        (int)SNDMSG(_hdlg, CDM_GETFOLDERIDLIST, (WPARAM)_cbmax, (LPARAM)(LPVOID)_pidl)
504 505 506 507 508 509 510 511 512 513 514

#define CommDlg_OpenSave_SetControlText(_hdlg, _id, _text) \
        (void)SNDMSG(_hdlg, CDM_SETCONTROLTEXT, (WPARAM)_id, (LPARAM)(LPSTR)_text)

#define CommDlg_OpenSave_HideControl(_hdlg, _id) \
        (void)SNDMSG(_hdlg, CDM_HIDECONTROL, (WPARAM)_id, 0)

#define CommDlg_OpenSave_SetDefExt(_hdlg, _pszext) \
        (void)SNDMSG(_hdlg, CDM_SETDEFEXT, 0, (LPARAM)(LPSTR)_pszext)


515 516
typedef UINT_PTR (CALLBACK *LPPRINTHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
typedef UINT_PTR (CALLBACK *LPSETUPHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
517

518
typedef struct tagPDA
Alexandre Julliard's avatar
Alexandre Julliard committed
519 520
{
    DWORD            lStructSize;
521 522 523 524
    HWND           hwndOwner;
    HGLOBAL        hDevMode;
    HGLOBAL        hDevNames;
    HDC            hDC;
Alexandre Julliard's avatar
Alexandre Julliard committed
525 526 527 528 529 530
    DWORD            Flags;
    WORD             nFromPage;
    WORD             nToPage;
    WORD             nMinPage;
    WORD             nMaxPage;
    WORD             nCopies;
531
    HINSTANCE      hInstance;
Alexandre Julliard's avatar
Alexandre Julliard committed
532 533 534 535 536
    LPARAM           lCustData;
    LPPRINTHOOKPROC  lpfnPrintHook;
    LPSETUPHOOKPROC  lpfnSetupHook;
    LPCSTR           lpPrintTemplateName;
    LPCSTR           lpSetupTemplateName;
537 538 539
    HGLOBAL        hPrintTemplate;
    HGLOBAL        hSetupTemplate;
} PRINTDLGA, *LPPRINTDLGA;
Alexandre Julliard's avatar
Alexandre Julliard committed
540

541
typedef struct tagPDW
Alexandre Julliard's avatar
Alexandre Julliard committed
542 543
{
    DWORD            lStructSize;
544 545 546 547
    HWND           hwndOwner;
    HGLOBAL        hDevMode;
    HGLOBAL        hDevNames;
    HDC            hDC;
Alexandre Julliard's avatar
Alexandre Julliard committed
548 549 550 551 552 553
    DWORD            Flags;
    WORD             nFromPage;
    WORD             nToPage;
    WORD             nMinPage;
    WORD             nMaxPage;
    WORD             nCopies;
554
    HINSTANCE      hInstance;
Alexandre Julliard's avatar
Alexandre Julliard committed
555 556 557 558 559
    LPARAM           lCustData;
    LPPRINTHOOKPROC  lpfnPrintHook;
    LPSETUPHOOKPROC  lpfnSetupHook;
    LPCWSTR          lpPrintTemplateName;
    LPCWSTR          lpSetupTemplateName;
560 561 562
    HGLOBAL        hPrintTemplate;
    HGLOBAL        hSetupTemplate;
} PRINTDLGW, *LPPRINTDLGW;
Alexandre Julliard's avatar
Alexandre Julliard committed
563

Alexandre Julliard's avatar
Alexandre Julliard committed
564 565
DECL_WINELIB_TYPE_AW(PRINTDLG)
DECL_WINELIB_TYPE_AW(LPPRINTDLG)
Alexandre Julliard's avatar
Alexandre Julliard committed
566

567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586
#define PD_ALLPAGES                   0x00000000
#define PD_SELECTION                  0x00000001
#define PD_PAGENUMS                   0x00000002
#define PD_NOSELECTION                0x00000004
#define PD_NOPAGENUMS                 0x00000008
#define PD_COLLATE                    0x00000010
#define PD_PRINTTOFILE                0x00000020
#define PD_PRINTSETUP                 0x00000040
#define PD_NOWARNING                  0x00000080
#define PD_RETURNDC                   0x00000100
#define PD_RETURNIC                   0x00000200
#define PD_RETURNDEFAULT              0x00000400
#define PD_SHOWHELP                   0x00000800
#define PD_ENABLEPRINTHOOK            0x00001000
#define PD_ENABLESETUPHOOK            0x00002000
#define PD_ENABLEPRINTTEMPLATE        0x00004000
#define PD_ENABLESETUPTEMPLATE        0x00008000
#define PD_ENABLEPRINTTEMPLATEHANDLE  0x00010000
#define PD_ENABLESETUPTEMPLATEHANDLE  0x00020000
#define PD_USEDEVMODECOPIES           0x00040000
587
#define PD_USEDEVMODECOPIESANDCOLLATE 0x00040000
588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603
#define PD_DISABLEPRINTTOFILE         0x00080000
#define PD_HIDEPRINTTOFILE            0x00100000
#define PD_NONETWORKBUTTON            0x00200000
#define PD_CURRENTPAGE                0x00400000
#define PD_NOCURRENTPAGE              0x00800000
#define PD_EXCLUSIONFLAGS             0x01000000
#define PD_USELARGETEMPLATE           0x10000000


#define PD_EXCL_COPIESANDCOLLATE      (DM_COPIES | DM_COLLATE)

#define START_PAGE_GENERAL 0xffffffff

#define PD_RESULT_CANCEL 0
#define PD_RESULT_PRINT  1
#define PD_RESULT_APPLY  2
Alexandre Julliard's avatar
Alexandre Julliard committed
604

605 606 607 608 609 610 611
typedef struct
{
    WORD  wDriverOffset;
    WORD  wDeviceOffset;
    WORD  wOutputOffset;
    WORD  wDefault;
} DEVNAMES;
Alexandre Julliard's avatar
Alexandre Julliard committed
612 613 614 615
typedef DEVNAMES * LPDEVNAMES;

#define DN_DEFAULTPRN      0x0001

Alexandre Julliard's avatar
Alexandre Julliard committed
616 617 618 619 620 621 622 623 624
/* PageSetupDlg stuff ... */
#define WM_PSD_PAGESETUPDLG	(WM_USER  )
#define WM_PSD_FULLPAGERECT	(WM_USER+1)
#define WM_PSD_MINMARGINRECT	(WM_USER+2)
#define WM_PSD_MARGINRECT	(WM_USER+3)
#define WM_PSD_GREEKTEXTRECT	(WM_USER+4)
#define WM_PSD_ENVSTAMPRECT	(WM_USER+5)
#define WM_PSD_YAFULLPAGERECT	(WM_USER+6)

625 626
typedef UINT (CALLBACK *LPPAGEPAINTHOOK)( HWND, UINT, WPARAM, LPARAM );
typedef UINT (CALLBACK *LPPAGESETUPHOOK)( HWND, UINT, WPARAM, LPARAM );
Alexandre Julliard's avatar
Alexandre Julliard committed
627

628
typedef struct tagPSDA
Alexandre Julliard's avatar
Alexandre Julliard committed
629 630
{
	DWORD		lStructSize;
631 632 633
	HWND		hwndOwner;
	HGLOBAL	hDevMode;
	HGLOBAL	hDevNames;
Alexandre Julliard's avatar
Alexandre Julliard committed
634
	DWORD		Flags;
635 636 637 638
	POINT		ptPaperSize;
	RECT		rtMinMargin;
	RECT		rtMargin;
	HINSTANCE	hInstance;
Alexandre Julliard's avatar
Alexandre Julliard committed
639 640 641 642
	LPARAM		lCustData;
	LPPAGESETUPHOOK	lpfnPageSetupHook;
	LPPAGEPAINTHOOK	lpfnPagePaintHook;
	LPCSTR		lpPageSetupTemplateName;
643 644
	HGLOBAL	hPageSetupTemplate;
} PAGESETUPDLGA,*LPPAGESETUPDLGA;
Alexandre Julliard's avatar
Alexandre Julliard committed
645

646
typedef struct tagPSDW
Alexandre Julliard's avatar
Alexandre Julliard committed
647 648
{
	DWORD		lStructSize;
649 650 651
	HWND		hwndOwner;
	HGLOBAL	hDevMode;
	HGLOBAL	hDevNames;
Alexandre Julliard's avatar
Alexandre Julliard committed
652
	DWORD		Flags;
653 654 655 656
	POINT		ptPaperSize;
	RECT		rtMinMargin;
	RECT		rtMargin;
	HINSTANCE	hInstance;
Alexandre Julliard's avatar
Alexandre Julliard committed
657 658 659 660
	LPARAM		lCustData;
	LPPAGESETUPHOOK	lpfnPageSetupHook;
	LPPAGEPAINTHOOK	lpfnPagePaintHook;
	LPCWSTR		lpPageSetupTemplateName;
661 662
	HGLOBAL	hPageSetupTemplate;
} PAGESETUPDLGW,*LPPAGESETUPDLGW;
Alexandre Julliard's avatar
Alexandre Julliard committed
663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684
DECL_WINELIB_TYPE_AW(PAGESETUPDLG)
DECL_WINELIB_TYPE_AW(LPPAGESETUPDLG)

#define PSD_DEFAULTMINMARGINS             0x00000000
#define PSD_INWININIINTLMEASURE           0x00000000

#define PSD_MINMARGINS                    0x00000001
#define PSD_MARGINS                       0x00000002
#define PSD_INTHOUSANDTHSOFINCHES         0x00000004
#define PSD_INHUNDREDTHSOFMILLIMETERS     0x00000008
#define PSD_DISABLEMARGINS                0x00000010
#define PSD_DISABLEPRINTER                0x00000020
#define PSD_NOWARNING                     0x00000080
#define PSD_DISABLEORIENTATION            0x00000100
#define PSD_RETURNDEFAULT                 0x00000400
#define PSD_DISABLEPAPER                  0x00000200
#define PSD_SHOWHELP                      0x00000800
#define PSD_ENABLEPAGESETUPHOOK           0x00002000
#define PSD_ENABLEPAGESETUPTEMPLATE       0x00008000
#define PSD_ENABLEPAGESETUPTEMPLATEHANDLE 0x00020000
#define PSD_ENABLEPAGEPAINTHOOK           0x00040000
#define PSD_DISABLEPAGEPAINTING           0x00080000
685
#define PSD_NONETWORKBUTTON               0x00200000
Alexandre Julliard's avatar
Alexandre Julliard committed
686

687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744
typedef struct tagPRINTPAGERANGE
{
    DWORD       nFromPage;
    DWORD       nToPage;
} PRINTPAGERANGE, *LPPRINTPAGERANGE;

typedef struct tagPDEXA
{
    DWORD               lStructSize;
    HWND                hwndOwner;
    HGLOBAL             hDevMode;
    HGLOBAL             hDevNames;
    HDC                 hDC;
    DWORD               Flags;
    DWORD               Flags2;
    DWORD               ExclusionFlags;
    DWORD               nPageRanges;
    DWORD               nMaxPageRanges;
    LPPRINTPAGERANGE    lpPageRanges;
    DWORD               nMinPage;
    DWORD               nMaxPage;
    DWORD               nCopies;
    HINSTANCE           hInstance;
    LPCSTR              lpPrintTemplateName;
    void* /*LPUNKNOWN*/ lpCallback;
    DWORD               nPropertyPages;
    HPROPSHEETPAGE*     lphPropertyPages;
    DWORD               nStartPage;
    DWORD               dwResultAction;
} PRINTDLGEXA, *LPPRINTDLGEXA;

typedef struct tagPDEXW
{
    DWORD               lStructSize;
    HWND                hwndOwner;
    HGLOBAL             hDevMode;
    HGLOBAL             hDevNames;
    HDC                 hDC;
    DWORD               Flags;
    DWORD               Flags2;
    DWORD               ExclusionFlags;
    DWORD               nPageRanges;
    DWORD               nMaxPageRanges;
    LPPRINTPAGERANGE    lpPageRanges;
    DWORD               nMinPage;
    DWORD               nMaxPage;
    DWORD               nCopies;
    HINSTANCE           hInstance;
    LPCWSTR             lpPrintTemplateName;
    void* /*LPUNKNOWN*/ lpCallback;
    DWORD               nPropertyPages;
    HPROPSHEETPAGE*     lphPropertyPages;
    DWORD               nStartPage;
    DWORD               dwResultAction;
} PRINTDLGEXW, *LPPRINTDLGEXW;

DECL_WINELIB_TYPE_AW(PRINTDLGEX)
DECL_WINELIB_TYPE_AW(LPPRINTDLGEX)
745

746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779
#ifdef STDMETHOD

DEFINE_GUID(IID_IPrintDialogCallback, 0x5852a2c3,0x6530,0x11d1,0xb6,0xa3,0x00,0x00,0xf8,0x75,0x7b,0xf9);
#define INTERFACE IPrintDialogCallback
DECLARE_INTERFACE_(IPrintDialogCallback,IUnknown)
{
    /*** IUnknown methods ***/
    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID,void **) PURE;
    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    STDMETHOD_(ULONG,Release)(THIS) PURE;
    /*** IPrintDialogCallback methods ***/
    STDMETHOD(InitDone)(THIS) PURE;
    STDMETHOD(SelectionChange)(THIS) PURE;
    STDMETHOD(HandleMessage)(THIS_ HWND,UINT,WPARAM,LPARAM,LRESULT *) PURE;
};
#undef INTERFACE

DEFINE_GUID(IID_IPrintDialogServices, 0x509aaeda,0x5639,0x11d1,0xb6,0xa1,0x00,0x00,0xf8,0x75,0x7b,0xf9);
#define INTERFACE IPrintDialogServices
DECLARE_INTERFACE_(IPrintDialogServices,IUnknown)
{
    /*** IUnknown methods ***/
    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID,void **) PURE;
    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    STDMETHOD_(ULONG,Release)(THIS) PURE;
    /*** IPrintDialogServices methods ***/
    STDMETHOD(GetCurrentDevMode)(THIS_ LPDEVMODEW,UINT *) PURE;
    STDMETHOD(GetCurrentPrinterName)(THIS_ LPWSTR,UINT *) PURE;
    STDMETHOD(GetCurrentPortName)(THIS_ LPWSTR,UINT *) PURE;
};
#undef INTERFACE

#endif /* STDMETHOD */

780 781
BOOL  WINAPI ChooseColorA(LPCHOOSECOLORA lpChCol);
BOOL  WINAPI ChooseColorW(LPCHOOSECOLORW lpChCol);
Alexandre Julliard's avatar
Alexandre Julliard committed
782
#define ChooseColor WINELIB_NAME_AW(ChooseColor)
Alexandre Julliard's avatar
Alexandre Julliard committed
783
DWORD   WINAPI CommDlgExtendedError(void);
784 785
HWND  WINAPI FindTextA(LPFINDREPLACEA lpFind);
HWND  WINAPI FindTextW(LPFINDREPLACEW lpFind);
Alexandre Julliard's avatar
Alexandre Julliard committed
786
#define FindText WINELIB_NAME_AW(FindText)
787 788
short   WINAPI GetFileTitleA(LPCSTR lpFile, LPSTR lpTitle, WORD cbBuf);
short   WINAPI GetFileTitleW(LPCWSTR lpFile, LPWSTR lpTitle, WORD cbBuf);
Alexandre Julliard's avatar
Alexandre Julliard committed
789
#define GetFileTitle WINELIB_NAME_AW(GetFileTitle)
790 791
BOOL  WINAPI GetOpenFileNameA(LPOPENFILENAMEA ofn);
BOOL  WINAPI GetOpenFileNameW(LPOPENFILENAMEW ofn);
Alexandre Julliard's avatar
Alexandre Julliard committed
792
#define GetOpenFileName WINELIB_NAME_AW(GetOpenFileName)
793 794
BOOL  WINAPI GetSaveFileNameA(LPOPENFILENAMEA ofn);
BOOL  WINAPI GetSaveFileNameW(LPOPENFILENAMEW ofn);
Alexandre Julliard's avatar
Alexandre Julliard committed
795
#define GetSaveFileName WINELIB_NAME_AW(GetSaveFileName)
796 797
BOOL WINAPI PageSetupDlgA( LPPAGESETUPDLGA );
BOOL WINAPI PageSetupDlgW( LPPAGESETUPDLGW );
Alexandre Julliard's avatar
Alexandre Julliard committed
798
#define PageSetupDlg WINELIB_NAME_AW(PageSetupDlg)
799 800
BOOL  WINAPI PrintDlgA( LPPRINTDLGA printdlg);
BOOL  WINAPI PrintDlgW( LPPRINTDLGW printdlg);
Uwe Bonnes's avatar
Uwe Bonnes committed
801
#define PrintDlg WINELIB_NAME_AW(PrintDlg)
802 803 804
HRESULT WINAPI PrintDlgExA(LPPRINTDLGEXA);
HRESULT WINAPI PrintDlgExW(LPPRINTDLGEXW);
#define PrintDlgEx WINELIB_NAME_AW(PrintDlgEx)
805 806
HWND  WINAPI ReplaceTextA( LPFINDREPLACEA lpFind);
HWND  WINAPI ReplaceTextW( LPFINDREPLACEW lpFind);
Alexandre Julliard's avatar
Alexandre Julliard committed
807
#define ReplaceText WINELIB_NAME_AW(ReplaceText)
808 809
BOOL  WINAPI ChooseFontA(LPCHOOSEFONTA);
BOOL  WINAPI ChooseFontW(LPCHOOSEFONTW);
Alexandre Julliard's avatar
Alexandre Julliard committed
810
#define ChooseFont WINELIB_NAME_AW(ChooseFont)
811

812
void COMDLG32_SetCommDlgExtendedError(DWORD err);
813

814

815
#ifndef _WIN64
816
#include <poppack.h>
817
#endif
818

Alexandre Julliard's avatar
Alexandre Julliard committed
819 820 821
#ifdef __cplusplus
}
#endif
Alexandre Julliard's avatar
Alexandre Julliard committed
822

Alexandre Julliard's avatar
Alexandre Julliard committed
823
#endif  /* __WINE_COMMDLG_H */