commdlg.h 25.7 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 29
#include <prsht.h>
#include <pshpack1.h>
Alexandre Julliard's avatar
Alexandre Julliard committed
30

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

Alexandre Julliard's avatar
Alexandre Julliard committed
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
#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
56
#define OFN_NONETWORKBUTTON          0x00020000
Alexandre Julliard's avatar
Alexandre Julliard committed
57 58 59 60
#define OFN_NOLONGNAMES              0x00040000
#define OFN_EXPLORER                 0x00080000
#define OFN_NODEREFERENCELINKS       0x00100000
#define OFN_LONGNAMES                0x00200000
61 62
#define OFN_ENABLEINCLUDENOTIFY      0x00400000
#define OFN_ENABLESIZING             0x00800000
63 64
#define OFN_DONTADDTORECENT          0x02000000
#define OFN_FORCESHOWHIDDEN          0x10000000
Alexandre Julliard's avatar
Alexandre Julliard committed
65

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

70 71
#define SAVE_DIALOG  1
#define OPEN_DIALOG  2
72

73
typedef UINT (CALLBACK *LPOFNHOOKPROC)(HWND,UINT,WPARAM,LPARAM);
74

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

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

Alexandre Julliard's avatar
Alexandre Julliard committed
121 122
DECL_WINELIB_TYPE_AW(OPENFILENAME)
DECL_WINELIB_TYPE_AW(LPOPENFILENAME)
Alexandre Julliard's avatar
Alexandre Julliard committed
123

124 125 126 127 128 129 130 131 132
#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)


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

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

DECL_WINELIB_TYPE_AW(OFNOTIFY)
DECL_WINELIB_TYPE_AW(LPOFNOTIFY)
149

