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