]> git.proxmox.com Git - rustc.git/blame - src/vendor/winapi/src/um/commdlg.rs
New upstream version 1.31.0+dfsg1
[rustc.git] / src / vendor / winapi / src / um / commdlg.rs
CommitLineData
ff7c6d11
XL
1// Copyright © 2015-2017 winapi-rs developers
2// Licensed under the Apache License, Version 2.0
3// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
4// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
5// All files in the project carrying such notice may not be copied, modified, or distributed
6// except according to those terms.
7//! 32-Bit Common Dialog APIs
8use ctypes::{c_short, c_void};
9use shared::basetsd::UINT_PTR;
10use shared::minwindef::{
11 BOOL, DWORD, HGLOBAL, HINSTANCE, INT, LPARAM, LPVOID, LRESULT, UINT, WORD, WPARAM,
12};
13use shared::windef::{COLORREF, HDC, HWND, POINT, RECT};
14use um::prsht::HPROPSHEETPAGE;
15use um::unknwnbase::{IUnknown, IUnknownVtbl, LPUNKNOWN};
16use um::wingdi::{DM_COLLATE, DM_COPIES, LPDEVMODEW, LPLOGFONTA, LPLOGFONTW};
17use um::winnt::{HRESULT, LPCSTR, LPCWSTR, LPSTR, LPWSTR};
18use um::winuser::{NMHDR, WM_USER};
19FN!{stdcall LPOFNHOOKPROC(
20 HWND,
21 UINT,
22 WPARAM,
23 LPARAM,
24) -> UINT_PTR}
8faf50e0 25STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct OPENFILENAME_NT4A {
ff7c6d11
XL
26 lStructSize: DWORD,
27 hwndOwner: HWND,
28 hInstance: HINSTANCE,
29 lpstrFilter: LPCSTR,
30 lpstrCustomFilter: LPSTR,
31 nMaxCustFilter: DWORD,
32 nFilterIndex: DWORD,
33 lpstrFile: LPSTR,
34 nMaxFile: DWORD,
35 lpstrFileTitle: LPSTR,
36 nMaxFileTitle: DWORD,
37 lpstrInitialDir: LPCSTR,
38 lpstrTitle: LPCSTR,
39 Flags: DWORD,
40 nFileOffset: WORD,
41 nFileExtension: WORD,
42 lpstrDefExt: LPCSTR,
43 lCustData: LPARAM,
44 lpfnHook: LPOFNHOOKPROC,
45 lpTemplateName: LPCSTR,
46}}
47pub type LPOPENFILENAME_NT4A = *mut OPENFILENAME_NT4A;
8faf50e0 48STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct OPENFILENAME_NT4W {
ff7c6d11
XL
49 lStructSize: DWORD,
50 hwndOwner: HWND,
51 hInstance: HINSTANCE,
52 lpstrFilter: LPCWSTR,
53 lpstrCustomFilter: LPWSTR,
54 nMaxCustFilter: DWORD,
55 nFilterIndex: DWORD,
56 lpstrFile: LPWSTR,
57 nMaxFile: DWORD,
58 lpstrFileTitle: LPWSTR,
59 nMaxFileTitle: DWORD,
60 lpstrInitialDir: LPCWSTR,
61 lpstrTitle: LPCWSTR,
62 Flags: DWORD,
63 nFileOffset: WORD,
64 nFileExtension: WORD,
65 lpstrDefExt: LPCWSTR,
66 lCustData: LPARAM,
67 lpfnHook: LPOFNHOOKPROC,
68 lpTemplateName: LPCWSTR,
69}}
70pub type LPOPENFILENAME_NT4W = *mut OPENFILENAME_NT4W;
8faf50e0 71STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct OPENFILENAMEA {
ff7c6d11
XL
72 lStructSize: DWORD,
73 hwndOwner: HWND,
74 hInstance: HINSTANCE,
75 lpstrFilter: LPCSTR,
76 lpstrCustomFilter: LPSTR,
77 nMaxCustFilter: DWORD,
78 nFilterIndex: DWORD,
79 lpstrFile: LPSTR,
80 nMaxFile: DWORD,
81 lpstrFileTitle: LPSTR,
82 nMaxFileTitle: DWORD,
83 lpstrInitialDir: LPCSTR,
84 lpstrTitle: LPCSTR,
85 Flags: DWORD,
86 nFileOffset: WORD,
87 nFileExtension: WORD,
88 lpstrDefExt: LPCSTR,
89 lCustData: LPARAM,
90 lpfnHook: LPOFNHOOKPROC,
91 lpTemplateName: LPCSTR,
92 pvReserved: *mut c_void,
93 dwReserved: DWORD,
94 FlagsEx: DWORD,
95}}
96pub type LPOPENFILENAMEA = *mut OPENFILENAMEA;
8faf50e0 97STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct OPENFILENAMEW {
ff7c6d11
XL
98 lStructSize: DWORD,
99 hwndOwner: HWND,
100 hInstance: HINSTANCE,
101 lpstrFilter: LPCWSTR,
102 lpstrCustomFilter: LPWSTR,
103 nMaxCustFilter: DWORD,
104 nFilterIndex: DWORD,
105 lpstrFile: LPWSTR,
106 nMaxFile: DWORD,
107 lpstrFileTitle: LPWSTR,
108 nMaxFileTitle: DWORD,
109 lpstrInitialDir: LPCWSTR,
110 lpstrTitle: LPCWSTR,
111 Flags: DWORD,
112 nFileOffset: WORD,
113 nFileExtension: WORD,
114 lpstrDefExt: LPCWSTR,
115 lCustData: LPARAM,
116 lpfnHook: LPOFNHOOKPROC,
117 lpTemplateName: LPCWSTR,
118 pvReserved: *mut c_void,
119 dwReserved: DWORD,
120 FlagsEx: DWORD,
121}}
122pub type LPOPENFILENAMEW = *mut OPENFILENAMEW;
123extern "system" {
124 pub fn GetOpenFileNameA(
125 lpofn: LPOPENFILENAMEA,
126 ) -> BOOL;
127 pub fn GetOpenFileNameW(
128 lpofn: LPOPENFILENAMEW,
129 ) -> BOOL;
130 pub fn GetSaveFileNameA(
131 lpofn: LPOPENFILENAMEA,
132 ) -> BOOL;
133 pub fn GetSaveFileNameW(
134 lpofn: LPOPENFILENAMEW,
135 ) -> BOOL;
136 pub fn GetFileTitleA(
137 lpszFile: LPCSTR,
138 Buf: LPSTR,
139 cchSize: WORD,
140 ) -> c_short;
141 pub fn GetFileTitleW(
142 lpszFile: LPCWSTR,
143 Buf: LPWSTR,
144 cchSize: WORD,
145 ) -> c_short;
146}
147pub const OFN_READONLY: DWORD = 0x00000001;
148pub const OFN_OVERWRITEPROMPT: DWORD = 0x00000002;
149pub const OFN_HIDEREADONLY: DWORD = 0x00000004;
150pub const OFN_NOCHANGEDIR: DWORD = 0x00000008;
151pub const OFN_SHOWHELP: DWORD = 0x00000010;
152pub const OFN_ENABLEHOOK: DWORD = 0x00000020;
153pub const OFN_ENABLETEMPLATE: DWORD = 0x00000040;
154pub const OFN_ENABLETEMPLATEHANDLE: DWORD = 0x00000080;
155pub const OFN_NOVALIDATE: DWORD = 0x00000100;
156pub const OFN_ALLOWMULTISELECT: DWORD = 0x00000200;
157pub const OFN_EXTENSIONDIFFERENT: DWORD = 0x00000400;
158pub const OFN_PATHMUSTEXIST: DWORD = 0x00000800;
159pub const OFN_FILEMUSTEXIST: DWORD = 0x00001000;
160pub const OFN_CREATEPROMPT: DWORD = 0x00002000;
161pub const OFN_SHAREAWARE: DWORD = 0x00004000;
162pub const OFN_NOREADONLYRETURN: DWORD = 0x00008000;
163pub const OFN_NOTESTFILECREATE: DWORD = 0x00010000;
164pub const OFN_NONETWORKBUTTON: DWORD = 0x00020000;
165pub const OFN_NOLONGNAMES: DWORD = 0x00040000;
166pub const OFN_EXPLORER: DWORD = 0x00080000;
167pub const OFN_NODEREFERENCELINKS: DWORD = 0x00100000;
168pub const OFN_LONGNAMES: DWORD = 0x00200000;
169pub const OFN_ENABLEINCLUDENOTIFY: DWORD = 0x00400000;
170pub const OFN_ENABLESIZING: DWORD = 0x00800000;
171pub const OFN_DONTADDTORECENT: DWORD = 0x02000000;
172pub const OFN_FORCESHOWHIDDEN: DWORD = 0x10000000;
173pub const OFN_EX_NOPLACESBAR: DWORD = 0x00000001;
174pub const OFN_SHAREFALLTHROUGH: UINT_PTR = 2;
175pub const OFN_SHARENOWARN: UINT_PTR = 1;
176pub const OFN_SHAREWARN: UINT_PTR = 0;
177FN!{stdcall LPCCHOOKPROC(
178 HWND,
179 UINT,
180 WPARAM,
181 LPARAM,
182) -> UINT_PTR}
8faf50e0 183STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct OFNOTIFYA {
ff7c6d11
XL
184 hdr: NMHDR,
185 lpOFN: LPOPENFILENAMEA,
186 pszFile: LPSTR,
187}}
188pub type LPOFNOTIFYA = *mut OFNOTIFYA;
8faf50e0 189STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct OFNOTIFYW {
ff7c6d11
XL
190 hdr: NMHDR,
191 lpOFN: LPOPENFILENAMEW,
192 pszFile: LPWSTR,
193}}
194pub type LPOFNOTIFYW = *mut OFNOTIFYW;
8faf50e0 195STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct OFNOTIFYEXA {
ff7c6d11
XL
196 hdr: NMHDR,
197 lpOFN: LPOPENFILENAMEA,
198 psf: LPVOID,
199 pidl: LPVOID,
200}}
201pub type LPOFNOTIFYEXA = *mut OFNOTIFYEXA;
8faf50e0 202STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct OFNOTIFYEXW {
ff7c6d11
XL
203 hdr: NMHDR,
204 lpOFN: LPOPENFILENAMEW,
205 psf: LPVOID,
206 pidl: LPVOID,
207}}
208pub type LPOFNOTIFYEXW = *mut OFNOTIFYEXW;
209pub const CDN_FIRST: UINT = -601i32 as u32;
210pub const CDN_LAST: UINT = -699i32 as u32;
211pub const CDN_INITDONE: UINT = CDN_FIRST - 0x0000;
212pub const CDN_SELCHANGE: UINT = CDN_FIRST - 0x0001;
213pub const CDN_FOLDERCHANGE: UINT = CDN_FIRST - 0x0002;
214pub const CDN_SHAREVIOLATION: UINT = CDN_FIRST - 0x0003;
215pub const CDN_HELP: UINT = CDN_FIRST - 0x0004;
216pub const CDN_FILEOK: UINT = CDN_FIRST - 0x0005;
217pub const CDN_TYPECHANGE: UINT = CDN_FIRST - 0x0006;
218pub const CDN_INCLUDEITEM: UINT = CDN_FIRST - 0x0007;
219pub const CDM_FIRST: UINT = WM_USER + 100;
220pub const CDM_LAST: UINT = WM_USER + 200;
221pub const CDM_GETSPEC: UINT = CDM_FIRST + 0x0000;
222pub const CDM_GETFILEPATH: UINT = CDM_FIRST + 0x0001;
223pub const CDM_GETFOLDERPATH: UINT = CDM_FIRST + 0x0002;
224pub const CDM_GETFOLDERIDLIST: UINT = CDM_FIRST + 0x0003;
225pub const CDM_SETCONTROLTEXT: UINT = CDM_FIRST + 0x0004;
226pub const CDM_HIDECONTROL: UINT = CDM_FIRST + 0x0005;
227pub const CDM_SETDEFEXT: UINT = CDM_FIRST + 0x0006;
8faf50e0 228STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct CHOOSECOLORA {
ff7c6d11
XL
229 lStructSize: DWORD,
230 hwndOwner: HWND,
231 hInstance: HWND,
232 rgbResult: COLORREF,
233 lpCustColors: *mut COLORREF,
234 Flags: DWORD,
235 lCustData: LPARAM,
236 lpfnHook: LPCCHOOKPROC,
237 lpTemplateName: LPCSTR,
238}}
239pub type LPCHOOSECOLORA = *mut CHOOSECOLORA;
8faf50e0 240STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct CHOOSECOLORW {
ff7c6d11
XL
241 lStructSize: DWORD,
242 hwndOwner: HWND,
243 hInstance: HWND,
244 rgbResult: COLORREF,
245 lpCustColors: *mut COLORREF,
246 Flags: DWORD,
247 lCustData: LPARAM,
248 lpfnHook: LPCCHOOKPROC,
249 lpTemplateName: LPCWSTR,
250}}
251pub type LPCHOOSECOLORW = *mut CHOOSECOLORW;
252extern "system" {
253 pub fn ChooseColorA(
254 lpcc: LPCHOOSECOLORA,
255 ) -> BOOL;
256 pub fn ChooseColorW(
257 lpcc: LPCHOOSECOLORW,
258 ) -> BOOL;
259}
260pub const CC_RGBINIT: DWORD = 0x00000001;
261pub const CC_FULLOPEN: DWORD = 0x00000002;
262pub const CC_PREVENTFULLOPEN: DWORD = 0x00000004;
263pub const CC_SHOWHELP: DWORD = 0x00000008;
264pub const CC_ENABLEHOOK: DWORD = 0x00000010;
265pub const CC_ENABLETEMPLATE: DWORD = 0x00000020;
266pub const CC_ENABLETEMPLATEHANDLE: DWORD = 0x00000040;
267pub const CC_SOLIDCOLOR: DWORD = 0x00000080;
268pub const CC_ANYCOLOR: DWORD = 0x00000100;
269FN!{stdcall LPFRHOOKPROC(
270 HWND,
271 UINT,
272 WPARAM,
273 LPARAM,
274) -> UINT_PTR}
8faf50e0 275STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct FINDREPLACEA {
ff7c6d11
XL
276 lStructSize: DWORD,
277 hwndOwner: HWND,
278 hInstance: HINSTANCE,
279 Flags: DWORD,
280 lpstrFindWhat: LPSTR,
281 lpstrReplaceWith: LPSTR,
282 wFindWhatLen: WORD,
283 wReplaceWithLen: WORD,
284 lCustData: LPARAM,
285 lpfnHook: LPFRHOOKPROC,
286 lpTemplateName: LPCSTR,
287}}
288pub type LPFINDREPLACEA = *mut FINDREPLACEA;
8faf50e0 289STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct FINDREPLACEW {
ff7c6d11
XL
290 lStructSize: DWORD,
291 hwndOwner: HWND,
292 hInstance: HINSTANCE,
293 Flags: DWORD,
294 lpstrFindWhat: LPWSTR,
295 lpstrReplaceWith: LPWSTR,
296 wFindWhatLen: WORD,
297 wReplaceWithLen: WORD,
298 lCustData: LPARAM,
299 lpfnHook: LPFRHOOKPROC,
300 lpTemplateName: LPCWSTR,
301}}
302pub type LPFINDREPLACEW = *mut FINDREPLACEW;
303pub const FR_DOWN: DWORD = 0x00000001;
304pub const FR_WHOLEWORD: DWORD = 0x00000002;
305pub const FR_MATCHCASE: DWORD = 0x00000004;
306pub const FR_FINDNEXT: DWORD = 0x00000008;
307pub const FR_REPLACE: DWORD = 0x00000010;
308pub const FR_REPLACEALL: DWORD = 0x00000020;
309pub const FR_DIALOGTERM: DWORD = 0x00000040;
310pub const FR_SHOWHELP: DWORD = 0x00000080;
311pub const FR_ENABLEHOOK: DWORD = 0x00000100;
312pub const FR_ENABLETEMPLATE: DWORD = 0x00000200;
313pub const FR_NOUPDOWN: DWORD = 0x00000400;
314pub const FR_NOMATCHCASE: DWORD = 0x00000800;
315pub const FR_NOWHOLEWORD: DWORD = 0x00001000;
316pub const FR_ENABLETEMPLATEHANDLE: DWORD = 0x00002000;
317pub const FR_HIDEUPDOWN: DWORD = 0x00004000;
318pub const FR_HIDEMATCHCASE: DWORD = 0x00008000;
319pub const FR_HIDEWHOLEWORD: DWORD = 0x00010000;
320pub const FR_RAW: DWORD = 0x00020000;
321pub const FR_MATCHDIAC: DWORD = 0x20000000;
322pub const FR_MATCHKASHIDA: DWORD = 0x40000000;
323pub const FR_MATCHALEFHAMZA: DWORD = 0x80000000;
324extern "system" {
325 pub fn FindTextA(
326 lpfr: LPFINDREPLACEA,
327 ) -> HWND;
328 pub fn FindTextW(
329 lpfr: LPFINDREPLACEW,
330 ) -> HWND;
331 pub fn ReplaceTextA(
332 lpfr: LPFINDREPLACEA,
333 ) -> HWND;
334 pub fn ReplaceTextW(
335 lpfr: LPFINDREPLACEW,
336 ) -> HWND;
337}
338FN!{stdcall LPCFHOOKPROC(
339 HWND,
340 UINT,
341 WPARAM,
342 LPARAM,
343) -> UINT_PTR}
8faf50e0 344STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct CHOOSEFONTA {
ff7c6d11
XL
345 lStructSize: DWORD,
346 hwndOwner: HWND,
347 hDC: HDC,
348 lpLogFont: LPLOGFONTA,
349 iPointSize: INT,
350 Flags: DWORD,
351 rgbColors: COLORREF,
352 lCustData: LPARAM,
353 lpfnHook: LPCFHOOKPROC,
354 lpTemplateName: LPCSTR,
355 hInstance: HINSTANCE,
356 lpszStyle: LPSTR,
357 nFontType: WORD,
358 ___MISSING_ALIGNMENT__: WORD,
359 nSizeMin: INT,
360 nSizeMax: INT,
361}}
362pub type LPCHOOSEFONTA = *mut CHOOSEFONTA;
8faf50e0 363STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct CHOOSEFONTW {
ff7c6d11
XL
364 lStructSize: DWORD,
365 hwndOwner: HWND,
366 hDC: HDC,
367 lpLogFont: LPLOGFONTW,
368 iPointSize: INT,
369 Flags: DWORD,
370 rgbColors: COLORREF,
371 lCustData: LPARAM,
372 lpfnHook: LPCFHOOKPROC,
373 lpTemplateName: LPCWSTR,
374 hInstance: HINSTANCE,
375 lpszStyle: LPWSTR,
376 nFontType: WORD,
377 ___MISSING_ALIGNMENT__: WORD,
378 nSizeMin: INT,
379 nSizeMax: INT,
380}}
381pub type LPCHOOSEFONTW = *mut CHOOSEFONTW;
382extern "system" {
383 pub fn ChooseFontA(
384 lpcf: LPCHOOSEFONTA,
385 ) -> BOOL;
386 pub fn ChooseFontW(
387 lpcf: LPCHOOSEFONTW,
388 ) -> BOOL;
389}
390pub const CF_SCREENFONTS: DWORD = 0x00000001;
391pub const CF_PRINTERFONTS: DWORD = 0x00000002;
392pub const CF_BOTH: DWORD = CF_SCREENFONTS | CF_PRINTERFONTS;
393pub const CF_SHOWHELP: DWORD = 0x00000004;
394pub const CF_ENABLEHOOK: DWORD = 0x00000008;
395pub const CF_ENABLETEMPLATE: DWORD = 0x00000010;
396pub const CF_ENABLETEMPLATEHANDLE: DWORD = 0x00000020;
397pub const CF_INITTOLOGFONTSTRUCT: DWORD = 0x00000040;
398pub const CF_USESTYLE: DWORD = 0x00000080;
399pub const CF_EFFECTS: DWORD = 0x00000100;
400pub const CF_APPLY: DWORD = 0x00000200;
401pub const CF_ANSIONLY: DWORD = 0x00000400;
402pub const CF_SCRIPTSONLY: DWORD = CF_ANSIONLY;
403pub const CF_NOVECTORFONTS: DWORD = 0x00000800;
404pub const CF_NOOEMFONTS: DWORD = CF_NOVECTORFONTS;
405pub const CF_NOSIMULATIONS: DWORD = 0x00001000;
406pub const CF_LIMITSIZE: DWORD = 0x00002000;
407pub const CF_FIXEDPITCHONLY: DWORD = 0x00004000;
408pub const CF_WYSIWYG: DWORD = 0x00008000;
409pub const CF_FORCEFONTEXIST: DWORD = 0x00010000;
410pub const CF_SCALABLEONLY: DWORD = 0x00020000;
411pub const CF_TTONLY: DWORD = 0x00040000;
412pub const CF_NOFACESEL: DWORD = 0x00080000;
413pub const CF_NOSTYLESEL: DWORD = 0x00100000;
414pub const CF_NOSIZESEL: DWORD = 0x00200000;
415pub const CF_SELECTSCRIPT: DWORD = 0x00400000;
416pub const CF_NOSCRIPTSEL: DWORD = 0x00800000;
417pub const CF_NOVERTFONTS: DWORD = 0x01000000;
418pub const CF_INACTIVEFONTS: DWORD = 0x02000000;
419pub const SIMULATED_FONTTYPE: WORD = 0x8000;
420pub const PRINTER_FONTTYPE: WORD = 0x4000;
421pub const SCREEN_FONTTYPE: WORD = 0x2000;
422pub const BOLD_FONTTYPE: WORD = 0x0100;
423pub const ITALIC_FONTTYPE: WORD = 0x0200;
424pub const REGULAR_FONTTYPE: WORD = 0x0400;
425pub const PS_OPENTYPE_FONTTYPE: DWORD = 0x10000;
426pub const TT_OPENTYPE_FONTTYPE: DWORD = 0x20000;
427pub const TYPE1_FONTTYPE: DWORD = 0x40000;
428pub const SYMBOL_FONTTYPE: DWORD = 0x80000;
429pub const WM_CHOOSEFONT_GETLOGFONT: UINT = WM_USER + 1;
430pub const WM_CHOOSEFONT_SETLOGFONT: UINT = WM_USER + 101;
431pub const WM_CHOOSEFONT_SETFLAGS: UINT = WM_USER + 102;
432pub const CD_LBSELNOITEMS: WORD = -1i16 as u16;
433pub const CD_LBSELCHANGE: WORD = 0;
434pub const CD_LBSELSUB: WORD = 1;
435pub const CD_LBSELADD: WORD = 2;
436FN!{stdcall LPPRINTHOOKPROC(
437 HWND,
438 UINT,
439 WPARAM,
440 LPARAM,
441) -> UINT_PTR}
442FN!{stdcall LPSETUPHOOKPROC(
443 HWND,
444 UINT,
445 WPARAM,
446 LPARAM,
447) -> UINT_PTR}
8faf50e0 448STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct PRINTDLGA {
ff7c6d11
XL
449 lStructSize: DWORD,
450 hwndOwner: HWND,
451 hDevMode: HGLOBAL,
452 hDevNames: HGLOBAL,
453 hDC: HDC,
454 Flags: DWORD,
455 nFromPage: WORD,
456 nToPage: WORD,
457 nMinPage: WORD,
458 nMaxPage: WORD,
459 nCopies: WORD,
460 hInstance: HINSTANCE,
461 lCustData: LPARAM,
462 lpfnPrintHook: LPPRINTHOOKPROC,
463 lpfnSetupHook: LPSETUPHOOKPROC,
464 lpPrintTemplateName: LPCSTR,
465 lpSetupTemplateName: LPCSTR,
466 hPrintTemplate: HGLOBAL,
467 hSetupTemplate: HGLOBAL,
468}}
469pub type LPPRINTDLGA = *mut PRINTDLGA;
8faf50e0 470STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct PRINTDLGW {
ff7c6d11
XL
471 lStructSize: DWORD,
472 hwndOwner: HWND,
473 hDevMode: HGLOBAL,
474 hDevNames: HGLOBAL,
475 hDC: HDC,
476 Flags: DWORD,
477 nFromPage: WORD,
478 nToPage: WORD,
479 nMinPage: WORD,
480 nMaxPage: WORD,
481 nCopies: WORD,
482 hInstance: HINSTANCE,
483 lCustData: LPARAM,
484 lpfnPrintHook: LPPRINTHOOKPROC,
485 lpfnSetupHook: LPSETUPHOOKPROC,
486 lpPrintTemplateName: LPCWSTR,
487 lpSetupTemplateName: LPCWSTR,
488 hPrintTemplate: HGLOBAL,
489 hSetupTemplate: HGLOBAL,
490}}
491pub type LPPRINTDLGW = *mut PRINTDLGW;
492extern "system" {
493 pub fn PrintDlgA(
494 pPD: LPPRINTDLGA,
495 ) -> BOOL;
496 pub fn PrintDlgW(
497 pPD: LPPRINTDLGW,
498 ) -> BOOL;
499}
0bf4aa26 500RIDL!{#[uuid(0x5852a2c3, 0x6530, 0x11d1, 0xb6, 0xa3, 0x0, 0x0, 0xf8, 0x75, 0x7b, 0xf9)]
ff7c6d11
XL
501interface IPrintDialogCallback(IPrintDialogCallbackVtbl): IUnknown(IUnknownVtbl) {
502 fn InitDone() -> HRESULT,
503 fn SelectionChange() -> HRESULT,
504 fn HandleMessage(
505 hDlg: HWND,
506 uMsg: UINT,
507 wParam: WPARAM,
508 lParam: LPARAM,
509 pResult: *mut LRESULT,
510 ) -> HRESULT,
0bf4aa26
XL
511}}
512RIDL!{#[uuid(0x509aaeda, 0x5639, 0x11d1, 0xb6, 0xa1, 0x0, 0x0, 0xf8, 0x75, 0x7b, 0xf9)]
ff7c6d11
XL
513interface IPrintDialogServices(IPrintDialogServicesVtbl): IUnknown(IUnknownVtbl) {
514 fn GetCurrentDevMode(
515 pDevMode: LPDEVMODEW,
516 pcbSize: *mut UINT,
517 ) -> HRESULT,
518 fn GetCurrentPrinterName(
519 pPrinterName: LPWSTR,
520 pcchSize: *mut UINT,
521 ) -> HRESULT,
522 fn GetCurrentPortName(
523 pPortName: LPWSTR,
524 pcchSize: *mut UINT,
525 ) -> HRESULT,
0bf4aa26 526}}
8faf50e0 527STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct PRINTPAGERANGE {
ff7c6d11
XL
528 nFromPage: DWORD,
529 nToPage: DWORD,
530}}
531pub type LPPRINTPAGERANGE = *mut PRINTPAGERANGE;
532pub type PCPRINTPAGERANGE = *const PRINTPAGERANGE;
8faf50e0 533STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct PRINTDLGEXA {
ff7c6d11
XL
534 lStructSize: DWORD,
535 hwndOwner: HWND,
536 hDevMode: HGLOBAL,
537 hDevNames: HGLOBAL,
538 hDC: HDC,
539 Flags: DWORD,
540 Flags2: DWORD,
541 ExclusionFlags: DWORD,
542 nPageRanges: DWORD,
543 nMaxPageRanges: DWORD,
544 lpPageRanges: LPPRINTPAGERANGE,
545 nMinPage: DWORD,
546 nMaxPage: DWORD,
547 nCopies: DWORD,
548 hInstance: HINSTANCE,
549 lpPrintTemplateName: LPCSTR,
550 lpCallback: LPUNKNOWN,
551 nPropertyPages: DWORD,
552 lphPropertyPages: *mut HPROPSHEETPAGE,
553 nStartPage: DWORD,
554 dwResultAction: DWORD,
555}}
556pub type LPPRINTDLGEXA = *mut PRINTDLGEXA;
8faf50e0 557STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct PRINTDLGEXW {
ff7c6d11
XL
558 lStructSize: DWORD,
559 hwndOwner: HWND,
560 hDevMode: HGLOBAL,
561 hDevNames: HGLOBAL,
562 hDC: HDC,
563 Flags: DWORD,
564 Flags2: DWORD,
565 ExclusionFlags: DWORD,
566 nPageRanges: DWORD,
567 nMaxPageRanges: DWORD,
568 lpPageRanges: LPPRINTPAGERANGE,
569 nMinPage: DWORD,
570 nMaxPage: DWORD,
571 nCopies: DWORD,
572 hInstance: HINSTANCE,
573 lpPrintTemplateName: LPCWSTR,
574 lpCallback: LPUNKNOWN,
575 nPropertyPages: DWORD,
576 lphPropertyPages: *mut HPROPSHEETPAGE,
577 nStartPage: DWORD,
578 dwResultAction: DWORD,
579}}
580pub type LPPRINTDLGEXW = *mut PRINTDLGEXW;
581extern "system" {
582 pub fn PrintDlgExA(
583 pPD: LPPRINTDLGEXA,
584 ) -> HRESULT;
585 pub fn PrintDlgExW(
586 pPD: LPPRINTDLGEXW,
587 ) -> HRESULT;
588}
589pub const PD_ALLPAGES: DWORD = 0x00000000;
590pub const PD_SELECTION: DWORD = 0x00000001;
591pub const PD_PAGENUMS: DWORD = 0x00000002;
592pub const PD_NOSELECTION: DWORD = 0x00000004;
593pub const PD_NOPAGENUMS: DWORD = 0x00000008;
594pub const PD_COLLATE: DWORD = 0x00000010;
595pub const PD_PRINTTOFILE: DWORD = 0x00000020;
596pub const PD_PRINTSETUP: DWORD = 0x00000040;
597pub const PD_NOWARNING: DWORD = 0x00000080;
598pub const PD_RETURNDC: DWORD = 0x00000100;
599pub const PD_RETURNIC: DWORD = 0x00000200;
600pub const PD_RETURNDEFAULT: DWORD = 0x00000400;
601pub const PD_SHOWHELP: DWORD = 0x00000800;
602pub const PD_ENABLEPRINTHOOK: DWORD = 0x00001000;
603pub const PD_ENABLESETUPHOOK: DWORD = 0x00002000;
604pub const PD_ENABLEPRINTTEMPLATE: DWORD = 0x00004000;
605pub const PD_ENABLESETUPTEMPLATE: DWORD = 0x00008000;
606pub const PD_ENABLEPRINTTEMPLATEHANDLE: DWORD = 0x00010000;
607pub const PD_ENABLESETUPTEMPLATEHANDLE: DWORD = 0x00020000;
608pub const PD_USEDEVMODECOPIES: DWORD = 0x00040000;
609pub const PD_USEDEVMODECOPIESANDCOLLATE: DWORD = 0x00040000;
610pub const PD_DISABLEPRINTTOFILE: DWORD = 0x00080000;
611pub const PD_HIDEPRINTTOFILE: DWORD = 0x00100000;
612pub const PD_NONETWORKBUTTON: DWORD = 0x00200000;
613pub const PD_CURRENTPAGE: DWORD = 0x00400000;
614pub const PD_NOCURRENTPAGE: DWORD = 0x00800000;
615pub const PD_EXCLUSIONFLAGS: DWORD = 0x01000000;
616pub const PD_USELARGETEMPLATE: DWORD = 0x10000000;
617pub const PD_EXCL_COPIESANDCOLLATE: DWORD = DM_COPIES | DM_COLLATE;
618pub const START_PAGE_GENERAL: DWORD = 0xffffffff;
619pub const PD_RESULT_CANCEL: DWORD = 0;
620pub const PD_RESULT_PRINT: DWORD = 1;
621pub const PD_RESULT_APPLY: DWORD = 2;
8faf50e0 622STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct DEVNAMES {
ff7c6d11
XL
623 wDriverOffset: WORD,
624 wDeviceOffset: WORD,
625 wOutputOffset: WORD,
626 wDefault: WORD,
627}}
628pub type LPDEVNAMES = *mut DEVNAMES;
629pub type PCDEVNAMES = *const DEVNAMES;
630pub const DN_DEFAULTPRN: WORD = 0x0001;
631extern "system" {
632 pub fn CommDlgExtendedError() -> DWORD;
633}
634pub const WM_PSD_PAGESETUPDLG: UINT = WM_USER;
635pub const WM_PSD_FULLPAGERECT: UINT = WM_USER + 1;
636pub const WM_PSD_MINMARGINRECT: UINT = WM_USER + 2;
637pub const WM_PSD_MARGINRECT: UINT = WM_USER + 3;
638pub const WM_PSD_GREEKTEXTRECT: UINT = WM_USER + 4;
639pub const WM_PSD_ENVSTAMPRECT: UINT = WM_USER + 5;
640pub const WM_PSD_YAFULLPAGERECT: UINT = WM_USER + 6;
641FN!{stdcall LPPAGEPAINTHOOK(
642 HWND,
643 UINT,
644 WPARAM,
645 LPARAM,
646) -> UINT_PTR}
647FN!{stdcall LPPAGESETUPHOOK(
648 HWND,
649 UINT,
650 WPARAM,
651 LPARAM,
652) -> UINT_PTR}
8faf50e0 653STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct PAGESETUPDLGA {
ff7c6d11
XL
654 lStructSize: DWORD,
655 hwndOwner: HWND,
656 hDevMode: HGLOBAL,
657 hDevNames: HGLOBAL,
658 Flags: DWORD,
659 ptPaperSize: POINT,
660 rtMinMargin: RECT,
661 rtMargin: RECT,
662 hInstance: HINSTANCE,
663 lCustData: LPARAM,
664 lpfnPageSetupHook: LPPAGESETUPHOOK,
665 lpfnPagePaintHook: LPPAGEPAINTHOOK,
666 lpPageSetupTemplateName: LPCSTR,
667 hPageSetupTemplate: HGLOBAL,
668}}
669pub type LPPAGESETUPDLGA = *mut PAGESETUPDLGA;
8faf50e0 670STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct PAGESETUPDLGW {
ff7c6d11
XL
671 lStructSize: DWORD,
672 hwndOwner: HWND,
673 hDevMode: HGLOBAL,
674 hDevNames: HGLOBAL,
675 Flags: DWORD,
676 ptPaperSize: POINT,
677 rtMinMargin: RECT,
678 rtMargin: RECT,
679 hInstance: HINSTANCE,
680 lCustData: LPARAM,
681 lpfnPageSetupHook: LPPAGESETUPHOOK,
682 lpfnPagePaintHook: LPPAGEPAINTHOOK,
683 lpPageSetupTemplateName: LPCWSTR,
684 hPageSetupTemplate: HGLOBAL,
685}}
686pub type LPPAGESETUPDLGW = *mut PAGESETUPDLGW;
687extern "system" {
688 pub fn PageSetupDlgA(
689 lppsd: LPPAGESETUPDLGA,
690 ) -> BOOL;
691 pub fn PageSetupDlgW(
692 lppsd: LPPAGESETUPDLGW,
693 ) -> BOOL;
694}
695pub const PSD_DEFAULTMINMARGINS: DWORD = 0x00000000;
696pub const PSD_INWININIINTLMEASURE: DWORD = 0x00000000;
697pub const PSD_MINMARGINS: DWORD = 0x00000001;
698pub const PSD_MARGINS: DWORD = 0x00000002;
699pub const PSD_INTHOUSANDTHSOFINCHES: DWORD = 0x00000004;
700pub const PSD_INHUNDREDTHSOFMILLIMETERS: DWORD = 0x00000008;
701pub const PSD_DISABLEMARGINS: DWORD = 0x00000010;
702pub const PSD_DISABLEPRINTER: DWORD = 0x00000020;
703pub const PSD_NOWARNING: DWORD = 0x00000080;
704pub const PSD_DISABLEORIENTATION: DWORD = 0x00000100;
705pub const PSD_RETURNDEFAULT: DWORD = 0x00000400;
706pub const PSD_DISABLEPAPER: DWORD = 0x00000200;
707pub const PSD_SHOWHELP: DWORD = 0x00000800;
708pub const PSD_ENABLEPAGESETUPHOOK: DWORD = 0x00002000;
709pub const PSD_ENABLEPAGESETUPTEMPLATE: DWORD = 0x00008000;
710pub const PSD_ENABLEPAGESETUPTEMPLATEHANDLE: DWORD = 0x00020000;
711pub const PSD_ENABLEPAGEPAINTHOOK: DWORD = 0x00040000;
712pub const PSD_DISABLEPAGEPAINTING: DWORD = 0x00080000;
713pub const PSD_NONETWORKBUTTON: DWORD = 0x00200000;