| /** | |
| * Windows API header module | |
| * | |
| * Translated from MinGW Windows headers | |
| * | |
| * Authors: Vladimir Vlasov | |
| * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) | |
| * Source: $(DRUNTIMESRC core/sys/windows/_prsht.d) | |
| */ | |
| module core.sys.windows.prsht; | |
| version (Windows): | |
| version (ANSI) {} else version = Unicode; | |
| pragma(lib, "comctl32"); | |
| import core.sys.windows.w32api, core.sys.windows.windef, core.sys.windows.winuser; | |
| enum MAXPROPPAGES = 100; | |
| enum { | |
| PSP_DEFAULT = 0x00000000, | |
| PSP_DLGINDIRECT = 0x00000001, | |
| PSP_USEHICON = 0x00000002, | |
| PSP_USEICONID = 0x00000004, | |
| PSP_USETITLE = 0x00000008, | |
| PSP_RTLREADING = 0x00000010, | |
| PSP_HASHELP = 0x00000020, | |
| PSP_USEREFPARENT = 0x00000040, | |
| PSP_USECALLBACK = 0x00000080, | |
| PSP_PREMATURE = 0x00000400 | |
| } | |
| static if (_WIN32_IE >= 0x400) { | |
| enum { | |
| PSP_HIDEHEADER = 0x00000800, | |
| PSP_USEHEADERTITLE = 0x00001000, | |
| PSP_USEHEADERSUBTITLE = 0x00002000 | |
| } | |
| } | |
| enum { | |
| PSPCB_RELEASE = 1, | |
| PSPCB_CREATE | |
| } | |
| enum { | |
| PSH_DEFAULT = 0x00000000, | |
| PSH_PROPTITLE = 0x00000001, | |
| PSH_USEHICON = 0x00000002, | |
| PSH_USEICONID = 0x00000004, | |
| PSH_PROPSHEETPAGE = 0x00000008, | |
| PSH_WIZARDHASFINISH = 0x00000010, | |
| PSH_WIZARD = 0x00000020, | |
| PSH_USEPSTARTPAGE = 0x00000040, | |
| PSH_NOAPPLYNOW = 0x00000080, | |
| PSH_USECALLBACK = 0x00000100, | |
| PSH_HASHELP = 0x00000200, | |
| PSH_MODELESS = 0x00000400, | |
| PSH_RTLREADING = 0x00000800, | |
| PSH_WIZARDCONTEXTHELP = 0x00001000 | |
| } | |
| static if (_WIN32_IE >= 0x400) { | |
| enum { | |
| PSH_WATERMARK = 0x00008000, | |
| PSH_USEHBMWATERMARK = 0x00010000, | |
| PSH_USEHPLWATERMARK = 0x00020000, | |
| PSH_STRETCHWATERMARK = 0x00040000, | |
| PSH_HEADER = 0x00080000, | |
| PSH_USEHBMHEADER = 0x00100000, | |
| PSH_USEPAGELANG = 0x00200000 | |
| } | |
| static if (_WIN32_IE < 0x0500) { | |
| enum { | |
| PSH_WIZARD97 = 0x00002000 | |
| } | |
| } else { | |
| enum { | |
| PSH_WIZARD97 = 0x01000000 | |
| } | |
| } | |
| } | |
| static if (_WIN32_IE >= 0x500) { | |
| enum { | |
| PSH_WIZARD_LITE = 0x00400000, | |
| PSH_NOCONTEXTHELP = 0x02000000 | |
| } | |
| } | |
| enum { | |
| PSCB_INITIALIZED = 1, | |
| PSCB_PRECREATE | |
| } | |
| enum { | |
| PSN_FIRST = (-200), | |
| PSN_LAST = (-299), | |
| PSN_SETACTIVE = (-200), | |
| PSN_KILLACTIVE = (-201), | |
| PSN_APPLY = (-202), | |
| PSN_RESET = (-203), | |
| PSN_HELP = (-205), | |
| PSN_WIZBACK = (-206), | |
| PSN_WIZNEXT = (-207), | |
| PSN_WIZFINISH = (-208), | |
| PSN_QUERYCANCEL = (-209) | |
| } | |
| static if (_WIN32_IE >= 0x400) { | |
| enum { | |
| PSN_GETOBJECT = (-210) | |
| } | |
| } | |
| static if (_WIN32_IE >= 0x500) { | |
| enum { | |
| PSN_TRANSLATEACCELERATOR = (-212), | |
| PSN_QUERYINITIALFOCUS = (-213) | |
| } | |
| } | |
| enum { | |
| PSNRET_NOERROR, | |
| PSNRET_INVALID, | |
| PSNRET_INVALID_NOCHANGEPAGE, | |
| PSNRET_MESSAGEHANDLED | |
| } | |
| enum { | |
| ID_PSRESTARTWINDOWS = 0x2, | |
| ID_PSREBOOTSYSTEM = ID_PSRESTARTWINDOWS | 0x1 | |
| } | |
| enum { | |
| WIZ_CXDLG = 276, | |
| WIZ_CYDLG = 140, | |
| WIZ_CXBMP = 80, | |
| WIZ_BODYX = 92, | |
| WIZ_BODYCX = 184 | |
| } | |
| enum { | |
| PROP_SM_CXDLG = 212, | |
| PROP_SM_CYDLG = 188, | |
| PROP_MED_CXDLG = 227, | |
| PROP_MED_CYDLG = 215, | |
| PROP_LG_CXDLG = 252, | |
| PROP_LG_CYDLG = 218 | |
| } | |
| enum { | |
| PSBTN_BACK, | |
| PSBTN_NEXT, | |
| PSBTN_FINISH, | |
| PSBTN_OK, | |
| PSBTN_APPLYNOW, | |
| PSBTN_CANCEL, | |
| PSBTN_HELP, | |
| PSBTN_MAX = 6 | |
| } | |
| enum { | |
| PSWIZB_BACK = 1, | |
| PSWIZB_NEXT = 2, | |
| PSWIZB_FINISH = 4, | |
| PSWIZB_DISABLEDFINISH = 8 | |
| } | |
| enum { | |
| PSM_SETCURSEL = WM_USER + 101, | |
| PSM_REMOVEPAGE, | |
| PSM_ADDPAGE, | |
| PSM_CHANGED, | |
| PSM_RESTARTWINDOWS, | |
| PSM_REBOOTSYSTEM, | |
| PSM_CANCELTOCLOSE, | |
| PSM_QUERYSIBLINGS, | |
| PSM_UNCHANGED, | |
| PSM_APPLY, | |
| PSM_SETTITLEA, | |
| PSM_SETWIZBUTTONS, | |
| PSM_PRESSBUTTON, | |
| PSM_SETCURSELID, | |
| PSM_SETFINISHTEXTA, | |
| PSM_GETTABCONTROL, | |
| PSM_ISDIALOGMESSAGE, | |
| PSM_GETCURRENTPAGEHWND, | |
| PSM_INSERTPAGE, | |
| PSM_SETTITLEW, | |
| PSM_SETFINISHTEXTW // = WM_USER + 121, | |
| } | |
| extern (Windows) { | |
| alias LPFNPSPCALLBACKA = UINT function(HWND, UINT, LPPROPSHEETPAGEA); | |
| alias LPFNPSPCALLBACKW = UINT function(HWND, UINT, LPPROPSHEETPAGEW); | |
| alias PFNPROPSHEETCALLBACK = int function(HWND, UINT, LPARAM); | |
| } | |
| align(4): | |
| struct PROPSHEETPAGEA { | |
| DWORD dwSize = PROPSHEETPAGEA.sizeof; | |
| DWORD dwFlags; | |
| HINSTANCE hInstance; | |
| union { | |
| LPCSTR pszTemplate; | |
| LPCDLGTEMPLATE pResource; | |
| } | |
| union { | |
| HICON hIcon; | |
| LPCSTR pszIcon; | |
| } | |
| LPCSTR pszTitle; | |
| DLGPROC pfnDlgProc; | |
| LPARAM lParam; | |
| LPFNPSPCALLBACKA pfnCallback; | |
| UINT* pcRefParent; | |
| static if (_WIN32_IE >= 0x400) { | |
| LPCSTR pszHeaderTitle; | |
| LPCSTR pszHeaderSubTitle; | |
| } | |
| } | |
| alias LPPROPSHEETPAGEA = PROPSHEETPAGEA*; | |
| alias LPCPROPSHEETPAGEA = const(PROPSHEETPAGEA)*; | |
| struct PROPSHEETPAGEW { | |
| DWORD dwSize = PROPSHEETPAGEW.sizeof; | |
| DWORD dwFlags; | |
| HINSTANCE hInstance; | |
| union { | |
| LPCWSTR pszTemplate; | |
| LPCDLGTEMPLATE pResource; | |
| } | |
| union { | |
| HICON hIcon; | |
| LPCWSTR pszIcon; | |
| } | |
| LPCWSTR pszTitle; | |
| DLGPROC pfnDlgProc; | |
| LPARAM lParam; | |
| LPFNPSPCALLBACKW pfnCallback; | |
| UINT* pcRefParent; | |
| static if (_WIN32_IE >= 0x400) { | |
| LPCWSTR pszHeaderTitle; | |
| LPCWSTR pszHeaderSubTitle; | |
| } | |
| } | |
| alias LPPROPSHEETPAGEW = PROPSHEETPAGEW*; | |
| alias LPCPROPSHEETPAGEW = const(PROPSHEETPAGEW)*; | |
| alias HPROPSHEETPAGE = HANDLE; | |
| struct PROPSHEETHEADERA { | |
| DWORD dwSize = PROPSHEETHEADERA.sizeof; | |
| DWORD dwFlags; | |
| HWND hwndParent; | |
| HINSTANCE hInstance; | |
| union { | |
| HICON hIcon; | |
| LPCSTR pszIcon; | |
| } | |
| LPCSTR pszCaption; | |
| UINT nPages; | |
| union { | |
| UINT nStartPage; | |
| LPCSTR pStartPage; | |
| } | |
| union { | |
| LPCPROPSHEETPAGEA ppsp; | |
| HPROPSHEETPAGE* phpage; | |
| } | |
| PFNPROPSHEETCALLBACK pfnCallback; | |
| static if (_WIN32_IE >= 0x400) { | |
| union { | |
| HBITMAP hbmWatermark; | |
| LPCSTR pszbmWatermark; | |
| } | |
| HPALETTE hplWatermark; | |
| union { | |
| HBITMAP hbmHeader; | |
| LPCSTR pszbmHeader; | |
| } | |
| } | |
| } | |
| alias LPPROPSHEETHEADERA = PROPSHEETHEADERA*; | |
| alias LPCPROPSHEETHEADERA = const(PROPSHEETHEADERA)*; | |
| struct PROPSHEETHEADERW { | |
| DWORD dwSize = PROPSHEETHEADERW.sizeof; | |
| DWORD dwFlags; | |
| HWND hwndParent; | |
| HINSTANCE hInstance; | |
| union { | |
| HICON hIcon; | |
| LPCWSTR pszIcon; | |
| } | |
| LPCWSTR pszCaption; | |
| UINT nPages; | |
| union { | |
| UINT nStartPage; | |
| LPCWSTR pStartPage; | |
| } | |
| union { | |
| LPCPROPSHEETPAGEW ppsp; | |
| HPROPSHEETPAGE* phpage; | |
| } | |
| PFNPROPSHEETCALLBACK pfnCallback; | |
| static if (_WIN32_IE >= 0x400) { | |
| union { | |
| HBITMAP hbmWatermark; | |
| LPCWSTR pszbmWatermark; | |
| } | |
| HPALETTE hplWatermark; | |
| union { | |
| HBITMAP hbmHeader; | |
| LPCWSTR pszbmHeader; | |
| } | |
| } | |
| } | |
| alias LPPROPSHEETHEADERW = PROPSHEETHEADERW*; | |
| alias LPCPROPSHEETHEADERW = const(PROPSHEETHEADERW)*; | |
| extern (Windows) { | |
| alias LPFNADDPROPSHEETPAGE = BOOL function(HPROPSHEETPAGE, LPARAM); | |
| alias LPFNADDPROPSHEETPAGES = BOOL function(LPVOID, LPFNADDPROPSHEETPAGE, LPARAM); | |
| } | |
| struct PSHNOTIFY { | |
| NMHDR hdr; | |
| LPARAM lParam; | |
| } | |
| alias LPPSHNOTIFY = PSHNOTIFY*; | |
| extern (Windows) nothrow @nogc { | |
| HPROPSHEETPAGE CreatePropertySheetPageA(LPCPROPSHEETPAGEA); | |
| HPROPSHEETPAGE CreatePropertySheetPageW(LPCPROPSHEETPAGEW); | |
| BOOL DestroyPropertySheetPage(HPROPSHEETPAGE); | |
| INT_PTR PropertySheetA(LPCPROPSHEETHEADERA); | |
| INT_PTR PropertySheetW(LPCPROPSHEETHEADERW); | |
| } | |
| version (Unicode) { | |
| alias LPFNPSPCALLBACK = LPFNPSPCALLBACKW; | |
| alias PROPSHEETPAGE = PROPSHEETPAGEW; | |
| alias LPPROPSHEETPAGE = LPPROPSHEETPAGEW; | |
| alias LPCPROPSHEETPAGE = LPCPROPSHEETPAGEW; | |
| alias PROPSHEETHEADER = PROPSHEETHEADERW; | |
| alias LPPROPSHEETHEADER = LPPROPSHEETHEADERW; | |
| alias LPCPROPSHEETHEADER = LPCPROPSHEETHEADERW; | |
| alias PSM_SETTITLE = PSM_SETTITLEW; | |
| alias PSM_SETFINISHTEXT = PSM_SETFINISHTEXTW; | |
| alias CreatePropertySheetPage = CreatePropertySheetPageW; | |
| alias PropertySheet = PropertySheetW; | |
| } else { | |
| alias LPFNPSPCALLBACK = LPFNPSPCALLBACKA; | |
| alias PROPSHEETPAGE = PROPSHEETPAGEA; | |
| alias LPPROPSHEETPAGE = LPPROPSHEETPAGEA; | |
| alias LPCPROPSHEETPAGE = LPCPROPSHEETPAGEA; | |
| alias PROPSHEETHEADER = PROPSHEETHEADERA; | |
| alias LPPROPSHEETHEADER = LPPROPSHEETHEADERA; | |
| alias LPCPROPSHEETHEADER = LPCPROPSHEETHEADERA; | |
| alias PSM_SETTITLE = PSM_SETTITLEA; | |
| alias PSM_SETFINISHTEXT = PSM_SETFINISHTEXTA; | |
| alias CreatePropertySheetPage = CreatePropertySheetPageA; | |
| alias PropertySheet = PropertySheetA; | |
| } | |
| BOOL PropSheet_SetCurSel(HWND hPropSheetDlg, HPROPSHEETPAGE hpage, | |
| HPROPSHEETPAGE index) { | |
| return cast(BOOL) SendMessage(hPropSheetDlg, PSM_SETCURSEL, | |
| cast(WPARAM) index, cast(LPARAM) hpage); | |
| } | |
| VOID PropSheet_RemovePage(HWND hPropSheetDlg, int index, HPROPSHEETPAGE hpage) { | |
| SendMessage(hPropSheetDlg, PSM_REMOVEPAGE, index, cast(LPARAM) hpage); | |
| } | |
| BOOL PropSheet_AddPage(HWND hPropSheetDlg, HPROPSHEETPAGE hpage) { | |
| return cast(BOOL) SendMessage(hPropSheetDlg, PSM_ADDPAGE, | |
| 0, cast(LPARAM) hpage); | |
| } | |
| VOID PropSheet_Changed(HWND hPropSheetDlg, HWND hwndPage) { | |
| SendMessage(hPropSheetDlg, PSM_CHANGED, cast(WPARAM) hwndPage, 0); | |
| } | |
| VOID PropSheet_RestartWindows(HWND hPropSheetDlg) { | |
| SendMessage(hPropSheetDlg, PSM_RESTARTWINDOWS, 0, 0); | |
| } | |
| VOID PropSheet_RebootSystem(HWND hPropSheetDlg) { | |
| SendMessage(hPropSheetDlg, PSM_REBOOTSYSTEM, 0, 0); | |
| } | |
| VOID PropSheet_CancelToClose(HWND hPropSheetDlg) { | |
| SendMessage(hPropSheetDlg, PSM_CANCELTOCLOSE, 0, 0); | |
| } | |
| int PropSheet_QuerySiblings(HWND hPropSheetDlg, WPARAM param1, LPARAM param2) { | |
| return cast(int) SendMessage(hPropSheetDlg, PSM_QUERYSIBLINGS, param1, param2); | |
| } | |
| VOID PropSheet_UnChanged(HWND hPropSheetDlg, HWND hwndPage) { | |
| SendMessage(hPropSheetDlg, PSM_UNCHANGED, cast(WPARAM) hwndPage, 0); | |
| } | |
| BOOL PropSheet_Apply(HWND hPropSheetDlg) { | |
| return cast(BOOL) SendMessage(hPropSheetDlg, PSM_APPLY, 0, 0); | |
| } | |
| VOID PropSheet_SetTitle(HWND hPropSheetDlg, DWORD wStyle, LPTSTR lpszText) { | |
| SendMessage(hPropSheetDlg, PSM_SETTITLE, wStyle, cast(LPARAM) lpszText); | |
| } | |
| VOID PropSheet_SetWizButtons(HWND hPropSheetDlg, DWORD dwFlags) { | |
| PostMessage(hPropSheetDlg, PSM_SETWIZBUTTONS, 0, cast(LPARAM) dwFlags); | |
| } | |
| BOOL PropSheet_PressButton(HWND hPropSheetDlg, int iButton) { | |
| return cast(BOOL) SendMessage(hPropSheetDlg, PSM_PRESSBUTTON, iButton, 0); | |
| } | |
| BOOL PropSheet_SetCurSelByID(HWND hPropSheetDlg, int id) { | |
| return cast(BOOL) SendMessage(hPropSheetDlg, PSM_SETCURSELID, 0, id); | |
| } | |
| VOID PropSheet_SetFinishText(HWND hPropSheetDlg, LPTSTR lpszText) { | |
| SendMessage(hPropSheetDlg, PSM_SETFINISHTEXT, 0, cast(LPARAM) lpszText); | |
| } | |
| HWND PropSheet_GetTabControl(HWND hPropSheetDlg) { | |
| return cast(HWND) SendMessage(hPropSheetDlg, PSM_GETTABCONTROL, 0, 0); | |
| } | |
| BOOL PropSheet_IsDialogMessage(HWND hDlg, LPMSG pMsg) { | |
| return cast(BOOL) SendMessage(hDlg, PSM_ISDIALOGMESSAGE, | |
| 0, cast(LPARAM) pMsg); | |
| } | |
| HWND PropSheet_GetCurrentPageHwnd(HWND hDlg) { | |
| return cast(HWND) SendMessage(hDlg, PSM_GETCURRENTPAGEHWND, 0, 0); | |
| } | |
| BOOL PropSheet_InsertPage(HWND hPropSheetDlg, WPARAM wInsertAfter, | |
| HPROPSHEETPAGE hpage) { | |
| return cast(BOOL) SendMessage(hPropSheetDlg, PSM_INSERTPAGE, | |
| wInsertAfter, cast(LPARAM) hpage); | |
| } |