150
typedef UINT (CALLBACK *LPCCHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
Alexandre Julliard's avatar
Alexandre Julliard committed
151 152 153

typedef struct {
	DWORD		lStructSize;
154
	HWND		hwndOwner;
155
	HWND		hInstance; /* Should be an HINSTANCE but MS made a typo */
Alexandre Julliard's avatar
Alexandre Julliard committed
156 157 158 159 160 161
	DWORD	        rgbResult;
	LPDWORD         lpCustColors;
	DWORD 		Flags;
	DWORD		lCustData;
        LPCCHOOKPROC    lpfnHook;
	LPCSTR 		lpTemplateName;
162 163
} CHOOSECOLORA;
typedef CHOOSECOLORA *LPCHOOSECOLORA;
Alexandre Julliard's avatar
Alexandre Julliard committed
164 165 166

typedef struct {
	DWORD		lStructSize;
167
	HWND		hwndOwner;
168
	HWND		hInstance; /* Should be an HINSTANCE but MS made a typo */
Alexandre Julliard's avatar
Alexandre Julliard committed
169
	DWORD	        rgbResult;
170
	LPDWORD         lpCustColors;
Alexandre Julliard's avatar
Alexandre Julliard committed
171 172 173 174
	DWORD 		Flags;
	DWORD		lCustData;
        LPCCHOOKPROC    lpfnHook;
	LPCWSTR 	lpTemplateName;
175 176
} CHOOSECOLORW;
typedef CHOOSECOLORW *LPCHOOSECOLORW;
Alexandre Julliard's avatar
Alexandre Julliard committed
177

Alexandre Julliard's avatar
Alexandre Julliard committed
178 179
DECL_WINELIB_TYPE_AW(CHOOSECOLOR)
DECL_WINELIB_TYPE_AW(LPCHOOSECOLOR)
Alexandre Julliard's avatar
Alexandre Julliard committed
180

Alexandre Julliard's avatar
Alexandre Julliard committed
181 182 183 184 185 186 187 188

#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
189 190
#define CC_SOLIDCOLOR            0x00000080
#define CC_ANYCOLOR              0x00000100
Alexandre Julliard's avatar
Alexandre Julliard committed
191

192
typedef UINT (CALLBACK *LPFRHOOKPROC)(HWND,UINT,WPARAM,LPARAM);
193

Alexandre Julliard's avatar
Alexandre Julliard committed
194 195
typedef struct {
	DWORD		lStructSize;
196 197
	HWND		hwndOwner;
	HINSTANCE	hInstance;
Alexandre Julliard's avatar
Alexandre Julliard committed
198 199 200 201 202 203
	DWORD		Flags;
	LPSTR		lpstrFindWhat;
	LPSTR		lpstrReplaceWith;
	WORD		wFindWhatLen;
	WORD 		wReplaceWithLen;
	LPARAM 		lCustData;
204
        LPFRHOOKPROC    lpfnHook;
Alexandre Julliard's avatar
Alexandre Julliard committed
205
	LPCSTR 		lpTemplateName;
206
} FINDREPLACEA, *LPFINDREPLACEA;
Alexandre Julliard's avatar
Alexandre Julliard committed
207 208 209

typedef struct {
	DWORD		lStructSize;
210 211
	HWND		hwndOwner;
	HINSTANCE	hInstance;
Alexandre Julliard's avatar
Alexandre Julliard committed
212 213 214 215 216 217
	DWORD		Flags;
	LPWSTR		lpstrFindWhat;
	LPWSTR		lpstrReplaceWith;
	WORD		wFindWhatLen;
	WORD 		wReplaceWithLen;
	LPARAM 		lCustData;
218
        LPFRHOOKPROC    lpfnHook;
Alexandre Julliard's avatar
Alexandre Julliard committed
219
	LPCWSTR		lpTemplateName;
220
} FINDREPLACEW, *LPFINDREPLACEW;
221

Alexandre Julliard's avatar
Alexandre Julliard committed
222 223
DECL_WINELIB_TYPE_AW(FINDREPLACE)
DECL_WINELIB_TYPE_AW(LPFINDREPLACE)
224

Alexandre Julliard's avatar
Alexandre Julliard committed
225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241
#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
242 243 244
#define FR_MATCHDIAC                    0x20000000
#define FR_MATCHKASHIDA                 0x40000000
#define FR_MATCHALEFHAMZA               0x80000000
Alexandre Julliard's avatar
Alexandre Julliard committed
245

246
typedef UINT (CALLBACK *LPCFHOOKPROC)(HWND,UINT,WPARAM,LPARAM);
247

248
typedef struct tagCHOOSEFONTA
Alexandre Julliard's avatar
Alexandre Julliard committed
249
{
250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265
	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;
266
} CHOOSEFONTA, *LPCHOOSEFONTA;
Alexandre Julliard's avatar
Alexandre Julliard committed
267

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

Alexandre Julliard's avatar
Alexandre Julliard committed
288 289
DECL_WINELIB_TYPE_AW(CHOOSEFONT)
DECL_WINELIB_TYPE_AW(LPCHOOSEFONT)
Alexandre Julliard's avatar
Alexandre Julliard committed
290 291 292 293 294 295 296 297 298 299 300 301 302

#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
303
#define CF_SCRIPTSONLY               CF_ANSIONLY
Alexandre Julliard's avatar
Alexandre Julliard committed
304 305 306 307 308 309 310 311 312 313 314 315
#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
316 317 318
#define CF_SELECTSCRIPT              0x00400000L
#define CF_NOSCRIPTSEL               0x00800000L
#define CF_NOVERTFONTS               0x01000000L
Alexandre Julliard's avatar
Alexandre Julliard committed
319 320 321 322 323 324 325 326 327

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

331
#define LBSELCHSTRINGA  "commdlg_LBSelChangedNotify"
332 333 334 335 336 337
#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
338 339
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 };
340
#endif
341 342 343
#define LBSELCHSTRING   WINELIB_NAME_AW(LBSELCHSTRING)

