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