commdlg.h 26.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

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

72 73
#define SAVE_DIALOG  1
#define OPEN_DIALOG  2
74

75
typedef UINT_PTR (CALLBACK *LPOFNHOOKPROC)(HWND,UINT,WPARAM,LPARAM);
76

77
typedef struct tagOFNA {
Alexandre Julliard's avatar
Alexandre Julliard committed
78
	DWORD		lStructSize;
79 80
	HWND		hwndOwner;
	HINSTANCE	hInstance;
Alexandre Julliard's avatar
Alexandre Julliard committed
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
	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;
96
	LPOFNHOOKPROC	lpfnHook;
Alexandre Julliard's avatar
Alexandre Julliard committed
97
	LPCSTR		lpTemplateName;
98
} OPENFILENAMEA,*LPOPENFILENAMEA;
Alexandre Julliard's avatar
Alexandre Julliard committed
99

100
typedef struct tagOFNW {
Alexandre Julliard's avatar
Alexandre Julliard committed
101
	DWORD		lStructSize;
102 103
	HWND		hwndOwner;
	HINSTANCE	hInstance;
Alexandre Julliard's avatar
Alexandre Julliard committed
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
	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;
119
	LPOFNHOOKPROC	lpfnHook;
Alexandre Julliard's avatar
Alexandre Julliard committed
120
	LPCWSTR		lpTemplateName;
121
} OPENFILENAMEW,*LPOPENFILENAMEW;
Alexandre Julliard's avatar
Alexandre Julliard committed
122

Alexandre Julliard's avatar
Alexandre Julliard committed
123 124
DECL_WINELIB_TYPE_AW(OPENFILENAME)
DECL_WINELIB_TYPE_AW(LPOPENFILENAME)
Alexandre Julliard's avatar
Alexandre Julliard committed
125

126 127 128 129 130 131 132 133 134
#ifndef CDSIZEOF_STRUCT
#define CDSIZEOF_STRUCT(type,field) ((int)&(((type *)0)->field) + sizeof(((type*)0)->field))
#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)


135 136 137
typedef struct
{
	NMHDR           hdr;
138
	LPOPENFILENAMEA lpOFN;
139
	LPSTR           pszFile;
140
} OFNOTIFYA, *LPOFNOTIFYA;
141 142 143 144

typedef struct
{
	NMHDR           hdr;
145
	LPOPENFILENAMEW lpOFN;
146
	LPWSTR          pszFile;
147
} OFNOTIFYW, *LPOFNOTIFYW;
148 149 150

DECL_WINELIB_TYPE_AW(OFNOTIFY)
DECL_WINELIB_TYPE_AW(LPOFNOTIFY)
151

152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170
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)

171
typedef UINT_PTR (CALLBACK *LPCCHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
Alexandre Julliard's avatar
Alexandre Julliard committed
172 173 174

typedef struct {
	DWORD		lStructSize;
175
	HWND		hwndOwner;
176
	HWND		hInstance; /* Should be an HINSTANCE but MS made a typo */
Alexandre Julliard's avatar
Alexandre Julliard committed
177 178 179 180 181 182
	DWORD	        rgbResult;
	LPDWORD         lpCustColors;
	DWORD 		Flags;
	DWORD		lCustData;
        LPCCHOOKPROC    lpfnHook;
	LPCSTR 		lpTemplateName;
183 184
} CHOOSECOLORA;
typedef CHOOSECOLORA *LPCHOOSECOLORA;
Alexandre Julliard's avatar
Alexandre Julliard committed
185 186 187

typedef struct {
	DWORD		lStructSize;
188
	HWND		hwndOwner;
189
	HWND		hInstance; /* Should be an HINSTANCE but MS made a typo */
Alexandre Julliard's avatar
Alexandre Julliard committed
190
	DWORD	        rgbResult;
191
	LPDWORD         lpCustColors;
Alexandre Julliard's avatar
Alexandre Julliard committed
192 193 194 195
	DWORD 		Flags;
	DWORD		lCustData;
        LPCCHOOKPROC    lpfnHook;
	LPCWSTR 	lpTemplateName;
196 197
} CHOOSECOLORW;
typedef CHOOSECOLORW *LPCHOOSECOLORW;
Alexandre Julliard's avatar
Alexandre Julliard committed
198

Alexandre Julliard's avatar
Alexandre Julliard committed
199 200
DECL_WINELIB_TYPE_AW(CHOOSECOLOR)
DECL_WINELIB_TYPE_AW(LPCHOOSECOLOR)
Alexandre Julliard's avatar
Alexandre Julliard committed
201

Alexandre Julliard's avatar
Alexandre Julliard committed
202 203 204 205 206 207 208 209

#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
210 211
#define CC_SOLIDCOLOR            0x00000080
#define CC_ANYCOLOR              0x00000100
Alexandre Julliard's avatar
Alexandre Julliard committed
212

213
typedef UINT_PTR (CALLBACK *LPFRHOOKPROC)(HWND,UINT,WPARAM,LPARAM);
214

Alexandre Julliard's avatar
Alexandre Julliard committed
215 216
typedef struct {
	DWORD		lStructSize;
217 218
	HWND		hwndOwner;
	HINSTANCE	hInstance;
Alexandre Julliard's avatar
Alexandre Julliard committed
219 220 221 222 223 224
	DWORD		Flags;
	LPSTR		lpstrFindWhat;
	LPSTR		lpstrReplaceWith;
	WORD		wFindWhatLen;
	WORD 		wReplaceWithLen;
	LPARAM 		lCustData;
225
        LPFRHOOKPROC    lpfnHook;
Alexandre Julliard's avatar
Alexandre Julliard committed
226
	LPCSTR 		lpTemplateName;
227
} FINDREPLACEA, *LPFINDREPLACEA;
Alexandre Julliard's avatar
Alexandre Julliard committed
228 229 230

typedef struct {
	DWORD		lStructSize;
231 232
	HWND		hwndOwner;
	HINSTANCE	hInstance;
Alexandre Julliard's avatar
Alexandre Julliard committed
233 234 235 236 237 238
	DWORD		Flags;
	LPWSTR		lpstrFindWhat;
	LPWSTR		lpstrReplaceWith;
	WORD		wFindWhatLen;
	WORD 		wReplaceWithLen;
	LPARAM 		lCustData;
239
        LPFRHOOKPROC    lpfnHook;
Alexandre Julliard's avatar
Alexandre Julliard committed
240
	LPCWSTR		lpTemplateName;
241
} FINDREPLACEW, *LPFINDREPLACEW;
242

Alexandre Julliard's avatar
Alexandre Julliard committed
243 244
DECL_WINELIB_TYPE_AW(FINDREPLACE)
DECL_WINELIB_TYPE_AW(LPFINDREPLACE)
245

Alexandre Julliard's avatar
Alexandre Julliard committed
246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262
#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
263 264 265
#define FR_MATCHDIAC                    0x20000000
#define FR_MATCHKASHIDA                 0x40000000
#define FR_MATCHALEFHAMZA               0x80000000
Alexandre Julliard's avatar
Alexandre Julliard committed
266

267
typedef UINT (CALLBACK *LPCFHOOKPROC)(HWND,UINT,WPARAM,LPARAM);
268

269
typedef struct tagCHOOSEFONTA
Alexandre Julliard's avatar
Alexandre Julliard committed
270
{
271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286
	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;
287
} CHOOSEFONTA, *LPCHOOSEFONTA;
Alexandre Julliard's avatar
Alexandre Julliard committed
288

289
typedef struct tagCHOOSEFONTW
Alexandre Julliard's avatar
Alexandre Julliard committed
290
{
291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306
	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;
307
} CHOOSEFONTW, *LPCHOOSEFONTW;
Alexandre Julliard's avatar
Alexandre Julliard committed
308

Alexandre Julliard's avatar
Alexandre Julliard committed
309 310
DECL_WINELIB_TYPE_AW(CHOOSEFONT)
DECL_WINELIB_TYPE_AW(LPCHOOSEFONT)
Alexandre Julliard's avatar
Alexandre Julliard committed
311 312 313 314 315 316 317 318 319 320 321 322 323

#define CF_SCREENFONTS               0x00000001
#define CF_PRINTERFONTS              0x00000002
#define CF_BOTH                      (CF_SCREENFONTS | CF_PRINTERFONTS)
#define CF_SHOWHELP                  0x00000004L
#define CF_ENABLEHOOK                0x00000008L
#define CF_ENABLETEMPLATE            0x00000010L
#define CF_ENABLETEMPLATEHANDLE      0x00000020L
#define CF_INITTOLOGFONTSTRUCT       0x00000040L
#define CF_USESTYLE                  0x00000080L
#define CF_EFFECTS                   0x00000100L
#define CF_APPLY                     0x00000200L
#define CF_ANSIONLY                  0x00000400L
Alexandre Julliard's avatar
Alexandre Julliard committed
324
#define CF_SCRIPTSONLY               CF_ANSIONLY
Alexandre Julliard's avatar
Alexandre Julliard committed
325 326 327 328 329 330 331 332 333 334 335 336
#define CF_NOVECTORFONTS             0x00000800L
#define CF_NOOEMFONTS                CF_NOVECTORFONTS
#define CF_NOSIMULATIONS             0x00001000L
#define CF_LIMITSIZE                 0x00002000L
#define CF_FIXEDPITCHONLY            0x00004000L
#define CF_WYSIWYG                   0x00008000L /* use with CF_SCREENFONTS & CF_PRINTERFONTS */
#define CF_FORCEFONTEXIST            0x00010000L
#define CF_SCALABLEONLY              0x00020000L
#define CF_TTONLY                    0x00040000L
#define CF_NOFACESEL                 0x00080000L
#define CF_NOSTYLESEL                0x00100000L
#define CF_NOSIZESEL                 0x00200000L
Alexandre Julliard's avatar
Alexandre Julliard committed
337 338 339
#define CF_SELECTSCRIPT              0x00400000L
#define CF_NOSCRIPTSEL               0x00800000L
#define CF_NOVERTFONTS               0x01000000L
Alexandre Julliard's avatar
Alexandre Julliard committed
340 341 342 343 344 345 346 347 348

#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
349 350
#define WM_CHOOSEFONT_SETLOGFONT	(WM_USER + 101)
#define WM_CHOOSEFONT_SETFLAGS		(WM_USER + 102)
Alexandre Julliard's avatar
Alexandre Julliard committed
351

352
#define LBSELCHSTRINGA  "commdlg_LBSelChangedNotify"
353 354 355 356 357 358
#if defined(__GNUC__)
# define LBSELCHSTRINGW (const WCHAR []){ '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 }
#elif defined(_MSC_VER)
# define LBSELCHSTRINGW L"commdlg_LBSelChangedNotify"
#else
359 360
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 };
361
#endif
362 363 364
#define LBSELCHSTRING   WINELIB_NAME_AW(LBSELCHSTRING)

#define SHAREVISTRINGA  "commdlg_ShareViolation"
365 366 367 368 369 370
#if defined(__GNUC__)
# define SHAREVISTRINGW (const WCHAR []){ 'c','o','m','m','d','l','g','_', \
  'S','h','a','r','e','V','i','o','l','a','t','i','o','n',0 }
#elif defined(_MSC_VER)
# define SHAREVISTRINGW L"commdlg_ShareViolation"
#else
371 372
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 };
373
#endif
374 375 376
#define SHAREVISTRING   WINELIB_NAME_AW(SHAREVISTRING)

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

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

#define SETRGBSTRINGA   "commdlg_SetRGBColor"
401 402 403 404 405 406
#if defined(__GNUC__)
# define SETRGBSTRINGW (const WCHAR []){ 'c','o','m','m','d','l','g','_', \
  'S','e','t','R','G','B','C','o','l','o','r',0 }
#elif defined(_MSC_VER)
# define SETRGBSTRINGW  L"commdlg_SetRGBColor"
#else
407 408
static const WCHAR SETRGBSTRINGW[] = { 'c','o','m','m','d','l','g','_',
  'S','e','t','R','G','B','C','o','l','o','r',0 };
409
#endif
410 411 412
#define SETRGBSTRING    WINELIB_NAME_AW(SETRGBSTRING)

