⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jwaprsht.pas

📁 比较全面的win32api开发包
💻 PAS
📖 第 1 页 / 共 3 页
字号:
{******************************************************************************}
{                                                       	               }
{ 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@chello.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 home    }
{ page, located at http://delphi-jedi.org or my personal homepage located at   }
{ http://members.chello.nl/m.vanbrakel2                                        }
{								               }
{ 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 }
{ 								               }
{******************************************************************************}

unit JwaPrSht;

{$WEAKPACKAGEUNIT}

{$HPPEMIT ''}
{$HPPEMIT '#include "ntdsapi.h"'}
{$HPPEMIT ''}
{$HPPEMIT 'typedef PHPROPSHEETPAGE  *HPROPSHEETPAGE'}
{$HPPEMIT ''}

{$I WINDEFINES.INC}

interface

uses
  JwaWinNT, JwaWinUser, JwaWinType;

//#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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -