1/** 2 * Windows API header module 3 * 4 * Translated from MinGW Windows headers 5 * 6 * Authors: Vladimir Vlasov 7 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) 8 * Source: $(DRUNTIMESRC core/sys/windows/_prsht.d) 9 */ 10module core.sys.windows.prsht; 11version (Windows): 12@system: 13 14version (ANSI) {} else version = Unicode; 15pragma(lib, "comctl32"); 16 17import core.sys.windows.w32api, core.sys.windows.windef, core.sys.windows.winuser; 18 19enum MAXPROPPAGES = 100; 20 21enum { 22 PSP_DEFAULT = 0x00000000, 23 PSP_DLGINDIRECT = 0x00000001, 24 PSP_USEHICON = 0x00000002, 25 PSP_USEICONID = 0x00000004, 26 PSP_USETITLE = 0x00000008, 27 PSP_RTLREADING = 0x00000010, 28 PSP_HASHELP = 0x00000020, 29 PSP_USEREFPARENT = 0x00000040, 30 PSP_USECALLBACK = 0x00000080, 31 PSP_PREMATURE = 0x00000400 32} 33 34static if (_WIN32_IE >= 0x400) { 35 enum { 36 PSP_HIDEHEADER = 0x00000800, 37 PSP_USEHEADERTITLE = 0x00001000, 38 PSP_USEHEADERSUBTITLE = 0x00002000 39 } 40} 41 42enum { 43 PSPCB_RELEASE = 1, 44 PSPCB_CREATE 45} 46 47enum { 48 PSH_DEFAULT = 0x00000000, 49 PSH_PROPTITLE = 0x00000001, 50 PSH_USEHICON = 0x00000002, 51 PSH_USEICONID = 0x00000004, 52 PSH_PROPSHEETPAGE = 0x00000008, 53 PSH_WIZARDHASFINISH = 0x00000010, 54 PSH_WIZARD = 0x00000020, 55 PSH_USEPSTARTPAGE = 0x00000040, 56 PSH_NOAPPLYNOW = 0x00000080, 57 PSH_USECALLBACK = 0x00000100, 58 PSH_HASHELP = 0x00000200, 59 PSH_MODELESS = 0x00000400, 60 PSH_RTLREADING = 0x00000800, 61 PSH_WIZARDCONTEXTHELP = 0x00001000 62} 63 64static if (_WIN32_IE >= 0x400) { 65 enum { 66 PSH_WATERMARK = 0x00008000, 67 PSH_USEHBMWATERMARK = 0x00010000, 68 PSH_USEHPLWATERMARK = 0x00020000, 69 PSH_STRETCHWATERMARK = 0x00040000, 70 PSH_HEADER = 0x00080000, 71 PSH_USEHBMHEADER = 0x00100000, 72 PSH_USEPAGELANG = 0x00200000 73 } 74 static if (_WIN32_IE < 0x0500) { 75 enum { 76 PSH_WIZARD97 = 0x00002000 77 } 78 } else { 79 enum { 80 PSH_WIZARD97 = 0x01000000 81 } 82 } 83} 84 85static if (_WIN32_IE >= 0x500) { 86 enum { 87 PSH_WIZARD_LITE = 0x00400000, 88 PSH_NOCONTEXTHELP = 0x02000000 89 } 90} 91 92enum { 93 PSCB_INITIALIZED = 1, 94 PSCB_PRECREATE 95} 96 97enum { 98 PSN_FIRST = (-200), 99 PSN_LAST = (-299), 100 PSN_SETACTIVE = (-200), 101 PSN_KILLACTIVE = (-201), 102 PSN_APPLY = (-202), 103 PSN_RESET = (-203), 104 PSN_HELP = (-205), 105 PSN_WIZBACK = (-206), 106 PSN_WIZNEXT = (-207), 107 PSN_WIZFINISH = (-208), 108 PSN_QUERYCANCEL = (-209) 109} 110static if (_WIN32_IE >= 0x400) { 111 enum { 112 PSN_GETOBJECT = (-210) 113 } 114} 115static if (_WIN32_IE >= 0x500) { 116 enum { 117 PSN_TRANSLATEACCELERATOR = (-212), 118 PSN_QUERYINITIALFOCUS = (-213) 119 } 120} 121 122enum { 123 PSNRET_NOERROR, 124 PSNRET_INVALID, 125 PSNRET_INVALID_NOCHANGEPAGE, 126 PSNRET_MESSAGEHANDLED 127} 128 129enum { 130 ID_PSRESTARTWINDOWS = 0x2, 131 ID_PSREBOOTSYSTEM = ID_PSRESTARTWINDOWS | 0x1 132} 133 134enum { 135 WIZ_CXDLG = 276, 136 WIZ_CYDLG = 140, 137 WIZ_CXBMP = 80, 138 WIZ_BODYX = 92, 139 WIZ_BODYCX = 184 140} 141 142enum { 143 PROP_SM_CXDLG = 212, 144 PROP_SM_CYDLG = 188, 145 PROP_MED_CXDLG = 227, 146 PROP_MED_CYDLG = 215, 147 PROP_LG_CXDLG = 252, 148 PROP_LG_CYDLG = 218 149} 150 151enum { 152 PSBTN_BACK, 153 PSBTN_NEXT, 154 PSBTN_FINISH, 155 PSBTN_OK, 156 PSBTN_APPLYNOW, 157 PSBTN_CANCEL, 158 PSBTN_HELP, 159 PSBTN_MAX = 6 160} 161 162enum { 163 PSWIZB_BACK = 1, 164 PSWIZB_NEXT = 2, 165 PSWIZB_FINISH = 4, 166 PSWIZB_DISABLEDFINISH = 8 167} 168 169enum { 170 PSM_SETCURSEL = WM_USER + 101, 171 PSM_REMOVEPAGE, 172 PSM_ADDPAGE, 173 PSM_CHANGED, 174 PSM_RESTARTWINDOWS, 175 PSM_REBOOTSYSTEM, 176 PSM_CANCELTOCLOSE, 177 PSM_QUERYSIBLINGS, 178 PSM_UNCHANGED, 179 PSM_APPLY, 180 PSM_SETTITLEA, 181 PSM_SETWIZBUTTONS, 182 PSM_PRESSBUTTON, 183 PSM_SETCURSELID, 184 PSM_SETFINISHTEXTA, 185 PSM_GETTABCONTROL, 186 PSM_ISDIALOGMESSAGE, 187 PSM_GETCURRENTPAGEHWND, 188 PSM_INSERTPAGE, 189 PSM_SETTITLEW, 190 PSM_SETFINISHTEXTW // = WM_USER + 121, 191} 192 193extern (Windows) { 194 alias UINT function(HWND, UINT, LPPROPSHEETPAGEA) LPFNPSPCALLBACKA; 195 alias UINT function(HWND, UINT, LPPROPSHEETPAGEW) LPFNPSPCALLBACKW; 196 alias int function(HWND, UINT, LPARAM) PFNPROPSHEETCALLBACK; 197} 198 199align(4): 200 201struct PROPSHEETPAGEA { 202 DWORD dwSize = PROPSHEETPAGEA.sizeof; 203 DWORD dwFlags; 204 HINSTANCE hInstance; 205 union { 206 LPCSTR pszTemplate; 207 LPCDLGTEMPLATE pResource; 208 } 209 union { 210 HICON hIcon; 211 LPCSTR pszIcon; 212 } 213 LPCSTR pszTitle; 214 DLGPROC pfnDlgProc; 215 LPARAM lParam; 216 LPFNPSPCALLBACKA pfnCallback; 217 UINT* pcRefParent; 218 static if (_WIN32_IE >= 0x400) { 219 LPCSTR pszHeaderTitle; 220 LPCSTR pszHeaderSubTitle; 221 } 222} 223alias PROPSHEETPAGEA* LPPROPSHEETPAGEA; 224alias const(PROPSHEETPAGEA)* LPCPROPSHEETPAGEA; 225 226struct PROPSHEETPAGEW { 227 DWORD dwSize = PROPSHEETPAGEW.sizeof; 228 DWORD dwFlags; 229 HINSTANCE hInstance; 230 union { 231 LPCWSTR pszTemplate; 232 LPCDLGTEMPLATE pResource; 233 } 234 union { 235 HICON hIcon; 236 LPCWSTR pszIcon; 237 } 238 LPCWSTR pszTitle; 239 DLGPROC pfnDlgProc; 240 LPARAM lParam; 241 LPFNPSPCALLBACKW pfnCallback; 242 UINT* pcRefParent; 243 static if (_WIN32_IE >= 0x400) { 244 LPCWSTR pszHeaderTitle; 245 LPCWSTR pszHeaderSubTitle; 246 } 247} 248alias PROPSHEETPAGEW* LPPROPSHEETPAGEW; 249alias const(PROPSHEETPAGEW)* LPCPROPSHEETPAGEW; 250 251mixin DECLARE_HANDLE!("HPROPSHEETPAGE"); 252 253struct PROPSHEETHEADERA { 254 DWORD dwSize = PROPSHEETHEADERA.sizeof; 255 DWORD dwFlags; 256 HWND hwndParent; 257 HINSTANCE hInstance; 258 union { 259 HICON hIcon; 260 LPCSTR pszIcon; 261 } 262 LPCSTR pszCaption; 263 UINT nPages; 264 union { 265 UINT nStartPage; 266 LPCSTR pStartPage; 267 } 268 union { 269 LPCPROPSHEETPAGEA ppsp; 270 HPROPSHEETPAGE* phpage; 271 } 272 PFNPROPSHEETCALLBACK pfnCallback; 273 static if (_WIN32_IE >= 0x400) { 274 union { 275 HBITMAP hbmWatermark; 276 LPCSTR pszbmWatermark; 277 } 278 HPALETTE hplWatermark; 279 union { 280 HBITMAP hbmHeader; 281 LPCSTR pszbmHeader; 282 } 283 } 284} 285alias PROPSHEETHEADERA* LPPROPSHEETHEADERA; 286alias const(PROPSHEETHEADERA)* LPCPROPSHEETHEADERA; 287 288struct PROPSHEETHEADERW { 289 DWORD dwSize = PROPSHEETHEADERW.sizeof; 290 DWORD dwFlags; 291 HWND hwndParent; 292 HINSTANCE hInstance; 293 union { 294 HICON hIcon; 295 LPCWSTR pszIcon; 296 } 297 LPCWSTR pszCaption; 298 UINT nPages; 299 union { 300 UINT nStartPage; 301 LPCWSTR pStartPage; 302 } 303 union { 304 LPCPROPSHEETPAGEW ppsp; 305 HPROPSHEETPAGE* phpage; 306 } 307 PFNPROPSHEETCALLBACK pfnCallback; 308 static if (_WIN32_IE >= 0x400) { 309 union { 310 HBITMAP hbmWatermark; 311 LPCWSTR pszbmWatermark; 312 } 313 HPALETTE hplWatermark; 314 union { 315 HBITMAP hbmHeader; 316 LPCWSTR pszbmHeader; 317 } 318 } 319} 320alias PROPSHEETHEADERW* LPPROPSHEETHEADERW; 321alias const(PROPSHEETHEADERW)* LPCPROPSHEETHEADERW; 322 323extern (Windows) { 324 alias BOOL function(HPROPSHEETPAGE, LPARAM) LPFNADDPROPSHEETPAGE; 325 alias BOOL function(LPVOID, LPFNADDPROPSHEETPAGE, LPARAM) 326 LPFNADDPROPSHEETPAGES; 327} 328 329struct PSHNOTIFY { 330 NMHDR hdr; 331 LPARAM lParam; 332} 333alias PSHNOTIFY* LPPSHNOTIFY; 334 335extern (Windows) { 336 HPROPSHEETPAGE CreatePropertySheetPageA(LPCPROPSHEETPAGEA); 337 HPROPSHEETPAGE CreatePropertySheetPageW(LPCPROPSHEETPAGEW); 338 BOOL DestroyPropertySheetPage(HPROPSHEETPAGE); 339 INT_PTR PropertySheetA(LPCPROPSHEETHEADERA); 340 INT_PTR PropertySheetW(LPCPROPSHEETHEADERW); 341} 342 343version (Unicode) { 344 alias LPFNPSPCALLBACKW LPFNPSPCALLBACK; 345 alias PROPSHEETPAGEW PROPSHEETPAGE; 346 alias LPPROPSHEETPAGEW LPPROPSHEETPAGE; 347 alias LPCPROPSHEETPAGEW LPCPROPSHEETPAGE; 348 alias PROPSHEETHEADERW PROPSHEETHEADER; 349 alias LPPROPSHEETHEADERW LPPROPSHEETHEADER; 350 alias LPCPROPSHEETHEADERW LPCPROPSHEETHEADER; 351 alias PSM_SETTITLEW PSM_SETTITLE; 352 alias PSM_SETFINISHTEXTW PSM_SETFINISHTEXT; 353 alias CreatePropertySheetPageW CreatePropertySheetPage; 354 alias PropertySheetW PropertySheet; 355} else { 356 alias LPFNPSPCALLBACKA LPFNPSPCALLBACK; 357 alias PROPSHEETPAGEA PROPSHEETPAGE; 358 alias LPPROPSHEETPAGEA LPPROPSHEETPAGE; 359 alias LPCPROPSHEETPAGEA LPCPROPSHEETPAGE; 360 alias PROPSHEETHEADERA PROPSHEETHEADER; 361 alias LPPROPSHEETHEADERA LPPROPSHEETHEADER; 362 alias LPCPROPSHEETHEADERA LPCPROPSHEETHEADER; 363 alias PSM_SETTITLEA PSM_SETTITLE; 364 alias PSM_SETFINISHTEXTA PSM_SETFINISHTEXT; 365 alias CreatePropertySheetPageA CreatePropertySheetPage; 366 alias PropertySheetA PropertySheet; 367} 368 369BOOL PropSheet_SetCurSel(HWND hPropSheetDlg, HPROPSHEETPAGE hpage, 370 HPROPSHEETPAGE index) { 371 return cast(BOOL) SendMessage(hPropSheetDlg, PSM_SETCURSEL, 372 cast(WPARAM) index, cast(LPARAM) hpage); 373} 374 375VOID PropSheet_RemovePage(HWND hPropSheetDlg, int index, HPROPSHEETPAGE hpage) { 376 SendMessage(hPropSheetDlg, PSM_REMOVEPAGE, index, cast(LPARAM) hpage); 377} 378 379BOOL PropSheet_AddPage(HWND hPropSheetDlg, HPROPSHEETPAGE hpage) { 380 return cast(BOOL) SendMessage(hPropSheetDlg, PSM_ADDPAGE, 381 0, cast(LPARAM) hpage); 382} 383 384VOID PropSheet_Changed(HWND hPropSheetDlg, HWND hwndPage) { 385 SendMessage(hPropSheetDlg, PSM_CHANGED, cast(WPARAM) hwndPage, 0); 386} 387 388VOID PropSheet_RestartWindows(HWND hPropSheetDlg) { 389 SendMessage(hPropSheetDlg, PSM_RESTARTWINDOWS, 0, 0); 390} 391 392VOID PropSheet_RebootSystem(HWND hPropSheetDlg) { 393 SendMessage(hPropSheetDlg, PSM_REBOOTSYSTEM, 0, 0); 394} 395 396VOID PropSheet_CancelToClose(HWND hPropSheetDlg) { 397 SendMessage(hPropSheetDlg, PSM_CANCELTOCLOSE, 0, 0); 398} 399 400int PropSheet_QuerySiblings(HWND hPropSheetDlg, WPARAM param1, LPARAM param2) { 401 return cast(int) SendMessage(hPropSheetDlg, PSM_QUERYSIBLINGS, param1, param2); 402} 403 404VOID PropSheet_UnChanged(HWND hPropSheetDlg, HWND hwndPage) { 405 SendMessage(hPropSheetDlg, PSM_UNCHANGED, cast(WPARAM) hwndPage, 0); 406} 407 408BOOL PropSheet_Apply(HWND hPropSheetDlg) { 409 return cast(BOOL) SendMessage(hPropSheetDlg, PSM_APPLY, 0, 0); 410} 411 412VOID PropSheet_SetTitle(HWND hPropSheetDlg, DWORD wStyle, LPTSTR lpszText) { 413 SendMessage(hPropSheetDlg, PSM_SETTITLE, wStyle, cast(LPARAM) lpszText); 414} 415 416VOID PropSheet_SetWizButtons(HWND hPropSheetDlg, DWORD dwFlags) { 417 PostMessage(hPropSheetDlg, PSM_SETWIZBUTTONS, 0, cast(LPARAM) dwFlags); 418} 419 420BOOL PropSheet_PressButton(HWND hPropSheetDlg, int iButton) { 421 return cast(BOOL) SendMessage(hPropSheetDlg, PSM_PRESSBUTTON, iButton, 0); 422} 423 424BOOL PropSheet_SetCurSelByID(HWND hPropSheetDlg, int id) { 425 return cast(BOOL) SendMessage(hPropSheetDlg, PSM_SETCURSELID, 0, id); 426} 427 428VOID PropSheet_SetFinishText(HWND hPropSheetDlg, LPTSTR lpszText) { 429 SendMessage(hPropSheetDlg, PSM_SETFINISHTEXT, 0, cast(LPARAM) lpszText); 430} 431 432HWND PropSheet_GetTabControl(HWND hPropSheetDlg) { 433 return cast(HWND) SendMessage(hPropSheetDlg, PSM_GETTABCONTROL, 0, 0); 434} 435 436BOOL PropSheet_IsDialogMessage(HWND hDlg, LPMSG pMsg) { 437 return cast(BOOL) SendMessage(hDlg, PSM_ISDIALOGMESSAGE, 438 0, cast(LPARAM) pMsg); 439} 440 441HWND PropSheet_GetCurrentPageHwnd(HWND hDlg) { 442 return cast(HWND) SendMessage(hDlg, PSM_GETCURRENTPAGEHWND, 0, 0); 443} 444 445BOOL PropSheet_InsertPage(HWND hPropSheetDlg, WPARAM wInsertAfter, 446 HPROPSHEETPAGE hpage) { 447 return cast(BOOL) SendMessage(hPropSheetDlg, PSM_INSERTPAGE, 448 wInsertAfter, cast(LPARAM) hpage); 449} 450