#define FINDMSGSTRINGA  "commdlg_FindReplace"
413 414 415 416 417 418
#if defined(__GNUC__)
# define FINDMSGSTRINGW (const WCHAR []){ 'c','o','m','m','d','l','g','_', \
  'F','i','n','d','R','e','p','l','a','c','e',0 }
#elif defined(_MSC_VER)
# define FINDMSGSTRINGW L"commdlg_FindReplace"
#else
419 420
static const WCHAR FINDMSGSTRINGW[] = { 'c','o','m','m','d','l','g','_',
  'F','i','n','d','R','e','p','l','a','c','e',0 };
421
#endif
422 423 424
#define FINDMSGSTRING   WINELIB_NAME_AW(FINDMSGSTRING)

#define HELPMSGSTRINGA  "commdlg_help"
425 426 427 428 429 430
#if defined(__GNUC__)
# define HELPMSGSTRINGW (const WCHAR []){ 'c','o','m','m','d','l','g','_', \
  'H','e','l','p',0 }
#elif defined(_MSC_VER)
# define HELPMSGSTRINGW L"commdlg_help"
#else
431 432
static const WCHAR HELPMSGSTRINGW[] = { 'c','o','m','m','d','l','g','_',
  'H','e','l','p',0 };
433
#endif
434 435
#define HELPMSGSTRING   WINELIB_NAME_AW(HELPMSGSTRING)

Alexandre Julliard's avatar
Alexandre Julliard committed
436 437 438 439 440
#define CD_LBSELNOITEMS -1
#define CD_LBSELCHANGE   0
#define CD_LBSELSUB      1
#define CD_LBSELADD      2

441 442 443 444 445 446 447 448 449 450
#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)
451
#define CDN_INCLUDEITEM         (CDN_FIRST - 0x0007)
452 453 454 455 456 457 458

#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)
459
#define CDM_GETFOLDERIDLIST     (CDM_FIRST + 0x0003)
460 461 462 463
#define CDM_SETCONTROLTEXT      (CDM_FIRST + 0x0004)
#define CDM_HIDECONTROL         (CDM_FIRST + 0x0005)
#define CDM_SETDEFEXT           (CDM_FIRST + 0x0006)

464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486

