📄 prsht.pas
字号:
{******************************************************************}
{ }
{ Borland Delphi Runtime Library }
{ Property Sheet Pages interface unit }
{ }
{ Portions created by Microsoft are }
{ Copyright (C) 1995-1999 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@bart.nl). }
{ }
{ Portions created by Marcel van Brakel are }
{ Copyright (C) 1999 Marcel van Brakel. }
{ }
{ Obtained through: }
{ Joint Endeavour of Delphi Innovators (Project JEDI) }
{ }
{ You may retrieve the latest version of this file at the Project }
{ JEDI home page, located at http://delphi-jedi.org }
{ }
{ 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. }
{ }
{******************************************************************}
unit PrSht;
{$WEAKPACKAGEUNIT}
{$HPPEMIT ''}
{$HPPEMIT '#include "ntdsapi.h"'}
{$HPPEMIT ''}
{$HPPEMIT 'typedef PHPROPSHEETPAGE *HPROPSHEETPAGE'}
{$HPPEMIT ''}
{$I WINDEFINES.INC}
interface
uses
WinNT, WinUser, WinType;
//#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}
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: HINSTANCE;
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 _WIN32_IE_GE_0x0400}
pszHeaderTitle: LPCSTR; // this is displayed in the header
pszHeaderSubTitle: LPCSTR; //
{$ENDIF}
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: HINSTANCE;
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 _WIN32_IE_GE_0x0400}
pszHeaderTitle: LPCWSTR; // this is displayed in the header
pszHeaderSubTitle: LPCWSTR; //
{$ENDIF}
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}
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 _WIN32_IE_SMALLER_0500}
PSH_WIZARD97 = $00002000;
{$EXTERNALSYM PSH_WIZARD97}
{$ELSE}
PSH_WIZARD97 = $01000000;
{$EXTERNALSYM PSH_WIZARD97}
{$ENDIF}
// 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: HINSTANCE;
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 _WIN32_IE_GE_0x0400}
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}
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: HINSTANCE;
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 _WIN32_IE_GE_0x0400}
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}
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}
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}
{$IFDEF UNICODE}
function CreatePropertySheetPage(const lppsp: PROPSHEETPAGEW): HPROPSHEETPAGE; stdcall;
{$EXTERNALSYM DestroyPropertySheetPage}
function PropertySheet(const lppsph: PROPSHEETHEADERW): INT_PTR; stdcall;
{$EXTERNALSYM PropertySheet}
{$ELSE}
function CreatePropertySheetPage(const lppsp: PROPSHEETPAGEA): HPROPSHEETPAGE; stdcall;
{$EXTERNALSYM CreatePropertySheetPage}
function PropertySheet(const lppsph: PROPSHEETHEADERA): INT_PTR; stdcall;
{$EXTERNALSYM PropertySheet}
{$ENDIF}
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);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -