blob: efea4f254c43b5bd98248b5de20ea011e00ca59a [file] [log] [blame]
/**
* 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 src/core/sys/windows/_prsht.d)
*/
module core.sys.windows.prsht;
version (Windows):
@system:
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 UINT function(HWND, UINT, LPPROPSHEETPAGEA) LPFNPSPCALLBACKA;
alias UINT function(HWND, UINT, LPPROPSHEETPAGEW) LPFNPSPCALLBACKW;
alias int function(HWND, UINT, LPARAM) PFNPROPSHEETCALLBACK;
}
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 PROPSHEETPAGEA* LPPROPSHEETPAGEA;
alias const(PROPSHEETPAGEA)* LPCPROPSHEETPAGEA;
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 PROPSHEETPAGEW* LPPROPSHEETPAGEW;
alias const(PROPSHEETPAGEW)* LPCPROPSHEETPAGEW;
mixin DECLARE_HANDLE!("HPROPSHEETPAGE");
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 PROPSHEETHEADERA* LPPROPSHEETHEADERA;
alias const(PROPSHEETHEADERA)* LPCPROPSHEETHEADERA;
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 PROPSHEETHEADERW* LPPROPSHEETHEADERW;
alias const(PROPSHEETHEADERW)* LPCPROPSHEETHEADERW;
extern (Windows) {
alias BOOL function(HPROPSHEETPAGE, LPARAM) LPFNADDPROPSHEETPAGE;
alias BOOL function(LPVOID, LPFNADDPROPSHEETPAGE, LPARAM)
LPFNADDPROPSHEETPAGES;
}
struct PSHNOTIFY {
NMHDR hdr;
LPARAM lParam;
}
alias PSHNOTIFY* LPPSHNOTIFY;
extern (Windows) {
HPROPSHEETPAGE CreatePropertySheetPageA(LPCPROPSHEETPAGEA);
HPROPSHEETPAGE CreatePropertySheetPageW(LPCPROPSHEETPAGEW);
BOOL DestroyPropertySheetPage(HPROPSHEETPAGE);
INT_PTR PropertySheetA(LPCPROPSHEETHEADERA);
INT_PTR PropertySheetW(LPCPROPSHEETHEADERW);
}
version (Unicode) {
alias LPFNPSPCALLBACKW LPFNPSPCALLBACK;
alias PROPSHEETPAGEW PROPSHEETPAGE;
alias LPPROPSHEETPAGEW LPPROPSHEETPAGE;
alias LPCPROPSHEETPAGEW LPCPROPSHEETPAGE;
alias PROPSHEETHEADERW PROPSHEETHEADER;
alias LPPROPSHEETHEADERW LPPROPSHEETHEADER;
alias LPCPROPSHEETHEADERW LPCPROPSHEETHEADER;
alias PSM_SETTITLEW PSM_SETTITLE;
alias PSM_SETFINISHTEXTW PSM_SETFINISHTEXT;
alias CreatePropertySheetPageW CreatePropertySheetPage;
alias PropertySheetW PropertySheet;
} else {
alias LPFNPSPCALLBACKA LPFNPSPCALLBACK;
alias PROPSHEETPAGEA PROPSHEETPAGE;
alias LPPROPSHEETPAGEA LPPROPSHEETPAGE;
alias LPCPROPSHEETPAGEA LPCPROPSHEETPAGE;
alias PROPSHEETHEADERA PROPSHEETHEADER;
alias LPPROPSHEETHEADERA LPPROPSHEETHEADER;
alias LPCPROPSHEETHEADERA LPCPROPSHEETHEADER;
alias PSM_SETTITLEA PSM_SETTITLE;
alias PSM_SETFINISHTEXTA PSM_SETFINISHTEXT;
alias CreatePropertySheetPageA CreatePropertySheetPage;
alias PropertySheetA PropertySheet;
}
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);
}