1 // Copyright © 2015, skdltmxn
2 // Licensed under the MIT License <LICENSE.md>
3 //! Interface for the Windows Property Sheet Pages
4 pub enum PSP {}
5 pub type HPROPSHEETPAGE = *mut PSP;
6 pub type LPFNPSPCALLBACKA = Option<unsafe extern "system" fn(
7     hwnd: ::HWND, uMsg: ::UINT, ppsp: *mut PROPSHEETPAGEA,
8 ) -> ::UINT>;
9 pub type LPFNPSPCALLBACKW = Option<unsafe extern "system" fn(
10     hwnd: ::HWND, uMsg: ::UINT, ppsp: *mut PROPSHEETPAGEW,
11 ) -> ::UINT>;
12 pub const PSP_DEFAULT: ::DWORD = 0x00000000;
13 pub const PSP_DLGINDIRECT: ::DWORD = 0x00000001;
14 pub const PSP_USEHICON: ::DWORD = 0x00000002;
15 pub const PSP_USEICONID: ::DWORD = 0x00000004;
16 pub const PSP_USETITLE: ::DWORD = 0x00000008;
17 pub const PSP_RTLREADING: ::DWORD = 0x00000010;
18 pub const PSP_HASHELP: ::DWORD = 0x00000020;
19 pub const PSP_USEREFPARENT: ::DWORD = 0x00000040;
20 pub const PSP_USECALLBACK: ::DWORD = 0x00000080;
21 pub const PSP_PREMATURE: ::DWORD = 0x00000400;
22 pub const PSP_HIDEHEADER: ::DWORD = 0x00000800;
23 pub const PSP_USEHEADERTITLE: ::DWORD = 0x00001000;
24 pub const PSP_USEHEADERSUBTITLE: ::DWORD = 0x00002000;
25 pub const PSP_USEFUSIONCONTEXT: ::DWORD = 0x00004000;
26 pub const PSPCB_ADDREF: ::UINT = 0;
27 pub const PSPCB_RELEASE: ::UINT = 1;
28 pub const PSPCB_CREATE: ::UINT = 2;
29 pub type PROPSHEETPAGE_RESOURCE = ::LPCDLGTEMPLATEA;
30 STRUCT!{nodebug struct PROPSHEETPAGEA_V4 {
31     dwSize: ::DWORD,
32     dwFlags: ::DWORD,
33     hInstance: ::HINSTANCE,
34     pszTemplate: ::LPCSTR,
35     hIcon: ::HICON,
36     pszTitle: ::LPCSTR,
37     pfnDlgProc: ::DLGPROC,
38     lParam: ::LPARAM,
39     pfnCallback: LPFNPSPCALLBACKA,
40     pcRefParent: *mut ::UINT,
41     pszHeaderTitle: ::LPCSTR,
42     pszHeaderSubTitle: ::LPCSTR,
43     hActCtx: ::HANDLE,
44     hbmHeader: ::HBITMAP,
45 }}
46 UNION!(PROPSHEETPAGEA_V4, pszTemplate, pResource, pResource_mut, PROPSHEETPAGE_RESOURCE);
47 UNION!(PROPSHEETPAGEA_V4, hIcon, pszIcon, pszIcon_mut, ::LPCSTR);
48 UNION!(PROPSHEETPAGEA_V4, hbmHeader, pszbmHeader, pszbmHeader_mut, ::LPCSTR);
49 pub type LPPROPSHEETPAGEA_V4 = *mut PROPSHEETPAGEA_V4;
50 pub type LPCPROPSHEETPAGEA_V4 = *const PROPSHEETPAGEA_V4;
51 STRUCT!{nodebug struct PROPSHEETPAGEW_V4 {
52     dwSize: ::DWORD,
53     dwFlags: ::DWORD,
54     hInstance: ::HINSTANCE,
55     pszTemplate: ::LPCWSTR,
56     hIcon: ::HICON,
57     pszTitle: ::LPCWSTR,
58     pfnDlgProc: ::DLGPROC,
59     lParam: ::LPARAM,
60     pfnCallback: LPFNPSPCALLBACKW,
61     pcRefParent: *mut ::UINT,
62     pszHeaderTitle: ::LPCWSTR,
63     pszHeaderSubTitle: ::LPCWSTR,
64     hActCtx: ::HANDLE,
65     hbmHeader: ::HBITMAP,
66 }}
67 UNION!(PROPSHEETPAGEW_V4, pszTemplate, pResource, pResource_mut, PROPSHEETPAGE_RESOURCE);
68 UNION!(PROPSHEETPAGEW_V4, hIcon, pszIcon, pszIcon_mut, ::LPCWSTR);
69 UNION!(PROPSHEETPAGEW_V4, hbmHeader, pszbmHeader, pszbmHeader_mut, ::LPCWSTR);
70 pub type LPPROPSHEETPAGEW_V4 = *mut PROPSHEETPAGEW_V4;
71 pub type LPCPROPSHEETPAGEW_V4 = *const PROPSHEETPAGEW_V4;
72 pub type PROPSHEETPAGEA_LATEST = PROPSHEETPAGEA_V4;
73 pub type PROPSHEETPAGEW_LATEST = PROPSHEETPAGEW_V4;
74 pub type LPPROPSHEETPAGEA_LATEST = LPPROPSHEETPAGEA_V4;
75 pub type LPPROPSHEETPAGEW_LATEST = LPPROPSHEETPAGEW_V4;
76 pub type LPCPROPSHEETPAGEA_LATEST = LPCPROPSHEETPAGEA_V4;
77 pub type LPCPROPSHEETPAGEW_LATEST = LPCPROPSHEETPAGEW_V4;
78 pub type PROPSHEETPAGEA = PROPSHEETPAGEA_V4;
79 pub type PROPSHEETPAGEW = PROPSHEETPAGEW_V4;
80 pub type LPPROPSHEETPAGEA = LPPROPSHEETPAGEA_V4;
81 pub type LPPROPSHEETPAGEW = LPPROPSHEETPAGEW_V4;
82 pub type LPCPROPSHEETPAGEA = LPCPROPSHEETPAGEA_V4;
83 pub type LPCPROPSHEETPAGEW = LPCPROPSHEETPAGEW_V4;
84 pub const PSH_DEFAULT: ::DWORD = 0x00000000;
85 pub const PSH_PROPTITLE: ::DWORD = 0x00000001;
86 pub const PSH_USEHICON: ::DWORD = 0x00000002;
87 pub const PSH_USEICONID: ::DWORD = 0x00000004;
88 pub const PSH_PROPSHEETPAGE: ::DWORD = 0x00000008;
89 pub const PSH_WIZARDHASFINISH: ::DWORD = 0x00000010;
90 pub const PSH_WIZARD: ::DWORD = 0x00000020;
91 pub const PSH_USEPSTARTPAGE: ::DWORD = 0x00000040;
92 pub const PSH_NOAPPLYNOW: ::DWORD = 0x00000080;
93 pub const PSH_USECALLBACK: ::DWORD = 0x00000100;
94 pub const PSH_HASHELP: ::DWORD = 0x00000200;
95 pub const PSH_MODELESS: ::DWORD = 0x00000400;
96 pub const PSH_RTLREADING: ::DWORD = 0x00000800;
97 pub const PSH_WIZARDCONTEXTHELP: ::DWORD = 0x00001000;
98 pub const PSH_WIZARD97: ::DWORD = 0x01000000;
99 pub const PSH_WATERMARK: ::DWORD = 0x00008000;
100 pub const PSH_USEHBMWATERMARK: ::DWORD = 0x00010000;
101 pub const PSH_USEHPLWATERMARK: ::DWORD = 0x00020000;
102 pub const PSH_STRETCHWATERMARK: ::DWORD = 0x00040000;
103 pub const PSH_HEADER: ::DWORD = 0x00080000;
104 pub const PSH_USEHBMHEADER: ::DWORD = 0x00100000;
105 pub const PSH_USEPAGELANG: ::DWORD = 0x00200000;
106 pub const PSH_WIZARD_LITE: ::DWORD = 0x00400000;
107 pub const PSH_NOCONTEXTHELP: ::DWORD = 0x02000000;
108 pub const PSH_AEROWIZARD: ::DWORD = 0x00004000;
109 pub const PSH_RESIZABLE: ::DWORD = 0x04000000;
110 pub const PSH_HEADERBITMAP: ::DWORD = 0x08000000;
111 pub const PSH_NOMARGIN: ::DWORD = 0x10000000;
112 pub type PFNPROPSHEETCALLBACK = Option<unsafe extern "system" fn(
113     ::HWND, ::UINT, ::LPARAM,
114 ) -> ::c_int>;
115 STRUCT!{nodebug struct PROPSHEETHEADERA_V2 {
116     dwSize: ::DWORD,
117     dwFlags: ::DWORD,
118     hwndParent: ::HWND,
119     hInstance: ::HINSTANCE,
120     hIcon: ::HICON,
121     pszCaption: ::LPCSTR,
122     nPages: ::UINT,
123     pStartPage: ::LPCSTR,
124     ppsp: LPCPROPSHEETPAGEA,
125     pfnCallback: PFNPROPSHEETCALLBACK,
126     hbmWatermark: ::HBITMAP,
127     hplWatermark: ::HPALETTE,
128     hbmHeader: ::HBITMAP,
129 }}
130 UNION!(PROPSHEETHEADERA_V2, hIcon, pszIcon, pszIcon_mut, ::LPCSTR);
131 UNION!(PROPSHEETHEADERA_V2, pStartPage, nStartPage, nStartPage_mut, ::UINT);
132 UNION!(PROPSHEETHEADERA_V2, ppsp, phpage, phpage_mut, *mut HPROPSHEETPAGE);
133 UNION!(PROPSHEETHEADERA_V2, hbmWatermark, pszbmWatermark, pszbmWatermark_mut, ::LPCSTR);
134 UNION!(PROPSHEETHEADERA_V2, hbmHeader, pszbmHeader, pszbmHeader_mut, ::LPCSTR);
135 pub type LPPROPSHEETHEADERA_V2 = *mut PROPSHEETHEADERA_V2;
136 pub type LPCPROPSHEETHEADERA_V2 = *const PROPSHEETHEADERA_V2;
137 STRUCT!{nodebug struct PROPSHEETHEADERW_V2 {
138     dwSize: ::DWORD,
139     dwFlags: ::DWORD,
140     hwndParent: ::HWND,
141     hInstance: ::HINSTANCE,
142     hIcon: ::HICON,
143     pszCaption: ::LPCWSTR,
144     nPages: ::UINT,
145     pStartPage: ::LPCWSTR,
146     ppsp: LPCPROPSHEETPAGEW,
147     pfnCallback: PFNPROPSHEETCALLBACK,
148     hbmWatermark: ::HBITMAP,
149     hplWatermark: ::HPALETTE,
150     hbmHeader: ::HBITMAP,
151 }}
152 UNION!(PROPSHEETHEADERW_V2, hIcon, pszIcon, pszIcon_mut, ::LPCWSTR);
153 UNION!(PROPSHEETHEADERW_V2, pStartPage, nStartPage, nStartPage_mut, ::UINT);
154 UNION!(PROPSHEETHEADERW_V2, ppsp, phpage, phpage_mut, *mut HPROPSHEETPAGE);
155 UNION!(PROPSHEETHEADERW_V2, hbmWatermark, pszbmWatermark, pszbmWatermark_mut, ::LPCWSTR);
156 UNION!(PROPSHEETHEADERW_V2, hbmHeader, pszbmHeader, pszbmHeader_mut, ::LPCWSTR);
157 pub type LPPROPSHEETHEADERW_V2 = *mut PROPSHEETHEADERW_V2;
158 pub type LPCPROPSHEETHEADERW_V2 = *const PROPSHEETHEADERW_V2;
159 pub type PROPSHEETHEADERA = PROPSHEETHEADERA_V2;
160 pub type PROPSHEETHEADERW = PROPSHEETHEADERW_V2;
161 pub type LPPROPSHEETHEADERA = LPPROPSHEETHEADERA_V2;
162 pub type LPPROPSHEETHEADERW = LPPROPSHEETHEADERW_V2;
163 pub type LPCPROPSHEETHEADERA = LPCPROPSHEETHEADERA_V2;
164 pub type LPCPROPSHEETHEADERW = LPCPROPSHEETHEADERW_V2;
165 pub const PSCB_INITIALIZED: ::UINT = 1;
166 pub const PSCB_PRECREATE: ::UINT = 2;
167 pub const PSCB_BUTTONPRESSED: ::UINT = 3;
168 pub type LPFNADDPROPSHEETPAGE = Option<unsafe extern "system" fn(
169     HPROPSHEETPAGE, ::LPARAM,
170 ) -> ::BOOL>;
171 pub type LPFNADDPROPSHEETPAGES = Option<unsafe extern "system" fn(
172     ::LPVOID, LPFNADDPROPSHEETPAGE, ::LPARAM,
173 ) -> ::BOOL>;
174 STRUCT!{struct PSHNOTIFY {
175     hdr: ::NMHDR,
176     lParam: ::LPARAM,
177 }}
178 pub type LPPSHNOTIFY = *mut PSHNOTIFY;
179 pub const PSN_FIRST: ::UINT = -200i32 as ::UINT;
180 pub const PSN_LAST: ::UINT = -299i32 as ::UINT;
181 pub const PSN_SETACTIVE: ::UINT = PSN_FIRST - 0;
182 pub const PSN_KILLACTIVE: ::UINT = PSN_FIRST - 1;
183 pub const PSN_APPLY: ::UINT = PSN_FIRST - 2;
184 pub const PSN_RESET: ::UINT = PSN_FIRST - 3;
185 pub const PSN_HELP: ::UINT = PSN_FIRST - 5;
186 pub const PSN_WIZBACK: ::UINT = PSN_FIRST - 6;
187 pub const PSN_WIZNEXT: ::UINT = PSN_FIRST - 7;
188 pub const PSN_WIZFINISH: ::UINT = PSN_FIRST - 8;
189 pub const PSN_QUERYCANCEL: ::UINT = PSN_FIRST - 9;
190 pub const PSN_GETOBJECT: ::UINT = PSN_FIRST - 10;
191 pub const PSN_TRANSLATEACCELERATOR: ::UINT = PSN_FIRST - 12;
192 pub const PSN_QUERYINITIALFOCUS: ::UINT = PSN_FIRST - 13;
193 pub const PSNRET_NOERROR: ::LRESULT = 0;
194 pub const PSNRET_INVALID: ::LRESULT = 1;
195 pub const PSNRET_INVALID_NOCHANGEPAGE: ::LRESULT = 2;
196 pub const PSNRET_MESSAGEHANDLED: ::LRESULT = 3;
197 pub const PSM_SETCURSEL: ::UINT = ::WM_USER + 101;
198 pub const PSM_REMOVEPAGE: ::UINT = ::WM_USER + 102;
199 pub const PSM_ADDPAGE: ::UINT = ::WM_USER + 103;
200 pub const PSM_CHANGED: ::UINT = ::WM_USER + 104;
201 pub const PSM_RESTARTWINDOWS: ::UINT = ::WM_USER + 105;
202 pub const PSM_REBOOTSYSTEM: ::UINT = ::WM_USER + 106;
203 pub const PSM_CANCELTOCLOSE: ::UINT = ::WM_USER + 107;
204 pub const PSM_QUERYSIBLINGS: ::UINT = ::WM_USER + 108;
205 pub const PSM_UNCHANGED: ::UINT = ::WM_USER + 109;
206 pub const PSM_APPLY: ::UINT = ::WM_USER + 110;
207 pub const PSM_SETTITLEA: ::UINT = ::WM_USER + 111;
208 pub const PSM_SETTITLEW: ::UINT = ::WM_USER + 120;
209 pub const PSM_SETWIZBUTTONS: ::UINT = ::WM_USER + 112;
210 pub const PSWIZB_BACK: ::DWORD = 0x00000001;
211 pub const PSWIZB_NEXT: ::DWORD = 0x00000002;
212 pub const PSWIZB_FINISH: ::DWORD = 0x00000004;
213 pub const PSWIZB_DISABLEDFINISH: ::DWORD = 0x00000008;
214 pub const PSWIZB_CANCEL: ::DWORD = 0x00000008;
215 pub const PSWIZBF_ELEVATIONREQUIRED: ::WPARAM = 0x00000001;
216 pub const PSBTN_BACK: ::c_int = 0;
217 pub const PSBTN_NEXT: ::c_int = 1;
218 pub const PSBTN_FINISH: ::c_int = 2;
219 pub const PSBTN_OK: ::c_int = 3;
220 pub const PSBTN_APPLYNOW: ::c_int = 4;
221 pub const PSBTN_CANCEL: ::c_int = 5;
222 pub const PSBTN_HELP: ::c_int = 6;
223 pub const PSBTN_MAX: ::c_int = 6;
224 pub const PSM_PRESSBUTTON: ::UINT = ::WM_USER + 113;
225 pub const PSM_SETCURSELID: ::UINT = ::WM_USER + 114;
226 pub const PSM_SETFINISHTEXTA: ::UINT = ::WM_USER + 115;
227 pub const PSM_SETFINISHTEXTW: ::UINT = ::WM_USER + 121;
228 pub const PSM_GETTABCONTROL: ::UINT = ::WM_USER + 116;
229 pub const PSM_ISDIALOGMESSAGE: ::UINT = ::WM_USER + 117;
230 pub const PSM_GETCURRENTPAGEHWND: ::UINT = ::WM_USER + 118;
231 pub const PSM_INSERTPAGE: ::UINT = ::WM_USER + 119;
232 pub const PSM_SETHEADERTITLEA: ::UINT = ::WM_USER + 125;
233 pub const PSM_SETHEADERTITLEW: ::UINT = ::WM_USER + 126;
234 pub const PSWIZF_SETCOLOR: ::UINT = (0 - 1) as ::UINT;
235 pub const PSM_SETHEADERSUBTITLEA: ::UINT = ::WM_USER + 127;
236 pub const PSM_SETHEADERSUBTITLEW: ::UINT = ::WM_USER + 128;
237 pub const PSM_HWNDTOINDEX: ::UINT = ::WM_USER + 129;
238 pub const PSM_INDEXTOHWND: ::UINT = ::WM_USER + 130;
239 pub const PSM_PAGETOINDEX: ::UINT = ::WM_USER + 131;
240 pub const PSM_INDEXTOPAGE: ::UINT = ::WM_USER + 132;
241 pub const PSM_IDTOINDEX: ::UINT = ::WM_USER + 133;
242 pub const PSM_INDEXTOID: ::UINT = ::WM_USER + 134;
243 pub const PSM_GETRESULT: ::UINT = ::WM_USER + 135;
244 pub const PSM_RECALCPAGESIZES: ::UINT = ::WM_USER + 136;
245 pub const PSM_SETNEXTTEXTW: ::UINT = ::WM_USER + 137;
246 pub const PSM_SHOWWIZBUTTONS: ::UINT = ::WM_USER + 138;
247 pub const PSM_ENABLEWIZBUTTONS: ::UINT = ::WM_USER + 139;
248 pub const PSM_SETBUTTONTEXTW: ::UINT = ::WM_USER + 140;
249 pub const PSM_SETBUTTONTEXT: ::UINT = PSM_SETBUTTONTEXTW;
250 pub const ID_PSRESTARTWINDOWS: ::INT_PTR = 0x2;
251 pub const ID_PSREBOOTSYSTEM: ::INT_PTR = ID_PSRESTARTWINDOWS | 0x1;
252 pub const WIZ_CXDLG: ::DWORD = 276;
253 pub const WIZ_CYDLG: ::DWORD = 140;
254 pub const WIZ_CXBMP: ::DWORD = 80;
255 pub const WIZ_BODYX: ::DWORD = 92;
256 pub const WIZ_BODYCX: ::DWORD = 184;
257 pub const PROP_SM_CXDLG: ::c_short = 212;
258 pub const PROP_SM_CYDLG: ::c_short = 188;
259 pub const PROP_MED_CXDLG: ::c_short = 227;
260 pub const PROP_MED_CYDLG: ::c_short = 215;
261 pub const PROP_LG_CXDLG: ::c_short = 252;
262 pub const PROP_LG_CYDLG: ::c_short = 218;
263