winapi_ui_automation/um/
prsht.rs

1// Licensed under the Apache License, Version 2.0
2// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4// All files in the project carrying such notice may not be copied, modified, or distributed
5// except according to those terms.
6//! Interface for the Windows Property Sheet Pages
7use ctypes::{c_int, c_short};
8use shared::basetsd::INT_PTR;
9use shared::minwindef::{BOOL, DWORD, HINSTANCE, LPARAM, LPVOID, LRESULT, UINT, WPARAM};
10use shared::windef::{HBITMAP, HICON, HPALETTE, HWND};
11use um::winnt::{HANDLE, LPCSTR, LPCWSTR};
12use um::winuser::{DLGPROC, LPCDLGTEMPLATEA, NMHDR, WM_USER};
13pub enum PSP {}
14pub type HPROPSHEETPAGE = *mut PSP;
15FN!{stdcall LPFNPSPCALLBACKA(
16    hwnd: HWND,
17    uMsg: UINT,
18    ppsp: *mut PROPSHEETPAGEA,
19) -> UINT}
20FN!{stdcall LPFNPSPCALLBACKW(
21    hwnd: HWND,
22    uMsg: UINT,
23    ppsp: *mut PROPSHEETPAGEW,
24) -> UINT}
25pub const PSP_DEFAULT: DWORD = 0x00000000;
26pub const PSP_DLGINDIRECT: DWORD = 0x00000001;
27pub const PSP_USEHICON: DWORD = 0x00000002;
28pub const PSP_USEICONID: DWORD = 0x00000004;
29pub const PSP_USETITLE: DWORD = 0x00000008;
30pub const PSP_RTLREADING: DWORD = 0x00000010;
31pub const PSP_HASHELP: DWORD = 0x00000020;
32pub const PSP_USEREFPARENT: DWORD = 0x00000040;
33pub const PSP_USECALLBACK: DWORD = 0x00000080;
34pub const PSP_PREMATURE: DWORD = 0x00000400;
35pub const PSP_HIDEHEADER: DWORD = 0x00000800;
36pub const PSP_USEHEADERTITLE: DWORD = 0x00001000;
37pub const PSP_USEHEADERSUBTITLE: DWORD = 0x00002000;
38pub const PSP_USEFUSIONCONTEXT: DWORD = 0x00004000;
39pub const PSPCB_ADDREF: UINT = 0;
40pub const PSPCB_RELEASE: UINT = 1;
41pub const PSPCB_CREATE: UINT = 2;
42pub type PROPSHEETPAGE_RESOURCE = LPCDLGTEMPLATEA;
43UNION!{union PROPSHEETPAGEA_V1_u1 {
44    [usize; 1],
45    pszTemplate pszTemplate_mut: LPCSTR,
46    pResource pResource_mut: PROPSHEETPAGE_RESOURCE,
47}}
48UNION!{union PROPSHEETPAGEA_V1_u2 {
49    [usize; 1],
50    hIcon hIcon_mut: HICON,
51    pszIcon pszIcon_mut: LPCSTR,
52}}
53UNION!{union PROPSHEETPAGEA_V4_u3 {
54    [usize; 1],
55    hbmHeader hbmHeader_mut: HBITMAP,
56    pszbmHeader pszbmHeader_mut: LPCSTR,
57}}
58STRUCT!{struct PROPSHEETPAGEA_V4 {
59    dwSize: DWORD,
60    dwFlags: DWORD,
61    hInstance: HINSTANCE,
62    u1: PROPSHEETPAGEA_V1_u1,
63    u2: PROPSHEETPAGEA_V1_u2,
64    pszTitle: LPCSTR,
65    pfnDlgProc: DLGPROC,
66    lParam: LPARAM,
67    pfnCallback: LPFNPSPCALLBACKA,
68    pcRefParent: *mut UINT,
69    pszHeaderTitle: LPCSTR,
70    pszHeaderSubTitle: LPCSTR,
71    hActCtx: HANDLE,
72    u3: PROPSHEETPAGEA_V4_u3,
73}}
74pub type LPPROPSHEETPAGEA_V4 = *mut PROPSHEETPAGEA_V4;
75pub type LPCPROPSHEETPAGEA_V4 = *const PROPSHEETPAGEA_V4;
76UNION!{union PROPSHEETPAGEW_V1_u1 {
77    [usize; 1],
78    pszTemplate pszTemplate_mut: LPCWSTR,
79    pResource pResource_mut: PROPSHEETPAGE_RESOURCE,
80}}
81UNION!{union PROPSHEETPAGEW_V1_u2 {
82    [usize; 1],
83    hIcon hIcon_mut: HICON,
84    pszIcon pszIcon_mut: LPCWSTR,
85}}
86UNION!{union PROPSHEETPAGEW_V4_u3 {
87    [usize; 1],
88    hbmHeader hbmHeader_mut: HBITMAP,
89    pszbmHeader pszbmHeader_mut: LPCWSTR,
90}}
91STRUCT!{struct PROPSHEETPAGEW_V4 {
92    dwSize: DWORD,
93    dwFlags: DWORD,
94    hInstance: HINSTANCE,
95    u1: PROPSHEETPAGEW_V1_u1,
96    u2: PROPSHEETPAGEW_V1_u2,
97    pszTitle: LPCWSTR,
98    pfnDlgProc: DLGPROC,
99    lParam: LPARAM,
100    pfnCallback: LPFNPSPCALLBACKW,
101    pcRefParent: *mut UINT,
102    pszHeaderTitle: LPCWSTR,
103    pszHeaderSubTitle: LPCWSTR,
104    hActCtx: HANDLE,
105    u3: PROPSHEETPAGEW_V4_u3,
106}}
107pub type LPPROPSHEETPAGEW_V4 = *mut PROPSHEETPAGEW_V4;
108pub type LPCPROPSHEETPAGEW_V4 = *const PROPSHEETPAGEW_V4;
109pub type PROPSHEETPAGEA_LATEST = PROPSHEETPAGEA_V4;
110pub type PROPSHEETPAGEW_LATEST = PROPSHEETPAGEW_V4;
111pub type LPPROPSHEETPAGEA_LATEST = LPPROPSHEETPAGEA_V4;
112pub type LPPROPSHEETPAGEW_LATEST = LPPROPSHEETPAGEW_V4;
113pub type LPCPROPSHEETPAGEA_LATEST = LPCPROPSHEETPAGEA_V4;
114pub type LPCPROPSHEETPAGEW_LATEST = LPCPROPSHEETPAGEW_V4;
115pub type PROPSHEETPAGEA = PROPSHEETPAGEA_V4;
116pub type PROPSHEETPAGEW = PROPSHEETPAGEW_V4;
117pub type LPPROPSHEETPAGEA = LPPROPSHEETPAGEA_V4;
118pub type LPPROPSHEETPAGEW = LPPROPSHEETPAGEW_V4;
119pub type LPCPROPSHEETPAGEA = LPCPROPSHEETPAGEA_V4;
120pub type LPCPROPSHEETPAGEW = LPCPROPSHEETPAGEW_V4;
121pub const PSH_DEFAULT: DWORD = 0x00000000;
122pub const PSH_PROPTITLE: DWORD = 0x00000001;
123pub const PSH_USEHICON: DWORD = 0x00000002;
124pub const PSH_USEICONID: DWORD = 0x00000004;
125pub const PSH_PROPSHEETPAGE: DWORD = 0x00000008;
126pub const PSH_WIZARDHASFINISH: DWORD = 0x00000010;
127pub const PSH_WIZARD: DWORD = 0x00000020;
128pub const PSH_USEPSTARTPAGE: DWORD = 0x00000040;
129pub const PSH_NOAPPLYNOW: DWORD = 0x00000080;
130pub const PSH_USECALLBACK: DWORD = 0x00000100;
131pub const PSH_HASHELP: DWORD = 0x00000200;
132pub const PSH_MODELESS: DWORD = 0x00000400;
133pub const PSH_RTLREADING: DWORD = 0x00000800;
134pub const PSH_WIZARDCONTEXTHELP: DWORD = 0x00001000;
135pub const PSH_WIZARD97: DWORD = 0x01000000;
136pub const PSH_WATERMARK: DWORD = 0x00008000;
137pub const PSH_USEHBMWATERMARK: DWORD = 0x00010000;
138pub const PSH_USEHPLWATERMARK: DWORD = 0x00020000;
139pub const PSH_STRETCHWATERMARK: DWORD = 0x00040000;
140pub const PSH_HEADER: DWORD = 0x00080000;
141pub const PSH_USEHBMHEADER: DWORD = 0x00100000;
142pub const PSH_USEPAGELANG: DWORD = 0x00200000;
143pub const PSH_WIZARD_LITE: DWORD = 0x00400000;
144pub const PSH_NOCONTEXTHELP: DWORD = 0x02000000;
145pub const PSH_AEROWIZARD: DWORD = 0x00004000;
146pub const PSH_RESIZABLE: DWORD = 0x04000000;
147pub const PSH_HEADERBITMAP: DWORD = 0x08000000;
148pub const PSH_NOMARGIN: DWORD = 0x10000000;
149FN!{stdcall PFNPROPSHEETCALLBACK(
150    HWND,
151    UINT,
152    LPARAM,
153) -> c_int}
154UNION!{union PROPSHEETHEADERA_V1_u1 {
155    [usize; 1],
156    hIcon hIcon_mut: HICON,
157    pszIcon pszIcon_mut: LPCSTR,
158}}
159UNION!{union PROPSHEETHEADERA_V1_u2 {
160    [usize; 1],
161    nStartPage nStartPage_mut: UINT,
162    pStartPage pStartPage_mut: LPCSTR,
163}}
164UNION!{union PROPSHEETHEADERA_V1_u3 {
165    [usize; 1],
166    ppsp ppsp_mut: LPCPROPSHEETPAGEA,
167    phpage phpage_mut: *mut HPROPSHEETPAGE,
168}}
169UNION!{union PROPSHEETHEADERA_V2_u4 {
170    [usize; 1],
171    hbmWatermark hbmWatermark_mut: HBITMAP,
172    pszbmWatermark pszbmWatermark_mut: LPCSTR,
173}}
174UNION!{union PROPSHEETHEADERA_V2_u5 {
175    [usize; 1],
176    hbmHeader hbmHeader_mut: HBITMAP,
177    pszbmHeader pszbmHeader_mut: LPCSTR,
178}}
179STRUCT!{struct PROPSHEETHEADERA_V2 {
180    dwSize: DWORD,
181    dwFlags: DWORD,
182    hwndParent: HWND,
183    hInstance: HINSTANCE,
184    u1: PROPSHEETHEADERA_V1_u1,
185    pszCaption: LPCSTR,
186    nPages: UINT,
187    u2: PROPSHEETHEADERA_V1_u2,
188    u3: PROPSHEETHEADERA_V1_u3,
189    pfnCallback: PFNPROPSHEETCALLBACK,
190    u4: PROPSHEETHEADERA_V2_u4,
191    hplWatermark: HPALETTE,
192    u5: PROPSHEETHEADERA_V2_u5,
193}}
194pub type LPPROPSHEETHEADERA_V2 = *mut PROPSHEETHEADERA_V2;
195pub type LPCPROPSHEETHEADERA_V2 = *const PROPSHEETHEADERA_V2;
196UNION!{union PROPSHEETHEADERW_V1_u1 {
197    [usize; 1],
198    hIcon hIcon_mut: HICON,
199    pszIcon pszIcon_mut: LPCWSTR,
200}}
201UNION!{union PROPSHEETHEADERW_V1_u2 {
202    [usize; 1],
203    nStartPage nStartPage_mut: UINT,
204    pStartPage pStartPage_mut: LPCWSTR,
205}}
206UNION!{union PROPSHEETHEADERW_V1_u3 {
207    [usize; 1],
208    ppsp ppsp_mut: LPCPROPSHEETPAGEW,
209    phpage phpage_mut: *mut HPROPSHEETPAGE,
210}}
211UNION!{union PROPSHEETHEADERW_V2_u4 {
212    [usize; 1],
213    hbmWatermark hbmWatermark_mut: HBITMAP,
214    pszbmWatermark pszbmWatermark_mut: LPCWSTR,
215}}
216UNION!{union PROPSHEETHEADERW_V2_u5 {
217    [usize; 1],
218    hbmHeader hbmHeader_mut: HBITMAP,
219    pszbmHeader pszbmHeader_mut: LPCWSTR,
220}}
221STRUCT!{struct PROPSHEETHEADERW_V2 {
222    dwSize: DWORD,
223    dwFlags: DWORD,
224    hwndParent: HWND,
225    hInstance: HINSTANCE,
226    u1: PROPSHEETHEADERW_V1_u1,
227    pszCaption: LPCWSTR,
228    nPages: UINT,
229    u2: PROPSHEETHEADERW_V1_u2,
230    u3: PROPSHEETHEADERW_V1_u3,
231    pfnCallback: PFNPROPSHEETCALLBACK,
232    u4: PROPSHEETHEADERW_V2_u4,
233    hplWatermark: HPALETTE,
234    u5: PROPSHEETHEADERW_V2_u5,
235}}
236pub type LPPROPSHEETHEADERW_V2 = *mut PROPSHEETHEADERW_V2;
237pub type LPCPROPSHEETHEADERW_V2 = *const PROPSHEETHEADERW_V2;
238pub type PROPSHEETHEADERA = PROPSHEETHEADERA_V2;
239pub type PROPSHEETHEADERW = PROPSHEETHEADERW_V2;
240pub type LPPROPSHEETHEADERA = LPPROPSHEETHEADERA_V2;
241pub type LPPROPSHEETHEADERW = LPPROPSHEETHEADERW_V2;
242pub type LPCPROPSHEETHEADERA = LPCPROPSHEETHEADERA_V2;
243pub type LPCPROPSHEETHEADERW = LPCPROPSHEETHEADERW_V2;
244pub const PSCB_INITIALIZED: UINT = 1;
245pub const PSCB_PRECREATE: UINT = 2;
246pub const PSCB_BUTTONPRESSED: UINT = 3;
247extern "system" {
248    pub fn CreatePropertySheetPageA(
249        constPropSheetPagePointer: LPCPROPSHEETPAGEA,
250    ) -> HPROPSHEETPAGE;
251    pub fn CreatePropertySheetPageW(
252        constPropSheetPagePointer: LPCPROPSHEETPAGEW,
253    ) -> HPROPSHEETPAGE;
254    pub fn DestroyPropertySheetPage(
255        hPSPage: HPROPSHEETPAGE,
256    ) -> BOOL;
257    pub fn PropertySheetA(
258        lppsph: LPCPROPSHEETHEADERA,
259    ) -> INT_PTR;
260    pub fn PropertySheetW(
261        lppsph: LPCPROPSHEETHEADERW,
262    ) -> INT_PTR;
263}
264FN!{stdcall LPFNADDPROPSHEETPAGE(
265    HPROPSHEETPAGE,
266    LPARAM,
267) -> BOOL}
268FN!{stdcall LPFNADDPROPSHEETPAGES(
269    LPVOID,
270    LPFNADDPROPSHEETPAGE,
271    LPARAM,
272) -> BOOL}
273STRUCT!{struct PSHNOTIFY {
274    hdr: NMHDR,
275    lParam: LPARAM,
276}}
277pub type LPPSHNOTIFY = *mut PSHNOTIFY;
278pub const PSN_FIRST: UINT = -200i32 as u32;
279pub const PSN_LAST: UINT = -299i32 as u32;
280pub const PSN_SETACTIVE: UINT = PSN_FIRST - 0;
281pub const PSN_KILLACTIVE: UINT = PSN_FIRST - 1;
282pub const PSN_APPLY: UINT = PSN_FIRST - 2;
283pub const PSN_RESET: UINT = PSN_FIRST - 3;
284pub const PSN_HELP: UINT = PSN_FIRST - 5;
285pub const PSN_WIZBACK: UINT = PSN_FIRST - 6;
286pub const PSN_WIZNEXT: UINT = PSN_FIRST - 7;
287pub const PSN_WIZFINISH: UINT = PSN_FIRST - 8;
288pub const PSN_QUERYCANCEL: UINT = PSN_FIRST - 9;
289pub const PSN_GETOBJECT: UINT = PSN_FIRST - 10;
290pub const PSN_TRANSLATEACCELERATOR: UINT = PSN_FIRST - 12;
291pub const PSN_QUERYINITIALFOCUS: UINT = PSN_FIRST - 13;
292pub const PSNRET_NOERROR: LRESULT = 0;
293pub const PSNRET_INVALID: LRESULT = 1;
294pub const PSNRET_INVALID_NOCHANGEPAGE: LRESULT = 2;
295pub const PSNRET_MESSAGEHANDLED: LRESULT = 3;
296pub const PSM_SETCURSEL: UINT = WM_USER + 101;
297pub const PSM_REMOVEPAGE: UINT = WM_USER + 102;
298pub const PSM_ADDPAGE: UINT = WM_USER + 103;
299pub const PSM_CHANGED: UINT = WM_USER + 104;
300pub const PSM_RESTARTWINDOWS: UINT = WM_USER + 105;
301pub const PSM_REBOOTSYSTEM: UINT = WM_USER + 106;
302pub const PSM_CANCELTOCLOSE: UINT = WM_USER + 107;
303pub const PSM_QUERYSIBLINGS: UINT = WM_USER + 108;
304pub const PSM_UNCHANGED: UINT = WM_USER + 109;
305pub const PSM_APPLY: UINT = WM_USER + 110;
306pub const PSM_SETTITLEA: UINT = WM_USER + 111;
307pub const PSM_SETTITLEW: UINT = WM_USER + 120;
308pub const PSM_SETWIZBUTTONS: UINT = WM_USER + 112;
309pub const PSWIZB_BACK: DWORD = 0x00000001;
310pub const PSWIZB_NEXT: DWORD = 0x00000002;
311pub const PSWIZB_FINISH: DWORD = 0x00000004;
312pub const PSWIZB_DISABLEDFINISH: DWORD = 0x00000008;
313pub const PSWIZBF_ELEVATIONREQUIRED: WPARAM = 0x00000001;
314pub const PSWIZB_CANCEL: DWORD = 0x00000010;
315pub const PSM_PRESSBUTTON: UINT = WM_USER + 113;
316pub const PSBTN_BACK: c_int = 0;
317pub const PSBTN_NEXT: c_int = 1;
318pub const PSBTN_FINISH: c_int = 2;
319pub const PSBTN_OK: c_int = 3;
320pub const PSBTN_APPLYNOW: c_int = 4;
321pub const PSBTN_CANCEL: c_int = 5;
322pub const PSBTN_HELP: c_int = 6;
323pub const PSBTN_MAX: c_int = 6;
324pub const PSM_SETCURSELID: UINT = WM_USER + 114;
325pub const PSM_SETFINISHTEXTA: UINT = WM_USER + 115;
326pub const PSM_SETFINISHTEXTW: UINT = WM_USER + 121;
327pub const PSM_GETTABCONTROL: UINT = WM_USER + 116;
328pub const PSM_ISDIALOGMESSAGE: UINT = WM_USER + 117;
329pub const PSM_GETCURRENTPAGEHWND: UINT = WM_USER + 118;
330pub const PSM_INSERTPAGE: UINT = WM_USER + 119;
331pub const PSM_SETHEADERTITLEA: UINT = WM_USER + 125;
332pub const PSM_SETHEADERTITLEW: UINT = WM_USER + 126;
333pub const PSWIZF_SETCOLOR: UINT = -1i32 as u32;
334pub const PSM_SETHEADERSUBTITLEA: UINT = WM_USER + 127;
335pub const PSM_SETHEADERSUBTITLEW: UINT = WM_USER + 128;
336pub const PSM_HWNDTOINDEX: UINT = WM_USER + 129;
337pub const PSM_INDEXTOHWND: UINT = WM_USER + 130;
338pub const PSM_PAGETOINDEX: UINT = WM_USER + 131;
339pub const PSM_INDEXTOPAGE: UINT = WM_USER + 132;
340pub const PSM_IDTOINDEX: UINT = WM_USER + 133;
341pub const PSM_INDEXTOID: UINT = WM_USER + 134;
342pub const PSM_GETRESULT: UINT = WM_USER + 135;
343pub const PSM_RECALCPAGESIZES: UINT = WM_USER + 136;
344pub const PSM_SETNEXTTEXTW: UINT = WM_USER + 137;
345pub const PSM_SHOWWIZBUTTONS: UINT = WM_USER + 138;
346pub const PSM_ENABLEWIZBUTTONS: UINT = WM_USER + 139;
347pub const PSM_SETBUTTONTEXTW: UINT = WM_USER + 140;
348pub const PSM_SETBUTTONTEXT: UINT = PSM_SETBUTTONTEXTW;
349pub const ID_PSRESTARTWINDOWS: INT_PTR = 0x2;
350pub const ID_PSREBOOTSYSTEM: INT_PTR = ID_PSRESTARTWINDOWS | 0x1;
351pub const WIZ_CXDLG: DWORD = 276;
352pub const WIZ_CYDLG: DWORD = 140;
353pub const WIZ_CXBMP: DWORD = 80;
354pub const WIZ_BODYX: DWORD = 92;
355pub const WIZ_BODYCX: DWORD = 184;
356pub const PROP_SM_CXDLG: c_short = 212;
357pub const PROP_SM_CYDLG: c_short = 188;
358pub const PROP_MED_CXDLG: c_short = 227;
359pub const PROP_MED_CYDLG: c_short = 215;
360pub const PROP_LG_CXDLG: c_short = 252;
361pub const PROP_LG_CYDLG: c_short = 218;