#define SHAREVISTRINGA  "commdlg_ShareViolation"
344 345 346 347 348 349
#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
350 351
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 };
352
#endif
353 354 355
#define SHAREVISTRING   WINELIB_NAME_AW(SHAREVISTRING)

#define FILEOKSTRINGA   "commdlg_FileNameOK"
356 357 358 359 360 361
#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
362 363
static const WCHAR FILEOKSTRINGW[] = { 'c','o','m','m','d','l','g','_',
  'F','i','l','e','N','a','m','e','O','K',0 };
364
#endif
365 366 367
#define FILEOKSTRING    WINELIB_NAME_AW(FILEOKSTRING)

#define COLOROKSTRINGA  "commdlg_ColorOK"
368 369 370 371 372 373
#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
374 375
static const WCHAR COLOROKSTRINGW[] = { 'c','o','m','m','d','l','g','_',
  'C','o','l','o','r','O','K',0 };
376
#endif
377 378 379
#define COLOROKSTRING   WINELIB_NAME_AW(COLOROKSTRING)

#define SETRGBSTRINGA   "commdlg_SetRGBColor"
380 381 382 383 384 385
#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
386 387
static const WCHAR SETRGBSTRINGW[] = { 'c','o','m','m','d','l','g','_',
  'S','e','t','R','G','B','C','o','l','o','r',0 };
388
#endif
389 390 391
#define SETRGBSTRING    WINELIB_NAME_AW(SETRGBSTRING)

#define FINDMSGSTRINGA  "commdlg_FindReplace"
392 393 394 395 396 397
#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
398 399
static const WCHAR FINDMSGSTRINGW[] = { 'c','o','m','m','d','l','g','_',
  'F','i','n','d','R','e','p','l','a','c','e',0 };
400
#endif
401 402 403
#define FINDMSGSTRING   WINELIB_NAME_AW(FINDMSGSTRING)

#define HELPMSGSTRINGA  "commdlg_help"
404 405 406 407 408 409
#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
410 411
static const WCHAR HELPMSGSTRINGW[] = { 'c','o','m','m','d','l','g','_',
  'H','e','l','p',0 };
412
#endif
413 414
#define HELPMSGSTRING   WINELIB_NAME_AW(HELPMSGSTRING)

Alexandre Julliard's avatar
Alexandre Julliard committed
415 416 417 418 419 420

#define CD_LBSELNOITEMS -1
#define CD_LBSELCHANGE   0
#define CD_LBSELSUB      1
#define CD_LBSELADD      2

421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442
#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)

#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)
#define CDM_GETFOLDERLIST       (CDM_FIRST + 0x0003)
#define CDM_SETCONTROLTEXT      (CDM_FIRST + 0x0004)
#define CDM_HIDECONTROL         (CDM_FIRST + 0x0005)
#define CDM_SETDEFEXT           (CDM_FIRST + 0x0006)

443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465