/* 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)
487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516

#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)
517 518 519 520 521 522 523 524 525 526 527

#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)


528 529
typedef UINT (CALLBACK *LPPRINTHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
typedef UINT (CALLBACK *LPSETUPHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
530

531
typedef struct tagPDA
Alexandre Julliard's avatar
Alexandre Julliard committed
532 533
{
    DWORD            lStructSize;
534 535 536 537
    HWND           hwndOwner;
    HGLOBAL        hDevMode;
    HGLOBAL        hDevNames;
    HDC            hDC;
Alexandre Julliard's avatar
Alexandre Julliard committed
538 539 540 541 542 543
    DWORD            Flags;
    WORD             nFromPage;
    WORD             nToPage;
    WORD             nMinPage;
    WORD             nMaxPage;
    WORD             nCopies;
544
    HINSTANCE      hInstance;
Alexandre Julliard's avatar
Alexandre Julliard committed
545 546 547 548 549
    LPARAM           lCustData;
    LPPRINTHOOKPROC  lpfnPrintHook;
    LPSETUPHOOKPROC  lpfnSetupHook;
    LPCSTR           lpPrintTemplateName;
    LPCSTR           lpSetupTemplateName;
550 551 552
    HGLOBAL        hPrintTemplate;
    HGLOBAL        hSetupTemplate;
} PRINTDLGA, *LPPRINTDLGA;
Alexandre Julliard's avatar
Alexandre Julliard committed
553

554
typedef struct tagPDW
Alexandre Julliard's avatar
Alexandre Julliard committed
555 556
{
    DWORD            lStructSize;
557 558 559 560
    HWND           hwndOwner;
    HGLOBAL        hDevMode;
    HGLOBAL        hDevNames;
    HDC            hDC;
Alexandre Julliard's avatar
Alexandre Julliard committed
561 562 563 564 565 566
    DWORD            Flags;
    WORD             nFromPage;
    WORD             nToPage;
    WORD             nMinPage;
    WORD             nMaxPage;
    WORD             nCopies;
567
    HINSTANCE      hInstance;
Alexandre Julliard's avatar
Alexandre Julliard committed
568 569 570 571 572
    LPARAM           lCustData;
    LPPRINTHOOKPROC  lpfnPrintHook;
    LPSETUPHOOKPROC  lpfnSetupHook;
    LPCWSTR          lpPrintTemplateName;
    LPCWSTR          lpSetupTemplateName;
573 574 575
    HGLOBAL        hPrintTemplate;
    HGLOBAL        hSetupTemplate;
} PRINTDLGW, *LPPRINTDLGW;
Alexandre Julliard's avatar
Alexandre Julliard committed
576

Alexandre Julliard's avatar
Alexandre Julliard committed
577 578
DECL_WINELIB_TYPE_AW(PRINTDLG)
DECL_WINELIB_TYPE_AW(LPPRINTDLG)
Alexandre Julliard's avatar
Alexandre Julliard committed
579

580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599
#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
600
#define PD_USEDEVMODECOPIESANDCOLLATE 0x00040000
601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616
#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
617

618 619 620 621 622 623 624
typedef struct
{
    WORD  wDriverOffset;
    WORD  wDeviceOffset;
    WORD  wOutputOffset;
    WORD  wDefault;
} DEVNAMES;
Alexandre Julliard's avatar
Alexandre Julliard committed
625 626 627 628
typedef DEVNAMES * LPDEVNAMES;

#define DN_DEFAULTPRN      0x0001

Alexandre Julliard's avatar
Alexandre Julliard committed
629 630 631 632 633 634 635 636 637
/* 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)

638 639
typedef UINT (CALLBACK *LPPAGEPAINTHOOK)( HWND, UINT, WPARAM, LPARAM );
typedef UINT (CALLBACK *LPPAGESETUPHOOK)( HWND, UINT, WPARAM, LPARAM );
Alexandre Julliard's avatar
Alexandre Julliard committed
640

641
typedef struct tagPSDA
Alexandre Julliard's avatar
Alexandre Julliard committed
642 643
{
	DWORD		lStructSize;
644 645 646
	HWND		hwndOwner;
	HGLOBAL	hDevMode;
	HGLOBAL	hDevNames;
Alexandre Julliard's avatar
Alexandre Julliard committed
647
	DWORD		Flags;
648 649 650 651
	POINT		ptPaperSize;
	RECT		rtMinMargin;
	RECT		rtMargin;
	HINSTANCE	hInstance;
Alexandre Julliard's avatar
Alexandre Julliard committed
652 653 654 655
	LPARAM		lCustData;
	LPPAGESETUPHOOK	lpfnPageSetupHook;
	LPPAGEPAINTHOOK	lpfnPagePaintHook;
	LPCSTR		lpPageSetupTemplateName;
656 657
	HGLOBAL	hPageSetupTemplate;
} PAGESETUPDLGA,*LPPAGESETUPDLGA;
Alexandre Julliard's avatar
Alexandre Julliard committed
658

659
typedef struct tagPSDW
Alexandre Julliard's avatar
Alexandre Julliard committed
660 661
{
	DWORD		lStructSize;
662 663 664
	HWND		hwndOwner;
	HGLOBAL	hDevMode;
	HGLOBAL	hDevNames;
Alexandre Julliard's avatar
Alexandre Julliard committed
665
	DWORD		Flags;
666 667 668 669
	POINT		ptPaperSize;
	RECT		rtMinMargin;
	RECT		rtMargin;
	HINSTANCE	hInstance;
Alexandre Julliard's avatar
Alexandre Julliard committed
670 671 672 673
	LPARAM		lCustData;
	LPPAGESETUPHOOK	lpfnPageSetupHook;
	LPPAGEPAINTHOOK	lpfnPagePaintHook;
	LPCWSTR		lpPageSetupTemplateName;
674 675
	HGLOBAL	hPageSetupTemplate;
} PAGESETUPDLGW,*LPPAGESETUPDLGW;
Alexandre Julliard's avatar
Alexandre Julliard committed
676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697
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
698
#define PSD_NONETWORKBUTTON               0x00200000
Alexandre Julliard's avatar
Alexandre Julliard committed
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 745 746 747 748 749 750 751 752 753 754 755 756 757
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)
758

759 760
BOOL  WINAPI ChooseColorA(LPCHOOSECOLORA lpChCol);
BOOL  WINAPI ChooseColorW(LPCHOOSECOLORW lpChCol);
Alexandre Julliard's avatar
Alexandre Julliard committed
761
#define ChooseColor WINELIB_NAME_AW(ChooseColor)
Alexandre Julliard's avatar
Alexandre Julliard committed
762
DWORD   WINAPI CommDlgExtendedError(void);
763 764
HWND  WINAPI FindTextA(LPFINDREPLACEA lpFind);
HWND  WINAPI FindTextW(LPFINDREPLACEW lpFind);
Alexandre Julliard's avatar
Alexandre Julliard committed
765
#define FindText WINELIB_NAME_AW(FindText)
766 767
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
768
#define GetFileTitle WINELIB_NAME_AW(GetFileTitle)
769 770
BOOL  WINAPI GetOpenFileNameA(LPOPENFILENAMEA ofn);
BOOL  WINAPI GetOpenFileNameW(LPOPENFILENAMEW ofn);
Alexandre Julliard's avatar
Alexandre Julliard committed
771
#define GetOpenFileName WINELIB_NAME_AW(GetOpenFileName)
772 773
BOOL  WINAPI GetSaveFileNameA(LPOPENFILENAMEA ofn);
BOOL  WINAPI GetSaveFileNameW(LPOPENFILENAMEW ofn);
Alexandre Julliard's avatar
Alexandre Julliard committed
774
#define GetSaveFileName WINELIB_NAME_AW(GetSaveFileName)
775 776
BOOL WINAPI PageSetupDlgA( LPPAGESETUPDLGA );
BOOL WINAPI PageSetupDlgW( LPPAGESETUPDLGW );
Alexandre Julliard's avatar
Alexandre Julliard committed
777
#define PageSetupDlg WINELIB_NAME_AW(PageSetupDlg)
778 779
BOOL  WINAPI PrintDlgA( LPPRINTDLGA printdlg);
BOOL  WINAPI PrintDlgW( LPPRINTDLGW printdlg);
Uwe Bonnes's avatar
Uwe Bonnes committed
780
#define PrintDlg WINELIB_NAME_AW(PrintDlg)
781 782 783
HRESULT WINAPI PrintDlgExA(LPPRINTDLGEXA);
HRESULT WINAPI PrintDlgExW(LPPRINTDLGEXW);
#define PrintDlgEx WINELIB_NAME_AW(PrintDlgEx)
784 785
HWND  WINAPI ReplaceTextA( LPFINDREPLACEA lpFind);
HWND  WINAPI ReplaceTextW( LPFINDREPLACEW lpFind);
Alexandre Julliard's avatar
Alexandre Julliard committed
786
#define ReplaceText WINELIB_NAME_AW(ReplaceText)
787 788
BOOL  WINAPI ChooseFontA(LPCHOOSEFONTA);
BOOL  WINAPI ChooseFontW(LPCHOOSEFONTW);
Alexandre Julliard's avatar
Alexandre Julliard committed
789
#define ChooseFont WINELIB_NAME_AW(ChooseFont)
790

791
void COMDLG32_SetCommDlgExtendedError(DWORD err);
792

793

794
#ifndef _WIN64
795
#include <poppack.h>
796
#endif
797

Alexandre Julliard's avatar
Alexandre Julliard committed
798 799 800
#ifdef __cplusplus
}
#endif
Alexandre Julliard's avatar
Alexandre Julliard committed
801

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