{******************************************************************************} { } { Property Sheet Pages API interface Unit for Object Pascal } { } { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft } { Corporation. All Rights Reserved. } { } { The original file is: prsht.h, released June 2000. The original Pascal } { code is: PrSht.pas, released December 2000. The initial developer of the } { Pascal code is Marcel van Brakel (brakelm att chello dott nl). } { } { Portions created by Marcel van Brakel are Copyright (C) 1999-2001 } { Marcel van Brakel. All Rights Reserved. } { } { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) } { } { You may retrieve the latest version of this file at the Project JEDI } { APILIB home page, located at http://jedi-apilib.sourceforge.net } { } { The contents of this file are used with permission, subject to the Mozilla } { Public License Version 1.1 (the "License"); you may not use this file except } { in compliance with the License. You may obtain a copy of the License at } { http://www.mozilla.org/MPL/MPL-1.1.html } { } { Software distributed under the License is distributed on an "AS IS" basis, } { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for } { the specific language governing rights and limitations under the License. } { } { Alternatively, the contents of this file may be used under the terms of the } { GNU Lesser General Public License (the "LGPL License"), in which case the } { provisions of the LGPL License are applicable instead of those above. } { If you wish to allow use of your version of this file only under the terms } { of the LGPL License and not to allow others to use your version of this file } { under the MPL, indicate your decision by deleting the provisions above and } { replace them with the notice and other provisions required by the LGPL } { License. If you do not delete the provisions above, a recipient may use } { your version of this file under either the MPL or the LGPL License. } { } { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html } { } {******************************************************************************} // $Id: JwaPrSht.pas,v 1.12 2005/09/06 16:36:50 marquardt Exp $ unit JwaPrSht; {$WEAKPACKAGEUNIT} {$I jediapilib.inc} interface uses JwaWindows; {$HPPEMIT ''} {$HPPEMIT '#include "ntdsapi.h"'} {$HPPEMIT ''} {$HPPEMIT 'typedef PHPROPSHEETPAGE *HPROPSHEETPAGE'} {$HPPEMIT ''} //#ifndef CCSIZEOF_STRUCT //#define CCSIZEOF_STRUCT(structname, member) (((int)((LPBYTE)(&((structname*)0)->member) - ((LPBYTE)((structname*)0)))) + sizeof(((structname*)0)->member)) //#endif // // For compilers that don't support nameless unions // const MAXPROPPAGES = 100; {$EXTERNALSYM MAXPROPPAGES} type HPROPSHEETPAGE = Pointer; {$EXTERNALSYM HPROPSHEETPAGE} PHPROPSHEETPAGE = ^HPROPSHEETPAGE; {$NODEFINE PHPROPSHEETPAGE} LPFNPSPCALLBACKA = function(hwnd: HWND; uMsg: UINT; ppsp: Pointer{LPPROPSHEETPAGEA}): UINT; stdcall; {$EXTERNALSYM LPFNPSPCALLBACKA} LPFNPSPCALLBACKW = function(hwnd: HWND; uMsg: UINT; ppsp: Pointer{LPPROPSHEETPAGEW}): UINT; stdcall; {$EXTERNALSYM LPFNPSPCALLBACKW} {$IFDEF UNICODE} LPFNPSPCALLBACK = function(hwnd: HWND; uMsg: UINT; ppsp: Pointer{LPPROPSHEETPAGEW}): UINT; stdcall; {$EXTERNALSYM LPFNPSPCALLBACK} {$ELSE} LPFNPSPCALLBACK = function(hwnd: HWND; uMsg: UINT; ppsp: Pointer{LPPROPSHEETPAGEA}): UINT; stdcall; {$EXTERNALSYM LPFNPSPCALLBACK} {$ENDIF UNICODE} const PSP_DEFAULT = $00000000; {$EXTERNALSYM PSP_DEFAULT} PSP_DLGINDIRECT = $00000001; {$EXTERNALSYM PSP_DLGINDIRECT} PSP_USEHICON = $00000002; {$EXTERNALSYM PSP_USEHICON} PSP_USEICONID = $00000004; {$EXTERNALSYM PSP_USEICONID} PSP_USETITLE = $00000008; {$EXTERNALSYM PSP_USETITLE} PSP_RTLREADING = $00000010; {$EXTERNALSYM PSP_RTLREADING} PSP_HASHELP = $00000020; {$EXTERNALSYM PSP_HASHELP} PSP_USEREFPARENT = $00000040; {$EXTERNALSYM PSP_USEREFPARENT} PSP_USECALLBACK = $00000080; {$EXTERNALSYM PSP_USECALLBACK} PSP_PREMATURE = $00000400; {$EXTERNALSYM PSP_PREMATURE} //----- New flags for wizard97 -------------- PSP_HIDEHEADER = $00000800; {$EXTERNALSYM PSP_HIDEHEADER} PSP_USEHEADERTITLE = $00001000; {$EXTERNALSYM PSP_USEHEADERTITLE} PSP_USEHEADERSUBTITLE = $00002000; {$EXTERNALSYM PSP_USEHEADERSUBTITLE} //------------------------------------------- PSPCB_ADDREF = 0; {$EXTERNALSYM PSPCB_ADDREF} PSPCB_RELEASE = 1; {$EXTERNALSYM PSPCB_RELEASE} PSPCB_CREATE = 2; {$EXTERNALSYM PSPCB_CREATE} //#define PROPSHEETPAGEA_V1_SIZE CCSIZEOF_STRUCT(PROPSHEETPAGEA, pcRefParent) //#define PROPSHEETPAGEW_V1_SIZE CCSIZEOF_STRUCT(PROPSHEETPAGEW, pcRefParent) type _PROPSHEETPAGEA = record dwSize: DWORD; dwFlags: DWORD; hInstance: HINST; u: record case Integer of 0: (pszTemplate: LPCSTR); 1: (pResource: LPCDLGTEMPLATE); end; u2: record case Integer of 0: (hIcon: HICON); 1: (pszIcon: LPCSTR); end; pszTitle: LPCSTR; pfnDlgProc: DLGPROC; lParam: LPARAM; pfnCallback: LPFNPSPCALLBACKA; pcRefParent: LPUINT; {$IFDEF IE400_UP} pszHeaderTitle: LPCSTR; // this is displayed in the header pszHeaderSubTitle: LPCSTR; // {$ENDIF IE400_UP} end; {$EXTERNALSYM _PROPSHEETPAGEA} PROPSHEETPAGEA = _PROPSHEETPAGEA; {$EXTERNALSYM PROPSHEETPAGEA} LPPROPSHEETPAGEA = ^PROPSHEETPAGEA; {$EXTERNALSYM LPPROPSHEETPAGEA} LPCPROPSHEETPAGEA = LPPROPSHEETPAGEA; {$EXTERNALSYM LPCPROPSHEETPAGEA} TPropSheetPageA = PROPSHEETPAGEA; PPropSheetPageA = LPPROPSHEETPAGEA; _PROPSHEETPAGEW = record dwSize: DWORD; dwFlags: DWORD; hInstance: HINST; u: record case Integer of 0: (pszTemplate: LPCWSTR); 1: (pResource: LPCDLGTEMPLATE); end; u2: record case Integer of 0: (hIcon: HICON); 1: (pszIcon: LPCWSTR); end; pszTitle: LPCWSTR; pfnDlgProc: DLGPROC; lParam: LPARAM; pfnCallback: LPFNPSPCALLBACKW; pcRefParent: LPUINT; {$IFDEF IE400_UP} pszHeaderTitle: LPCWSTR; // this is displayed in the header pszHeaderSubTitle: LPCWSTR; // {$ENDIF IE400_UP} end; {$EXTERNALSYM _PROPSHEETPAGEW} PROPSHEETPAGEW = _PROPSHEETPAGEW; {$EXTERNALSYM PROPSHEETPAGEW} LPPROPSHEETPAGEW = ^PROPSHEETPAGEW; {$EXTERNALSYM LPPROPSHEETPAGEW} LPCPROPSHEETPAGEW = LPPROPSHEETPAGEW; {$EXTERNALSYM LPCPROPSHEETPAGEW} TPropSheetPageW = PROPSHEETPAGEW; PPropSheetPageW = LPPROPSHEETPAGEW; {$IFDEF UNICODE} PROPSHEETPAGE = PROPSHEETPAGEW; {$EXTERNALSYM PROPSHEETPAGE} LPPROPSHEETPAGE = LPPROPSHEETPAGEW; {$EXTERNALSYM LPPROPSHEETPAGE} LPCPROPSHEETPAGE = LPCPROPSHEETPAGEW; {$EXTERNALSYM LPCPROPSHEETPAGE} TPropSheetPage = TPropSheetPageW; PPropSheetPage = PPropSheetPageW; const PROPSHEETPAGE_V1_SIZE = 40; {PROPSHEETPAGEW_V1_SIZE} {$EXTERNALSYM PROPSHEETPAGE_V1_SIZE} {$ELSE} PROPSHEETPAGE = PROPSHEETPAGEA; {$EXTERNALSYM PROPSHEETPAGE} LPPROPSHEETPAGE = LPPROPSHEETPAGEA; {$EXTERNALSYM LPPROPSHEETPAGE} LPCPROPSHEETPAGE = LPCPROPSHEETPAGEA; {$EXTERNALSYM LPCPROPSHEETPAGE} TPropSheetPage = TPropSheetPageA; PPropSheetPage = PPropSheetPageA; const PROPSHEETPAGE_V1_SIZE = 40; {PROPSHEETPAGEA_V1_SIZE} {$EXTERNALSYM PROPSHEETPAGE_V1_SIZE} {$ENDIF UNICODE} const PSH_DEFAULT = $00000000; {$EXTERNALSYM PSH_DEFAULT} PSH_PROPTITLE = $00000001; {$EXTERNALSYM PSH_PROPTITLE} PSH_USEHICON = $00000002; {$EXTERNALSYM PSH_USEHICON} PSH_USEICONID = $00000004; {$EXTERNALSYM PSH_USEICONID} PSH_PROPSHEETPAGE = $00000008; {$EXTERNALSYM PSH_PROPSHEETPAGE} PSH_WIZARDHASFINISH = $00000010; {$EXTERNALSYM PSH_WIZARDHASFINISH} PSH_WIZARD = $00000020; {$EXTERNALSYM PSH_WIZARD} PSH_USEPSTARTPAGE = $00000040; {$EXTERNALSYM PSH_USEPSTARTPAGE} PSH_NOAPPLYNOW = $00000080; {$EXTERNALSYM PSH_NOAPPLYNOW} PSH_USECALLBACK = $00000100; {$EXTERNALSYM PSH_USECALLBACK} PSH_HASHELP = $00000200; {$EXTERNALSYM PSH_HASHELP} PSH_MODELESS = $00000400; {$EXTERNALSYM PSH_MODELESS} PSH_RTLREADING = $00000800; {$EXTERNALSYM PSH_RTLREADING} PSH_WIZARDCONTEXTHELP = $00001000; {$EXTERNALSYM PSH_WIZARDCONTEXTHELP} //----- New flags for wizard97 ----------- {$IFDEF IE500_UP} PSH_WIZARD97 = $01000000; {$EXTERNALSYM PSH_WIZARD97} {$ELSE} PSH_WIZARD97 = $00002000; {$EXTERNALSYM PSH_WIZARD97} {$ENDIF IE500_UP} // 0x00004000 was not used by any previous release PSH_WATERMARK = $00008000; {$EXTERNALSYM PSH_WATERMARK} PSH_USEHBMWATERMARK = $00010000; // user pass in a hbmWatermark instead of pszbmWatermark {$EXTERNALSYM PSH_USEHBMWATERMARK} PSH_USEHPLWATERMARK = $00020000; // {$EXTERNALSYM PSH_USEHPLWATERMARK} PSH_STRETCHWATERMARK = $00040000; // stretchwatermark also applies for the header {$EXTERNALSYM PSH_STRETCHWATERMARK} PSH_HEADER = $00080000; {$EXTERNALSYM PSH_HEADER} PSH_USEHBMHEADER = $00100000; {$EXTERNALSYM PSH_USEHBMHEADER} PSH_USEPAGELANG = $00200000; // use frame dialog template matched to page {$EXTERNALSYM PSH_USEPAGELANG} //---------------------------------------- //----- New flags for wizard-lite -------- PSH_WIZARD_LITE = $00400000; {$EXTERNALSYM PSH_WIZARD_LITE} PSH_NOCONTEXTHELP = $02000000; {$EXTERNALSYM PSH_NOCONTEXTHELP} //---------------------------------------- type PFNPROPSHEETCALLBACK = function(hwn: HWND; uMsg: UINT; lParam: LPARAM): Integer; stdcall; {$EXTERNALSYM PFNPROPSHEETCALLBACK} //const //#define PROPSHEETHEADERA_V1_SIZE CCSIZEOF_STRUCT(PROPSHEETHEADERA, pfnCallback) //#define PROPSHEETHEADERW_V1_SIZE CCSIZEOF_STRUCT(PROPSHEETHEADERW, pfnCallback) type _PROPSHEETHEADERA = record dwSize: DWORD; dwFlags: DWORD; hwndParent: HWND; hInstance: HINST; u: record case Integer of 0: (hIcon: HICON); 1: (pszIcon: LPCSTR); end; pszCaption: LPCSTR; nPages: UINT; u2: record case Integer of 0: (nStartPage: UINT); 1: (pStartPage: LPCSTR); end; u3: record case Integer of 0: (ppsp: LPCPROPSHEETPAGEA); 1: (phpage: PHPROPSHEETPAGE); end; pfnCallback: PFNPROPSHEETCALLBACK; {$IFDEF IE400_UP} u4: record case Integer of 0: (hbmWatermark: HBITMAP); 1: (pszbmWatermark: LPCSTR); end; hplWatermark: HPALETTE; u5: record case Integer of 0: (hbmHeader: HBITMAP); // Header bitmap shares the palette with watermark 1: (pszbmHeader: LPCSTR); end; {$ENDIF IE400_UP} end; {$EXTERNALSYM _PROPSHEETHEADERA} PROPSHEETHEADERA =_PROPSHEETHEADERA; {$EXTERNALSYM PROPSHEETHEADERA} LPPROPSHEETHEADERA = ^PROPSHEETHEADERA; {$EXTERNALSYM LPPROPSHEETHEADERA} LPCPROPSHEETHEADERA = LPPROPSHEETHEADERA; {$EXTERNALSYM LPCPROPSHEETHEADERA} TPropSheetHeaderA = PROPSHEETHEADERA; PPropSheetHeaderA = LPPROPSHEETHEADERA; _PROPSHEETHEADERW = record dwSize: DWORD; dwFlags: DWORD; hwndParent: HWND; hInstance: HINST; u: record case Integer of 0: (hIcon: HICON); 1: (pszIcon: LPCWSTR); end; pszCaption: LPCWSTR; nPages: UINT; u2: record case Integer of 0: (nStartPage: UINT); 1: (pStartPage: LPCWSTR); end; u3: record case Integer of 0: (ppsp: LPCPROPSHEETPAGEW); 1: (phpage: PHPROPSHEETPAGE); end; pfnCallback: PFNPROPSHEETCALLBACK; {$IFDEF IE400_UP} u4: record case Integer of 0: (hbmWatermark: HBITMAP); 1: (pszbmWatermark: LPCWSTR); end; hplWatermark: HPALETTE; u5: record case Integer of 0: (hbmHeader: HBITMAP); // Header bitmap shares the palette with watermark 1: (pszbmHeader: LPCWSTR); end; {$ENDIF IE400_UP} end; {$EXTERNALSYM _PROPSHEETHEADERW} PROPSHEETHEADERW =_PROPSHEETHEADERW; {$EXTERNALSYM PROPSHEETHEADERW} LPPROPSHEETHEADERW = ^PROPSHEETHEADERW; {$EXTERNALSYM LPPROPSHEETHEADERW} LPCPROPSHEETHEADERW = LPPROPSHEETHEADERW; {$EXTERNALSYM LPCPROPSHEETHEADERW} TPropSheetHeaderW = PROPSHEETHEADERW; PPropSheetHeaderW = LPPROPSHEETHEADERW; {$IFDEF UNICODE} PROPSHEETHEADER = PROPSHEETHEADERW; {$EXTERNALSYM PROPSHEETHEADER} LPPROPSHEETHEADER = LPPROPSHEETHEADERW; {$EXTERNALSYM LPPROPSHEETHEADER} LPCPROPSHEETHEADER = LPCPROPSHEETHEADERW; {$EXTERNALSYM LPCPROPSHEETHEADER} TPropSheetHeader = TPropSheetHeaderW; PPropSheetHeader = PPropSheetHeaderW; const PROPSHEETHEADER_V1_SIZE = 40; {PROPSHEETHEADERW_V1_SIZE} {$EXTERNALSYM PROPSHEETHEADER_V1_SIZE} {$ELSE} PROPSHEETHEADER = PROPSHEETHEADERA; {$EXTERNALSYM PROPSHEETHEADER} LPPROPSHEETHEADER = LPPROPSHEETHEADERA; {$EXTERNALSYM LPPROPSHEETHEADER} LPCPROPSHEETHEADER = LPCPROPSHEETHEADERA; {$EXTERNALSYM LPCPROPSHEETHEADER} TPropSheetHeader = TPropSheetHeaderA; PPropSheetHeader = PPropSheetHeaderA; const PROPSHEETHEADER_V1_SIZE = 40; {PROPSHEETHEADERA_V1_SIZE} {$EXTERNALSYM PROPSHEETHEADER_V1_SIZE} {$ENDIF UNICODE} const PSCB_INITIALIZED = 1; {$EXTERNALSYM PSCB_INITIALIZED} PSCB_PRECREATE = 2; {$EXTERNALSYM PSCB_PRECREATE} function CreatePropertySheetPageA(const lppsp: PROPSHEETPAGEA): HPROPSHEETPAGE; stdcall; {$EXTERNALSYM CreatePropertySheetPageA} function CreatePropertySheetPageW(const lppsp: PROPSHEETPAGEW): HPROPSHEETPAGE; stdcall; {$EXTERNALSYM DestroyPropertySheetPage} function DestroyPropertySheetPage(hPSPage: HPROPSHEETPAGE): BOOL; stdcall; {$EXTERNALSYM DestroyPropertySheetPage} function PropertySheetA(const lppsph: PROPSHEETHEADERA): INT_PTR; stdcall; {$EXTERNALSYM PropertySheetA} function PropertySheetW(const lppsph: PROPSHEETHEADERW): INT_PTR; stdcall; {$EXTERNALSYM PropertySheetW} function CreatePropertySheetPage(const lppsp: PROPSHEETPAGE): HPROPSHEETPAGE; stdcall; {$EXTERNALSYM DestroyPropertySheetPage} function PropertySheet(const lppsph: PROPSHEETHEADER): INT_PTR; stdcall; {$EXTERNALSYM PropertySheet} type LPFNADDPROPSHEETPAGE = function(page: HPROPSHEETPAGE; lParam: LPARAM): BOOL; stdcall; {$EXTERNALSYM LPFNADDPROPSHEETPAGE} LPFNADDPROPSHEETPAGES = function(pv: LPVOID; fn: LPFNADDPROPSHEETPAGE; lParam: LPARAM): BOOL; stdcall; {$EXTERNALSYM LPFNADDPROPSHEETPAGES} _PSHNOTIFY = record hdr: NMHDR; lParam: LPARAM; end; {$EXTERNALSYM _PSHNOTIFY} PSHNOTIFY = _PSHNOTIFY; {$EXTERNALSYM PSHNOTIFY} LPPSHNOTIFY = ^PSHNOTIFY; {$EXTERNALSYM LPPSHNOTIFY} TPSHNotify = PSHNOTIFY; PPSHNotify = LPPSHNOTIFY; const PSN_FIRST = ULONG(0-200); {$EXTERNALSYM PSN_FIRST} PSN_LAST = ULONG(0-299); {$EXTERNALSYM PSN_LAST} PSN_SETACTIVE = PSN_FIRST - 0; {$EXTERNALSYM PSN_SETACTIVE} PSN_KILLACTIVE = PSN_FIRST - 1; {$EXTERNALSYM PSN_KILLACTIVE} //PSN_VALIDATE = PSN_FIRST - 1; //{$EXTERNALSYM PSN_VALIDATE} PSN_APPLY = PSN_FIRST - 2; {$EXTERNALSYM PSN_APPLY} PSN_RESET = PSN_FIRST - 3; {$EXTERNALSYM PSN_RESET} //PSN_CANCEL = PSN_FIRST - 3; //{$EXTERNALSYM PSN_CANCEL} PSN_HELP = PSN_FIRST - 5; {$EXTERNALSYM PSN_HELP} PSN_WIZBACK = PSN_FIRST - 6; {$EXTERNALSYM PSN_WIZBACK} PSN_WIZNEXT = PSN_FIRST - 7; {$EXTERNALSYM PSN_WIZNEXT} PSN_WIZFINISH = PSN_FIRST - 8; {$EXTERNALSYM PSN_WIZFINISH} PSN_QUERYCANCEL = PSN_FIRST - 9; {$EXTERNALSYM PSN_QUERYCANCEL} PSN_GETOBJECT = PSN_FIRST - 10; {$EXTERNALSYM PSN_GETOBJECT} PSN_TRANSLATEACCELERATOR = PSN_FIRST - 12; {$EXTERNALSYM PSN_TRANSLATEACCELERATOR} PSN_QUERYINITIALFOCUS = PSN_FIRST - 13; {$EXTERNALSYM PSN_QUERYINITIALFOCUS} PSNRET_NOERROR = 0; {$EXTERNALSYM PSNRET_NOERROR} PSNRET_INVALID = 1; {$EXTERNALSYM PSNRET_INVALID} PSNRET_INVALID_NOCHANGEPAGE = 2; {$EXTERNALSYM PSNRET_INVALID_NOCHANGEPAGE} PSNRET_MESSAGEHANDLED = 3; {$EXTERNALSYM PSNRET_MESSAGEHANDLED} PSM_SETCURSEL = WM_USER + 101; {$EXTERNALSYM PSM_SETCURSEL} function PropSheet_SetCurSel(hPropSheetDlg: HWND; hPage: HPROPSHEETPAGE; Index: Integer): BOOL; const PSM_REMOVEPAGE = WM_USER + 102; {$EXTERNALSYM PSM_REMOVEPAGE} procedure PropSheet_RemovePage(hPropSheetDlg: HWND; Index: Integer; hPage: HPROPSHEETPAGE); const PSM_ADDPAGE = WM_USER + 103; {$EXTERNALSYM PSM_ADDPAGE} function PropSheet_AddPage(hPropSheetDlg: HWND; hpage: HPROPSHEETPAGE): BOOL; const PSM_CHANGED = WM_USER + 104; {$EXTERNALSYM PSM_CHANGED} function PropSheet_Changed(hPropSheetDlg: HWND; hwndPage: HWND): BOOL; const PSM_RESTARTWINDOWS = WM_USER + 105; {$EXTERNALSYM PSM_RESTARTWINDOWS} procedure PropSheet_RestartWindows(hPropSheetDlg: HWND); const PSM_REBOOTSYSTEM = WM_USER + 106; {$EXTERNALSYM PSM_REBOOTSYSTEM} procedure PropSheet_RebootSystem(hPropSheetDlg: HWND); const PSM_CANCELTOCLOSE = WM_USER + 107; {$EXTERNALSYM PSM_CANCELTOCLOSE} procedure PropSheet_CancelToClose(hPropSheetDlg: HWND); const PSM_QUERYSIBLINGS = WM_USER + 108; {$EXTERNALSYM PSM_QUERYSIBLINGS} function PropSheet_QuerySiblings(hPropSheetDlg: HWND; Param1: WPARAM; Param2: LPARAM): Integer; const PSM_UNCHANGED = WM_USER + 109; {$EXTERNALSYM PSM_UNCHANGED} procedure PropSheet_UnChanged(hPropSheetDlg: HWND; hwndPage: HWND); const PSM_APPLY = WM_USER + 110; {$EXTERNALSYM PSM_APPLY} function PropSheet_Apply(hPropSheetDlg: HWND): BOOL; const PSM_SETTITLEA = WM_USER + 111; {$EXTERNALSYM PSM_SETTITLEA} PSM_SETTITLEW = WM_USER + 120; {$EXTERNALSYM PSM_SETTITLEW} {$IFDEF UNICODE} PSM_SETTITLE = PSM_SETTITLEW; {$EXTERNALSYM PSM_SETTITLE} {$ELSE} PSM_SETTITLE = PSM_SETTITLEA; {$EXTERNALSYM PSM_SETTITLE} {$ENDIF UNICODE} procedure PropSheet_SetTitle(hPropSheetDlg: HWND; dwStyle: DWORD; lpszText: LPTSTR); const PSM_SETWIZBUTTONS = WM_USER + 112; {$EXTERNALSYM PSM_SETWIZBUTTONS} procedure PropSheet_SetWizButtons(hPropSheetDlg: HWND; dwFlags: DWORD); const PSWIZB_BACK = $00000001; {$EXTERNALSYM PSWIZB_BACK} PSWIZB_NEXT = $00000002; {$EXTERNALSYM PSWIZB_NEXT} PSWIZB_FINISH = $00000004; {$EXTERNALSYM PSWIZB_FINISH} PSWIZB_DISABLEDFINISH = $00000008; {$EXTERNALSYM PSWIZB_DISABLEDFINISH} PSM_PRESSBUTTON = WM_USER + 113; {$EXTERNALSYM PSM_PRESSBUTTON} function PropSheet_PressButton(hPropSheetDlg: HWND; iButton: Integer): BOOL; const PSBTN_BACK = 0; {$EXTERNALSYM PSBTN_BACK} PSBTN_NEXT = 1; {$EXTERNALSYM PSBTN_NEXT} PSBTN_FINISH = 2; {$EXTERNALSYM PSBTN_FINISH} PSBTN_OK = 3; {$EXTERNALSYM PSBTN_OK} PSBTN_APPLYNOW = 4; {$EXTERNALSYM PSBTN_APPLYNOW} PSBTN_CANCEL = 5; {$EXTERNALSYM PSBTN_CANCEL} PSBTN_HELP = 6; {$EXTERNALSYM PSBTN_HELP} PSBTN_MAX = 6; {$EXTERNALSYM PSBTN_MAX} PSM_SETCURSELID = WM_USER + 114; {$EXTERNALSYM PSM_SETCURSELID} function PropSheet_SetCurSelByID(hPropSheetDlg: HWND; id: Integer): BOOL; const PSM_SETFINISHTEXTA = WM_USER + 115; {$EXTERNALSYM PSM_SETFINISHTEXTA} PSM_SETFINISHTEXTW = WM_USER + 121; {$EXTERNALSYM PSM_SETFINISHTEXTW} {$IFDEF UNICODE} PSM_SETFINISHTEXT = PSM_SETFINISHTEXTW; {$EXTERNALSYM PSM_SETFINISHTEXT} {$ELSE} PSM_SETFINISHTEXT = PSM_SETFINISHTEXTA; {$EXTERNALSYM PSM_SETFINISHTEXT} {$ENDIF UNICODE} procedure PropSheet_SetFinishText(hPropSheetDlg: HWND; lpszText: LPTSTR); const PSM_GETTABCONTROL = WM_USER + 116; {$EXTERNALSYM PSM_GETTABCONTROL} function PropSheet_GetTabControl(hPropSheetDlg: HWND): HWND; const PSM_ISDIALOGMESSAGE = WM_USER + 117; {$EXTERNALSYM PSM_ISDIALOGMESSAGE} function PropSheet_IsDialogMessage(hDlg: HWND; pMsg: LPMSG): BOOL; const PSM_GETCURRENTPAGEHWND = WM_USER + 118; {$EXTERNALSYM PSM_GETCURRENTPAGEHWND} function PropSheet_GetCurrentPageHwnd(hDlg: HWND): HWND; const PSM_INSERTPAGE = WM_USER + 119; {$EXTERNALSYM PSM_INSERTPAGE} function PropSheet_InsertPage(hPropSheetDlg: HWND; index: Integer; hpage: HPROPSHEETPAGE): BOOL; const PSM_SETHEADERTITLEA = WM_USER + 125; {$EXTERNALSYM PSM_SETHEADERTITLEA} PSM_SETHEADERTITLEW = WM_USER + 126; {$EXTERNALSYM PSM_SETHEADERTITLEW} {$IFDEF UNICODE} PSM_SETHEADERTITLE = PSM_SETHEADERTITLEW; {$EXTERNALSYM PSM_SETHEADERTITLE} {$ELSE} PSM_SETHEADERTITLE = PSM_SETHEADERTITLEA; {$EXTERNALSYM PSM_SETHEADERTITLE} {$ENDIF UNICODE} function PropSheet_SetHeaderTitle(hWizardDlg: HWND; iPageIndex: Integer; lpszText: LPCSTR): Integer; const PSM_SETHEADERSUBTITLEA = WM_USER + 127; {$EXTERNALSYM PSM_SETHEADERSUBTITLEA} PSM_SETHEADERSUBTITLEW = WM_USER + 128; {$EXTERNALSYM PSM_SETHEADERSUBTITLEW} {$IFDEF UNICODE} PSM_SETHEADERSUBTITLE = PSM_SETHEADERSUBTITLEW; {$EXTERNALSYM PSM_SETHEADERSUBTITLE} {$ELSE} PSM_SETHEADERSUBTITLE = PSM_SETHEADERSUBTITLEA; {$EXTERNALSYM PSM_SETHEADERSUBTITLE} {$ENDIF UNICODE} procedure PropSheet_SetHeaderSubTitle(hWizardDlg: HWND; iPageIndex: Integer; pszHeaderSubTitle: LPCSTR); const PSM_HWNDTOINDEX = WM_USER + 129; {$EXTERNALSYM PSM_HWNDTOINDEX} function PropSheet_HwndToIndex(hPropSheetDlg: HWND; hPageDlg: HWND): Integer; const PSM_INDEXTOHWND = WM_USER + 130; {$EXTERNALSYM PSM_INDEXTOHWND} function PropSheet_IndexToHwnd(hPropSheetDlg: HWND; iPageIndex: Integer): HWND; const PSM_PAGETOINDEX = WM_USER + 131; {$EXTERNALSYM PSM_PAGETOINDEX} function PropSheet_PageToIndex(hPropSheetDlg: HWND; hPage: HPROPSHEETPAGE): Integer; const PSM_INDEXTOPAGE = WM_USER + 132; {$EXTERNALSYM PSM_INDEXTOPAGE} function PropSheet_IndexToPage(hPropSheetDlg: HWND; iPageIndex: Integer): HPROPSHEETPAGE; const PSM_IDTOINDEX = WM_USER + 133; {$EXTERNALSYM PSM_IDTOINDEX} function PropSheet_IdToIndex(hPropSheetDlg: HWND; iPageId: Integer): Integer; const PSM_INDEXTOID = WM_USER + 134; {$EXTERNALSYM PSM_INDEXTOID} function PropSheet_IndexToId(hPropSheetDlg: HWND; iPageIndex: Integer): Integer; const PSM_GETRESULT = WM_USER + 135; {$EXTERNALSYM PSM_GETRESULT} function PropSheet_GetResult(hPropSheetDlg: HWND): BOOL; const PSM_RECALCPAGESIZES = WM_USER + 136; {$EXTERNALSYM PSM_RECALCPAGESIZES} function PropSheet_RecalcPageSizes(hPropSheetDlg: HWND): BOOL; const ID_PSRESTARTWINDOWS = $2; {$EXTERNALSYM ID_PSRESTARTWINDOWS} ID_PSREBOOTSYSTEM = ID_PSRESTARTWINDOWS or $1; {$EXTERNALSYM ID_PSREBOOTSYSTEM} WIZ_CXDLG = 276; {$EXTERNALSYM WIZ_CXDLG} WIZ_CYDLG = 140; {$EXTERNALSYM WIZ_CYDLG} WIZ_CXBMP = 80; {$EXTERNALSYM WIZ_CXBMP} WIZ_BODYX = 92; {$EXTERNALSYM WIZ_BODYX} WIZ_BODYCX = 184; {$EXTERNALSYM WIZ_BODYCX} PROP_SM_CXDLG = 212; {$EXTERNALSYM PROP_SM_CXDLG} PROP_SM_CYDLG = 188; {$EXTERNALSYM PROP_SM_CYDLG} PROP_MED_CXDLG = 227; {$EXTERNALSYM PROP_MED_CXDLG} PROP_MED_CYDLG = 215; {$EXTERNALSYM PROP_MED_CYDLG} PROP_LG_CXDLG = 252; {$EXTERNALSYM PROP_LG_CXDLG} PROP_LG_CYDLG = 218; {$EXTERNALSYM PROP_LG_CYDLG} implementation uses JwaWinDLLNames; function PropSheet_SetCurSel(hPropSheetDlg: HWND; hPage: HPROPSHEETPAGE; Index: Integer): BOOL; begin Result := BOOL(SendMessage(hPropSheetDlg, PSM_SETCURSEL, WPARAM(Index), LPARAM(hPage))); end; procedure PropSheet_RemovePage(hPropSheetDlg: HWND; Index: Integer; hPage: HPROPSHEETPAGE); begin SendMessage(hPropSheetDlg, PSM_REMOVEPAGE, Index, LPARAM(hPage)); end; function PropSheet_AddPage(hPropSheetDlg: HWND; hpage: HPROPSHEETPAGE): BOOL; begin Result := BOOL(SendMessage(hPropSheetDlg, PSM_ADDPAGE, 0, LPARAM(hpage))); end; function PropSheet_Changed(hPropSheetDlg: HWND; hwndPage: HWND): BOOL; begin Result := BOOL(SendMessage(hPropSheetDlg, PSM_CHANGED, WPARAM(hwndPage), 0)); end; procedure PropSheet_RestartWindows(hPropSheetDlg: HWND); begin SendMessage(hPropSheetDlg, PSM_RESTARTWINDOWS, 0, 0); end; procedure PropSheet_RebootSystem(hPropSheetDlg: HWND); begin SendMessage(hPropSheetDlg, PSM_REBOOTSYSTEM, 0, 0); end; procedure PropSheet_CancelToClose(hPropSheetDlg: HWND); begin PostMessage(hPropSheetDlg, PSM_CANCELTOCLOSE, 0, 0); end; function PropSheet_QuerySiblings(hPropSheetDlg: HWND; Param1: WPARAM; Param2: LPARAM): Integer; begin Result := SendMessage(hPropSheetDlg, PSM_QUERYSIBLINGS, Param1, Param2); end; procedure PropSheet_UnChanged(hPropSheetDlg: HWND; hwndPage: HWND); begin SendMessage(hPropSheetDlg, PSM_UNCHANGED, WPARAM(hwndPage), 0); end; function PropSheet_Apply(hPropSheetDlg: HWND): BOOL; begin Result := BOOL(SendMessage(hPropSheetDlg, PSM_APPLY, 0, 0)); end; procedure PropSheet_SetTitle(hPropSheetDlg: HWND; dwStyle: DWORD; lpszText: LPTSTR); begin SendMessage(hPropSheetDlg, PSM_SETTITLE, dwStyle, LPARAM(LPCTSTR(lpszText))); end; procedure PropSheet_SetWizButtons(hPropSheetDlg: HWND; dwFlags: DWORD); begin PostMessage(hPropSheetDlg, PSM_SETWIZBUTTONS, 0, LPARAM(dwFlags)); end; function PropSheet_PressButton(hPropSheetDlg: HWND; iButton: Integer): BOOL; begin Result := PostMessage(hPropSheetDlg, PSM_PRESSBUTTON, WPARAM(iButton), 0); end; function PropSheet_SetCurSelByID(hPropSheetDlg: HWND; id: Integer): BOOL; begin Result := BOOL(SendMessage(hPropSheetDlg, PSM_SETCURSELID, 0, LPARAM(id))); end; procedure PropSheet_SetFinishText(hPropSheetDlg: HWND; lpszText: LPTSTR); begin SendMessage(hPropSheetDlg, PSM_SETFINISHTEXT, 0, LPARAM(lpszText)); end; function PropSheet_GetTabControl(hPropSheetDlg: HWND): HWND; begin Result := SendMessage(hPropSheetDlg, PSM_GETTABCONTROL, 0, 0); end; function PropSheet_IsDialogMessage(hDlg: HWND; pMsg: LPMSG): BOOL; begin Result := BOOL(SendMessage(hDlg, PSM_ISDIALOGMESSAGE, 0, LPARAM(pMsg))); end; function PropSheet_GetCurrentPageHwnd(hDlg: HWND): HWND; begin Result := SendMessage(hDlg, PSM_GETCURRENTPAGEHWND, 0, 0); end; function PropSheet_InsertPage(hPropSheetDlg: HWND; index: Integer; hpage: HPROPSHEETPAGE): BOOL; begin Result := BOOL(SendMessage(hPropSheetDlg, PSM_INSERTPAGE, WPARAM(index), LPARAM(hpage))); end; function PropSheet_SetHeaderTitle(hWizardDlg: HWND; iPageIndex: Integer; lpszText: LPCSTR): Integer; begin Result := SendMessage(hWizardDlg, PSM_SETHEADERTITLE, WPARAM(iPageIndex), LPARAM(lpszText)); end; procedure PropSheet_SetHeaderSubTitle(hWizardDlg: HWND; iPageIndex: Integer; pszHeaderSubTitle: LPCSTR); begin SendMessage(hWizardDlg, PSM_SETHEADERSUBTITLE, WPARAM(iPageIndex), LPARAM(pszHeaderSubTitle)); end; function PropSheet_HwndToIndex(hPropSheetDlg: HWND; hPageDlg: HWND): Integer; begin Result := SendMessage(hPropSheetDlg, PSM_HWNDTOINDEX, WPARAM(hPageDlg), 0); end; function PropSheet_IndexToHwnd(hPropSheetDlg: HWND; iPageIndex: Integer): HWND; begin Result := SendMessage(hPropSheetDlg, PSM_INDEXTOHWND, WPARAM(iPageIndex), 0); end; function PropSheet_PageToIndex(hPropSheetDlg: HWND; hPage: HPROPSHEETPAGE): Integer; begin Result := SendMessage(hPropSheetDlg, PSM_PAGETOINDEX, 0, LPARAM(hpage)); end; function PropSheet_IndexToPage(hPropSheetDlg: HWND; iPageIndex: Integer): HPROPSHEETPAGE; begin Result := HPROPSHEETPAGE(SendMessage(hPropSheetDlg, PSM_INDEXTOPAGE, WPARAM(iPageIndex), 0)); end; function PropSheet_IdToIndex(hPropSheetDlg: HWND; iPageId: Integer): Integer; begin Result := SendMessage(hPropSheetDlg, PSM_IDTOINDEX, 0, LPARAM(iPageId)); end; function PropSheet_IndexToId(hPropSheetDlg: HWND; iPageIndex: Integer): Integer; begin Result := SendMessage(hPropSheetDlg, PSM_INDEXTOID, WPARAM(iPageIndex), 0) end; function PropSheet_GetResult(hPropSheetDlg: HWND): BOOL; begin Result := BOOL(SendMessage(hPropSheetDlg, PSM_GETRESULT, 0, 0)); end; function PropSheet_RecalcPageSizes(hPropSheetDlg: HWND): BOOL; begin Result := BOOL(SendMessage(hPropSheetDlg, PSM_RECALCPAGESIZES, 0, 0)); end; {$IFDEF DYNAMIC_LINK} var _CreatePropertySheetPageA: Pointer; function CreatePropertySheetPageA; begin GetProcedureAddress(_CreatePropertySheetPageA, comctl32, 'CreatePropertySheetPageA'); asm MOV ESP, EBP POP EBP JMP [_CreatePropertySheetPageA] end; end; var _CreatePropertySheetPageW: Pointer; function CreatePropertySheetPageW; begin GetProcedureAddress(_CreatePropertySheetPageW, comctl32, 'CreatePropertySheetPageW'); asm MOV ESP, EBP POP EBP JMP [_CreatePropertySheetPageW] end; end; var _DestroyPropertySheetPage: Pointer; function DestroyPropertySheetPage; begin GetProcedureAddress(_DestroyPropertySheetPage, comctl32, 'DestroyPropertySheetPage'); asm MOV ESP, EBP POP EBP JMP [_DestroyPropertySheetPage] end; end; var _PropertySheetA: Pointer; function PropertySheetA; begin GetProcedureAddress(_PropertySheetA, comctl32, 'PropertySheetA'); asm MOV ESP, EBP POP EBP JMP [_PropertySheetA] end; end; var _PropertySheetW: Pointer; function PropertySheetW; begin GetProcedureAddress(_PropertySheetW, comctl32, 'PropertySheetW'); asm MOV ESP, EBP POP EBP JMP [_PropertySheetW] end; end; var _CreatePropertySheetPage: Pointer; function CreatePropertySheetPage; begin GetProcedureAddress(_CreatePropertySheetPage, comctl32, 'CreatePropertySheetPage' + AWSuffix); asm MOV ESP, EBP POP EBP JMP [_CreatePropertySheetPage] end; end; var _PropertySheet: Pointer; function PropertySheet; begin GetProcedureAddress(_PropertySheet, comctl32, 'PropertySheet' + AWSuffix); asm MOV ESP, EBP POP EBP JMP [_PropertySheet] end; end; {$ELSE} function CreatePropertySheetPageA; external comctl32 name 'CreatePropertySheetPageA'; function CreatePropertySheetPageW; external comctl32 name 'CreatePropertySheetPageW'; function DestroyPropertySheetPage; external comctl32 name 'DestroyPropertySheetPage'; function PropertySheetA; external comctl32 name 'PropertySheetA'; function PropertySheetW; external comctl32 name 'PropertySheetW'; function CreatePropertySheetPage; external comctl32 name 'CreatePropertySheetPage' + AWSuffix; function PropertySheet; external comctl32 name 'PropertySheet' + AWSuffix; {$ENDIF DYNAMIC_LINK} end.