/* 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)
466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495

#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)
496 497 498 499 500 501 502 503 504 505 506

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


507 508
typedef UINT (CALLBACK *LPPRINTHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
typedef UINT (CALLBACK *LPSETUPHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
509

510
typedef struct tagPDA
Alexandre Julliard's avatar
Alexandre Julliard committed
511 512
{
    DWORD            lStructSize;
513 514 515 516
    HWND           hwndOwner;
    HGLOBAL        hDevMode;
    HGLOBAL        hDevNames;
    HDC            hDC;
Alexandre Julliard's avatar
Alexandre Julliard committed
517 518 519 520 521 522
    DWORD            Flags;
    WORD             nFromPage;
    WORD             nToPage;
    WORD             nMinPage;
    WORD             nMaxPage;
    WORD             nCopies;
523
    HINSTANCE      hInstance;
Alexandre Julliard's avatar
Alexandre Julliard committed
524 525 526 527 528
    LPARAM           lCustData;
    LPPRINTHOOKPROC  lpfnPrintHook;
    LPSETUPHOOKPROC  lpfnSetupHook;
    LPCSTR           lpPrintTemplateName;
    LPCSTR           lpSetupTemplateName;
529 530 531
    HGLOBAL        hPrintTemplate;
    HGLOBAL        hSetupTemplate;
} PRINTDLGA, *LPPRINTDLGA;
Alexandre Julliard's avatar
Alexandre Julliard committed
532

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

Alexandre Julliard's avatar
Alexandre Julliard committed
556 557
DECL_WINELIB_TYPE_AW(PRINTDLG)
DECL_WINELIB_TYPE_AW(LPPRINTDLG)
Alexandre Julliard's avatar
Alexandre Julliard committed
558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578

#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
579
#define PD_USEDEVMODECOPIESANDCOLLATE 0x00040000
Alexandre Julliard's avatar
Alexandre Julliard committed
580 581
#define PD_DISABLEPRINTTOFILE        0x00080000
#define PD_HIDEPRINTTOFILE           0x00100000
582
#define PD_NONETWORKBUTTON           0x00200000
Alexandre Julliard's avatar
Alexandre Julliard committed
583

584 585 586 587 588 589 590
typedef struct
{
    WORD  wDriverOffset;
    WORD  wDeviceOffset;
    WORD  wOutputOffset;
    WORD  wDefault;
} DEVNAMES;
Alexandre Julliard's avatar
Alexandre Julliard committed
591 592 593 594
typedef DEVNAMES * LPDEVNAMES;

#define DN_DEFAULTPRN      0x0001

Alexandre Julliard's avatar
Alexandre Julliard committed
595 596 597 598 599 600 601 602 603
/* 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)

604 605
typedef UINT (CALLBACK *LPPAGEPAINTHOOK)( HWND, UINT, WPARAM, LPARAM );
typedef UINT (CALLBACK *LPPAGESETUPHOOK)( HWND, UINT, WPARAM, LPARAM );
Alexandre Julliard's avatar
Alexandre Julliard committed
606

607
typedef struct tagPSDA
Alexandre Julliard's avatar
Alexandre Julliard committed
608 609
{
	DWORD		lStructSize;
610 611 612
	HWND		hwndOwner;
	HGLOBAL	hDevMode;
	HGLOBAL	hDevNames;
Alexandre Julliard's avatar
Alexandre Julliard committed
613
	DWORD		Flags;
614 615 616 617
	POINT		ptPaperSize;
	RECT		rtMinMargin;
	RECT		rtMargin;
	HINSTANCE	hInstance;
Alexandre Julliard's avatar
Alexandre Julliard committed
618 619 620 621
	LPARAM		lCustData;
	LPPAGESETUPHOOK	lpfnPageSetupHook;
	LPPAGEPAINTHOOK	lpfnPagePaintHook;
	LPCSTR		lpPageSetupTemplateName;
622 623
	HGLOBAL	hPageSetupTemplate;
} PAGESETUPDLGA,*LPPAGESETUPDLGA;
Alexandre Julliard's avatar
Alexandre Julliard committed
624

625
typedef struct tagPSDW
Alexandre Julliard's avatar
Alexandre Julliard committed
626 627
{
	DWORD		lStructSize;
628 629 630
	HWND		hwndOwner;
	HGLOBAL	hDevMode;
	HGLOBAL	hDevNames;
Alexandre Julliard's avatar
Alexandre Julliard committed
631
	DWORD		Flags;
632 633 634 635
	POINT		ptPaperSize;
	RECT		rtMinMargin;
	RECT		rtMargin;
	HINSTANCE	hInstance;
Alexandre Julliard's avatar
Alexandre Julliard committed
636 637 638 639
	LPARAM		lCustData;
	LPPAGESETUPHOOK	lpfnPageSetupHook;
	LPPAGEPAINTHOOK	lpfnPagePaintHook;
	LPCWSTR		lpPageSetupTemplateName;
640 641
	HGLOBAL	hPageSetupTemplate;
} PAGESETUPDLGW,*LPPAGESETUPDLGW;
Alexandre Julliard's avatar
Alexandre Julliard committed
642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663
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
664
#define PSD_NONETWORKBUTTON		  0x00200000
Alexandre Julliard's avatar
Alexandre Julliard committed
665

666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 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
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)
724

725 726
BOOL  WINAPI ChooseColorA(LPCHOOSECOLORA lpChCol);
BOOL  WINAPI ChooseColorW(LPCHOOSECOLORW lpChCol);
Alexandre Julliard's avatar
Alexandre Julliard committed
727
#define ChooseColor WINELIB_NAME_AW(ChooseColor)
Alexandre Julliard's avatar
Alexandre Julliard committed
728
DWORD   WINAPI CommDlgExtendedError(void);
729 730
HWND  WINAPI FindTextA(LPFINDREPLACEA lpFind);
HWND  WINAPI FindTextW(LPFINDREPLACEW lpFind);
Alexandre Julliard's avatar
Alexandre Julliard committed
731
#define FindText WINELIB_NAME_AW(FindText)
732 733
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
734
#define GetFileTitle WINELIB_NAME_AW(GetFileTitle)
735 736
BOOL  WINAPI GetOpenFileNameA(LPOPENFILENAMEA ofn);
BOOL  WINAPI GetOpenFileNameW(LPOPENFILENAMEW ofn);
Alexandre Julliard's avatar
Alexandre Julliard committed
737
#define GetOpenFileName WINELIB_NAME_AW(GetOpenFileName)
738 739
BOOL  WINAPI GetSaveFileNameA(LPOPENFILENAMEA ofn);
BOOL  WINAPI GetSaveFileNameW(LPOPENFILENAMEW ofn);
Alexandre Julliard's avatar
Alexandre Julliard committed
740
#define GetSaveFileName WINELIB_NAME_AW(GetSaveFileName)
741 742
BOOL WINAPI PageSetupDlgA( LPPAGESETUPDLGA );
BOOL WINAPI PageSetupDlgW( LPPAGESETUPDLGW );
Alexandre Julliard's avatar
Alexandre Julliard committed
743
#define PageSetupDlg WINELIB_NAME_AW(PageSetupDlg)
744 745
BOOL  WINAPI PrintDlgA( LPPRINTDLGA printdlg);
BOOL  WINAPI PrintDlgW( LPPRINTDLGW printdlg);
Uwe Bonnes's avatar
Uwe Bonnes committed
746
#define PrintDlg WINELIB_NAME_AW(PrintDlg)
747 748 749
HRESULT WINAPI PrintDlgExA(LPPRINTDLGEXA);
HRESULT WINAPI PrintDlgExW(LPPRINTDLGEXW);
#define PrintDlgEx WINELIB_NAME_AW(PrintDlgEx)
750 751
HWND  WINAPI ReplaceTextA( LPFINDREPLACEA lpFind);
HWND  WINAPI ReplaceTextW( LPFINDREPLACEW lpFind);
Alexandre Julliard's avatar
Alexandre Julliard committed
752
#define ReplaceText WINELIB_NAME_AW(ReplaceText)
753 754
BOOL  WINAPI ChooseFontA(LPCHOOSEFONTA);
BOOL  WINAPI ChooseFontW(LPCHOOSEFONTW);
Alexandre Julliard's avatar
Alexandre Julliard committed
755
#define ChooseFont WINELIB_NAME_AW(ChooseFont)
756

757
void COMDLG32_SetCommDlgExtendedError(DWORD err);
758

759

760
#include <poppack.h>
761

Alexandre Julliard's avatar
Alexandre Julliard committed
762 763 764
#ifdef __cplusplus
}
#endif
Alexandre Julliard's avatar
Alexandre Julliard committed
765

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