JwaPrSht.pas
上传用户:davidchvip
上传日期:2009-07-28
资源大小:1749k
文件大小:33k
源码类别:

Windows编程

开发平台:

Delphi

  1. {******************************************************************************}
  2. {                                                                       }
  3. { Property Sheet Pages API interface Unit for Object Pascal                    }
  4. {                                                                       }
  5. { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft          }
  6. { Corporation. All Rights Reserved.                                            }
  7. {                 }
  8. { The original file is: prsht.h, released June 2000. The original Pascal       }
  9. { code is: PrSht.pas, released December 2000. The initial developer of the     }
  10. { Pascal code is Marcel van Brakel (brakelm@chello.nl).                        }
  11. {                                                                              }
  12. { Portions created by Marcel van Brakel are Copyright (C) 1999-2001            }
  13. { Marcel van Brakel. All Rights Reserved.                                      }
  14. {                 }
  15. { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI)        }
  16. {                }
  17. { You may retrieve the latest version of this file at the Project JEDI home    }
  18. { page, located at http://delphi-jedi.org or my personal homepage located at   }
  19. { http://members.chello.nl/m.vanbrakel2                                        }
  20. {                }
  21. { The contents of this file are used with permission, subject to the Mozilla   }
  22. { Public License Version 1.1 (the "License"); you may not use this file except }
  23. { in compliance with the License. You may obtain a copy of the License at      }
  24. { http://www.mozilla.org/MPL/MPL-1.1.html                                      }
  25. {                                                                              }
  26. { Software distributed under the License is distributed on an "AS IS" basis,   }
  27. { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
  28. { the specific language governing rights and limitations under the License.    }
  29. {                                                                              }
  30. { Alternatively, the contents of this file may be used under the terms of the  }
  31. { GNU Lesser General Public License (the  "LGPL License"), in which case the   }
  32. { provisions of the LGPL License are applicable instead of those above.        }
  33. { If you wish to allow use of your version of this file only under the terms   }
  34. { of the LGPL License and not to allow others to use your version of this file }
  35. { under the MPL, indicate your decision by deleting  the provisions above and  }
  36. { replace  them with the notice and other provisions required by the LGPL      }
  37. { License.  If you do not delete the provisions above, a recipient may use     }
  38. { your version of this file under either the MPL or the LGPL License.          }
  39. {                 }
  40. { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
  41. {                 }
  42. {******************************************************************************}
  43. unit JwaPrSht;
  44. {$WEAKPACKAGEUNIT}
  45. {$HPPEMIT ''}
  46. {$HPPEMIT '#include "ntdsapi.h"'}
  47. {$HPPEMIT ''}
  48. {$HPPEMIT 'typedef PHPROPSHEETPAGE  *HPROPSHEETPAGE'}
  49. {$HPPEMIT ''}
  50. {$I WINDEFINES.INC}
  51. interface
  52. uses
  53.   JwaWinNT, JwaWinUser, JwaWinType;
  54. //#ifndef CCSIZEOF_STRUCT
  55. //#define CCSIZEOF_STRUCT(structname, member)  (((int)((LPBYTE)(&((structname*)0)->member) - ((LPBYTE)((structname*)0)))) + sizeof(((structname*)0)->member))
  56. //#endif
  57. //
  58. // For compilers that don't support nameless unions
  59. //
  60. const
  61.   MAXPROPPAGES           = 100;
  62.   {$EXTERNALSYM MAXPROPPAGES}
  63. type
  64.   HPROPSHEETPAGE = Pointer;
  65.   {$EXTERNALSYM HPROPSHEETPAGE}
  66.   PHPROPSHEETPAGE = ^HPROPSHEETPAGE;
  67.   {$NODEFINE PHPROPSHEETPAGE}
  68.   LPFNPSPCALLBACKA = function (hwnd: HWND; uMsg: UINT; ppsp: Pointer{LPPROPSHEETPAGEA}): UINT; stdcall;
  69.   {$EXTERNALSYM LPFNPSPCALLBACKA}
  70.   LPFNPSPCALLBACKW = function (hwnd: HWND; uMsg: UINT; ppsp: Pointer{LPPROPSHEETPAGEW}): UINT; stdcall;
  71.   {$EXTERNALSYM LPFNPSPCALLBACKW}
  72. {$IFDEF UNICODE}
  73.   LPFNPSPCALLBACK = function (hwnd: HWND; uMsg: UINT; ppsp: Pointer{LPPROPSHEETPAGEW}): UINT; stdcall;
  74.   {$EXTERNALSYM LPFNPSPCALLBACK}
  75. {$ELSE}
  76.   LPFNPSPCALLBACK = function (hwnd: HWND; uMsg: UINT; ppsp: Pointer{LPPROPSHEETPAGEA}): UINT; stdcall;
  77.   {$EXTERNALSYM LPFNPSPCALLBACK}
  78. {$ENDIF}
  79.   
  80. const
  81.   PSP_DEFAULT               = $00000000;
  82.   {$EXTERNALSYM PSP_DEFAULT}
  83.   PSP_DLGINDIRECT           = $00000001;
  84.   {$EXTERNALSYM PSP_DLGINDIRECT}
  85.   PSP_USEHICON              = $00000002;
  86.   {$EXTERNALSYM PSP_USEHICON}
  87.   PSP_USEICONID             = $00000004;
  88.   {$EXTERNALSYM PSP_USEICONID}
  89.   PSP_USETITLE              = $00000008;
  90.   {$EXTERNALSYM PSP_USETITLE}
  91.   PSP_RTLREADING            = $00000010;
  92.   {$EXTERNALSYM PSP_RTLREADING}
  93.   PSP_HASHELP               = $00000020;
  94.   {$EXTERNALSYM PSP_HASHELP}
  95.   PSP_USEREFPARENT          = $00000040;
  96.   {$EXTERNALSYM PSP_USEREFPARENT}
  97.   PSP_USECALLBACK           = $00000080;
  98.   {$EXTERNALSYM PSP_USECALLBACK}
  99.   PSP_PREMATURE             = $00000400;
  100.   {$EXTERNALSYM PSP_PREMATURE}
  101. //----- New flags for wizard97 --------------
  102.   PSP_HIDEHEADER            = $00000800;
  103.   {$EXTERNALSYM PSP_HIDEHEADER}
  104.   PSP_USEHEADERTITLE        = $00001000;
  105.   {$EXTERNALSYM PSP_USEHEADERTITLE}
  106.   PSP_USEHEADERSUBTITLE     = $00002000;
  107.   {$EXTERNALSYM PSP_USEHEADERSUBTITLE}
  108. //-------------------------------------------
  109.   PSPCB_ADDREF           = 0;
  110.   {$EXTERNALSYM PSPCB_ADDREF}
  111.   PSPCB_RELEASE          = 1;
  112.   {$EXTERNALSYM PSPCB_RELEASE}
  113.   PSPCB_CREATE           = 2;
  114.   {$EXTERNALSYM PSPCB_CREATE}
  115. //#define PROPSHEETPAGEA_V1_SIZE CCSIZEOF_STRUCT(PROPSHEETPAGEA, pcRefParent)
  116. //#define PROPSHEETPAGEW_V1_SIZE CCSIZEOF_STRUCT(PROPSHEETPAGEW, pcRefParent)
  117. type
  118.   _PROPSHEETPAGEA = record
  119.     dwSize: DWORD;
  120.     dwFlags: DWORD;
  121.     hInstance: HINSTANCE;
  122.     u: record
  123.     case Integer of
  124.       0: (pszTemplate: LPCSTR);
  125.       1: (pResource: LPCDLGTEMPLATE);
  126.     end;
  127.     u2: record
  128.     case Integer of
  129.       0: (hIcon: HICON);
  130.       1: (pszIcon: LPCSTR);
  131.     end;
  132.     pszTitle: LPCSTR;
  133.     pfnDlgProc: DLGPROC;
  134.     lParam: LPARAM;
  135.     pfnCallback: LPFNPSPCALLBACKA;
  136.     pcRefParent: LPUINT;
  137.     {$IFDEF _WIN32_IE_GE_0x0400}
  138.     pszHeaderTitle: LPCSTR;    // this is displayed in the header
  139.     pszHeaderSubTitle: LPCSTR; //
  140.     {$ENDIF}
  141.   end;
  142.   {$EXTERNALSYM _PROPSHEETPAGEA}
  143.   PROPSHEETPAGEA = _PROPSHEETPAGEA;
  144.   {$EXTERNALSYM PROPSHEETPAGEA}
  145.   LPPROPSHEETPAGEA = ^PROPSHEETPAGEA;
  146.   {$EXTERNALSYM LPPROPSHEETPAGEA}
  147.   LPCPROPSHEETPAGEA = LPPROPSHEETPAGEA;
  148.   {$EXTERNALSYM LPCPROPSHEETPAGEA}
  149.   TPropSheetPageA = PROPSHEETPAGEA;
  150.   PPropSheetPageA = LPPROPSHEETPAGEA;
  151.   _PROPSHEETPAGEW = record
  152.     dwSize: DWORD;
  153.     dwFlags: DWORD;
  154.     hInstance: HINSTANCE;
  155.     u: record
  156.     case Integer of
  157.       0: (pszTemplate: LPCWSTR);
  158.       1: (pResource: LPCDLGTEMPLATE);
  159.     end;
  160.     u2: record
  161.     case Integer of
  162.       0: (hIcon: HICON);
  163.       1: (pszIcon: LPCWSTR);
  164.     end;
  165.     pszTitle: LPCWSTR;
  166.     pfnDlgProc: DLGPROC;
  167.     lParam: LPARAM;
  168.     pfnCallback: LPFNPSPCALLBACKW;
  169.     pcRefParent: LPUINT;
  170.     {$IFDEF _WIN32_IE_GE_0x0400}
  171.     pszHeaderTitle: LPCWSTR;    // this is displayed in the header
  172.     pszHeaderSubTitle: LPCWSTR; //
  173.     {$ENDIF}
  174.   end;
  175.   {$EXTERNALSYM _PROPSHEETPAGEW}
  176.   PROPSHEETPAGEW = _PROPSHEETPAGEW;
  177.   {$EXTERNALSYM PROPSHEETPAGEW}
  178.   LPPROPSHEETPAGEW = ^PROPSHEETPAGEW;
  179.   {$EXTERNALSYM LPPROPSHEETPAGEW}
  180.   LPCPROPSHEETPAGEW = LPPROPSHEETPAGEW;
  181.   {$EXTERNALSYM LPCPROPSHEETPAGEW}
  182.   TPropSheetPageW = PROPSHEETPAGEW;
  183.   PPropSheetPageW = LPPROPSHEETPAGEW;
  184. {$IFDEF UNICODE}
  185.   PROPSHEETPAGE          = PROPSHEETPAGEW;
  186.   {$EXTERNALSYM PROPSHEETPAGE}
  187.   LPPROPSHEETPAGE        = LPPROPSHEETPAGEW;
  188.   {$EXTERNALSYM LPPROPSHEETPAGE}
  189.   LPCPROPSHEETPAGE       = LPCPROPSHEETPAGEW;
  190.   {$EXTERNALSYM LPCPROPSHEETPAGE}
  191.   TPropSheetPage = TPropSheetPageW;
  192.   PPropSheetPage = PPropSheetPageW;
  193.   
  194. const
  195.   PROPSHEETPAGE_V1_SIZE  = 40; {PROPSHEETPAGEW_V1_SIZE}
  196.   {$EXTERNALSYM PROPSHEETPAGE_V1_SIZE}
  197. {$ELSE}
  198.   PROPSHEETPAGE          = PROPSHEETPAGEA;
  199.   {$EXTERNALSYM PROPSHEETPAGE}
  200.   LPPROPSHEETPAGE        = LPPROPSHEETPAGEA;
  201.   {$EXTERNALSYM LPPROPSHEETPAGE}
  202.   LPCPROPSHEETPAGE       = LPCPROPSHEETPAGEA;
  203.   {$EXTERNALSYM LPCPROPSHEETPAGE}
  204.   TPropSheetPage = TPropSheetPageA;
  205.   PPropSheetPage = PPropSheetPageA;
  206. const
  207.   PROPSHEETPAGE_V1_SIZE  = 40; {PROPSHEETPAGEA_V1_SIZE}
  208.   {$EXTERNALSYM PROPSHEETPAGE_V1_SIZE}
  209. {$ENDIF}
  210. const
  211.   PSH_DEFAULT            = $00000000;
  212.   {$EXTERNALSYM PSH_DEFAULT}
  213.   PSH_PROPTITLE          = $00000001;
  214.   {$EXTERNALSYM PSH_PROPTITLE}
  215.   PSH_USEHICON           = $00000002;
  216.   {$EXTERNALSYM PSH_USEHICON}
  217.   PSH_USEICONID          = $00000004;
  218.   {$EXTERNALSYM PSH_USEICONID}
  219.   PSH_PROPSHEETPAGE      = $00000008;
  220.   {$EXTERNALSYM PSH_PROPSHEETPAGE}
  221.   PSH_WIZARDHASFINISH    = $00000010;
  222.   {$EXTERNALSYM PSH_WIZARDHASFINISH}
  223.   PSH_WIZARD             = $00000020;
  224.   {$EXTERNALSYM PSH_WIZARD}
  225.   PSH_USEPSTARTPAGE      = $00000040;
  226.   {$EXTERNALSYM PSH_USEPSTARTPAGE}
  227.   PSH_NOAPPLYNOW         = $00000080;
  228.   {$EXTERNALSYM PSH_NOAPPLYNOW}
  229.   PSH_USECALLBACK        = $00000100;
  230.   {$EXTERNALSYM PSH_USECALLBACK}
  231.   PSH_HASHELP            = $00000200;
  232.   {$EXTERNALSYM PSH_HASHELP}
  233.   PSH_MODELESS           = $00000400;
  234.   {$EXTERNALSYM PSH_MODELESS}
  235.   PSH_RTLREADING         = $00000800;
  236.   {$EXTERNALSYM PSH_RTLREADING}
  237.   PSH_WIZARDCONTEXTHELP  = $00001000;
  238.   {$EXTERNALSYM PSH_WIZARDCONTEXTHELP}
  239. //----- New flags for wizard97 -----------
  240. {$IFDEF _WIN32_IE_SMALLER_0500}
  241.   PSH_WIZARD97           = $00002000;
  242.   {$EXTERNALSYM PSH_WIZARD97}
  243. {$ELSE}
  244.   PSH_WIZARD97           = $01000000;
  245.   {$EXTERNALSYM PSH_WIZARD97}
  246. {$ENDIF}
  247. // 0x00004000 was not used by any previous release
  248.   PSH_WATERMARK          = $00008000;
  249.   {$EXTERNALSYM PSH_WATERMARK}
  250.   PSH_USEHBMWATERMARK    = $00010000;  // user pass in a hbmWatermark instead of pszbmWatermark
  251.   {$EXTERNALSYM PSH_USEHBMWATERMARK}
  252.   PSH_USEHPLWATERMARK    = $00020000;  //
  253.   {$EXTERNALSYM PSH_USEHPLWATERMARK}
  254.   PSH_STRETCHWATERMARK   = $00040000;  // stretchwatermark also applies for the header
  255.   {$EXTERNALSYM PSH_STRETCHWATERMARK}
  256.   PSH_HEADER             = $00080000;
  257.   {$EXTERNALSYM PSH_HEADER}
  258.   PSH_USEHBMHEADER       = $00100000;
  259.   {$EXTERNALSYM PSH_USEHBMHEADER}
  260.   PSH_USEPAGELANG        = $00200000;  // use frame dialog template matched to page
  261.   {$EXTERNALSYM PSH_USEPAGELANG}
  262. //----------------------------------------
  263. //----- New flags for wizard-lite --------
  264.  PSH_WIZARD_LITE        = $00400000;
  265.  {$EXTERNALSYM PSH_WIZARD_LITE}
  266.  PSH_NOCONTEXTHELP      = $02000000;
  267.  {$EXTERNALSYM PSH_NOCONTEXTHELP}
  268. //----------------------------------------
  269. type
  270.   PFNPROPSHEETCALLBACK = function (hwn: HWND; uMsg: UINT; lParam: LPARAM): Integer; stdcall;
  271.   {$EXTERNALSYM PFNPROPSHEETCALLBACK}
  272. //const
  273. //#define PROPSHEETHEADERA_V1_SIZE CCSIZEOF_STRUCT(PROPSHEETHEADERA, pfnCallback)
  274. //#define PROPSHEETHEADERW_V1_SIZE CCSIZEOF_STRUCT(PROPSHEETHEADERW, pfnCallback)
  275. type
  276.   _PROPSHEETHEADERA = record
  277.     dwSize: DWORD;
  278.     dwFlags: DWORD;
  279.     hwndParent: HWND;
  280.     hInstance: HINSTANCE;
  281.     u: record
  282.     case Integer of
  283.       0: (hIcon: HICON);
  284.       1: (pszIcon: LPCSTR);
  285.     end;
  286.     pszCaption: LPCSTR;
  287.     nPages: UINT;
  288.     u2: record
  289.     case Integer of
  290.       0: (nStartPage: UINT);
  291.       1: (pStartPage: LPCSTR);
  292.     end;
  293.     u3: record
  294.     case Integer of
  295.       0: (ppsp: LPCPROPSHEETPAGEA);
  296.       1: (phpage: PHPROPSHEETPAGE);
  297.     end;
  298.     pfnCallback: PFNPROPSHEETCALLBACK;
  299.     {$IFDEF _WIN32_IE_GE_0x0400}
  300.     u4: record
  301.     case Integer of
  302.       0: (hbmWatermark: HBITMAP);
  303.       1: (pszbmWatermark: LPCSTR);
  304.     end;
  305.     hplWatermark: HPALETTE;
  306.     u5: record
  307.     case Integer of
  308.       0: (hbmHeader: HBITMAP);     // Header  bitmap shares the palette with watermark
  309.       1: (pszbmHeader: LPCSTR);
  310.     end;
  311.     {$ENDIF}
  312.   end;
  313.   {$EXTERNALSYM _PROPSHEETHEADERA}
  314.   PROPSHEETHEADERA =_PROPSHEETHEADERA;
  315.   {$EXTERNALSYM PROPSHEETHEADERA}
  316.   LPPROPSHEETHEADERA = ^PROPSHEETHEADERA;
  317.   {$EXTERNALSYM LPPROPSHEETHEADERA}
  318.   LPCPROPSHEETHEADERA = LPPROPSHEETHEADERA;
  319.   {$EXTERNALSYM LPCPROPSHEETHEADERA}
  320.   TPropSheetHeaderA = PROPSHEETHEADERA;
  321.   PPropSheetHeaderA = LPPROPSHEETHEADERA;
  322.   _PROPSHEETHEADERW = record
  323.     dwSize: DWORD;
  324.     dwFlags: DWORD;
  325.     hwndParent: HWND;
  326.     hInstance: HINSTANCE;
  327.     u: record
  328.     case Integer of
  329.       0: (hIcon: HICON);
  330.       1: (pszIcon: LPCWSTR);
  331.     end;
  332.     pszCaption: LPCWSTR;
  333.     nPages: UINT;
  334.     u2: record
  335.     case Integer of
  336.       0: (nStartPage: UINT);
  337.       1: (pStartPage: LPCWSTR);
  338.     end;
  339.     u3: record
  340.     case Integer of
  341.       0: (ppsp: LPCPROPSHEETPAGEW);
  342.       1: (phpage: PHPROPSHEETPAGE);
  343.     end;
  344.     pfnCallback: PFNPROPSHEETCALLBACK;
  345.     {$IFDEF _WIN32_IE_GE_0x0400}
  346.     u4: record
  347.     case Integer of
  348.       0: (hbmWatermark: HBITMAP);
  349.       1: (pszbmWatermark: LPCWSTR);
  350.     end;
  351.     hplWatermark: HPALETTE;
  352.     u5: record
  353.     case Integer of
  354.       0: (hbmHeader: HBITMAP);     // Header  bitmap shares the palette with watermark
  355.       1: (pszbmHeader: LPCWSTR);
  356.     end;
  357.     {$ENDIF}
  358.   end;
  359.   {$EXTERNALSYM _PROPSHEETHEADERW}
  360.   PROPSHEETHEADERW =_PROPSHEETHEADERW;
  361.   {$EXTERNALSYM PROPSHEETHEADERW}
  362.   LPPROPSHEETHEADERW = ^PROPSHEETHEADERW;
  363.   {$EXTERNALSYM LPPROPSHEETHEADERW}
  364.   LPCPROPSHEETHEADERW = LPPROPSHEETHEADERW;
  365.   {$EXTERNALSYM LPCPROPSHEETHEADERW}
  366.   TPropSheetHeaderW = PROPSHEETHEADERW;
  367.   PPropSheetHeaderW = LPPROPSHEETHEADERW;
  368. {$IFDEF UNICODE}
  369.   PROPSHEETHEADER         = PROPSHEETHEADERW;
  370.   {$EXTERNALSYM PROPSHEETHEADER}
  371.   LPPROPSHEETHEADER       = LPPROPSHEETHEADERW;
  372.   {$EXTERNALSYM LPPROPSHEETHEADER}
  373.   LPCPROPSHEETHEADER      = LPCPROPSHEETHEADERW;
  374.   {$EXTERNALSYM LPCPROPSHEETHEADER}
  375.   TPropSheetHeader = TPropSheetHeaderW;
  376.   PPropSheetHeader = PPropSheetHeaderW;
  377. const
  378.   PROPSHEETHEADER_V1_SIZE = 40; {PROPSHEETHEADERW_V1_SIZE}
  379.   {$EXTERNALSYM PROPSHEETHEADER_V1_SIZE}
  380. {$ELSE}
  381.   PROPSHEETHEADER         = PROPSHEETHEADERA;
  382.   {$EXTERNALSYM PROPSHEETHEADER}
  383.   LPPROPSHEETHEADER       = LPPROPSHEETHEADERA;
  384.   {$EXTERNALSYM LPPROPSHEETHEADER}
  385.   LPCPROPSHEETHEADER      = LPCPROPSHEETHEADERA;
  386.   {$EXTERNALSYM LPCPROPSHEETHEADER}
  387.   TPropSheetHeader = TPropSheetHeaderA;
  388.   PPropSheetHeader = PPropSheetHeaderA;
  389. const
  390.   PROPSHEETHEADER_V1_SIZE = 40; {PROPSHEETHEADERA_V1_SIZE;}
  391.   {$EXTERNALSYM PROPSHEETHEADER_V1_SIZE}
  392. {$ENDIF}
  393. const
  394.   PSCB_INITIALIZED = 1;
  395.   {$EXTERNALSYM PSCB_INITIALIZED}
  396.   PSCB_PRECREATE   = 2;
  397.   {$EXTERNALSYM PSCB_PRECREATE}
  398. function CreatePropertySheetPageA(const lppsp: PROPSHEETPAGEA): HPROPSHEETPAGE; stdcall;
  399. {$EXTERNALSYM CreatePropertySheetPageA}
  400. function CreatePropertySheetPageW(const lppsp: PROPSHEETPAGEW): HPROPSHEETPAGE; stdcall;
  401. {$EXTERNALSYM DestroyPropertySheetPage}
  402. function DestroyPropertySheetPage(hPSPage: HPROPSHEETPAGE): BOOL; stdcall;
  403. {$EXTERNALSYM DestroyPropertySheetPage}
  404. function PropertySheetA(const lppsph: PROPSHEETHEADERA): INT_PTR; stdcall;
  405. {$EXTERNALSYM PropertySheetA}
  406. function PropertySheetW(const lppsph: PROPSHEETHEADERW): INT_PTR; stdcall;
  407. {$EXTERNALSYM PropertySheetW}
  408. {$IFDEF UNICODE}
  409. function CreatePropertySheetPage(const lppsp: PROPSHEETPAGEW): HPROPSHEETPAGE; stdcall;
  410. {$EXTERNALSYM DestroyPropertySheetPage}
  411. function PropertySheet(const lppsph: PROPSHEETHEADERW): INT_PTR; stdcall;
  412. {$EXTERNALSYM PropertySheet}
  413. {$ELSE}
  414. function CreatePropertySheetPage(const lppsp: PROPSHEETPAGEA): HPROPSHEETPAGE; stdcall;
  415. {$EXTERNALSYM CreatePropertySheetPage}
  416. function PropertySheet(const lppsph: PROPSHEETHEADERA): INT_PTR; stdcall;
  417. {$EXTERNALSYM PropertySheet}
  418. {$ENDIF}
  419. type
  420.   LPFNADDPROPSHEETPAGE = function (page: HPROPSHEETPAGE; lParam: LPARAM): BOOL; stdcall;
  421.   {$EXTERNALSYM LPFNADDPROPSHEETPAGE}
  422.   LPFNADDPROPSHEETPAGES = function (pv: LPVOID; fn: LPFNADDPROPSHEETPAGE; lParam: LPARAM): BOOL; stdcall;
  423.   {$EXTERNALSYM LPFNADDPROPSHEETPAGES}
  424.   _PSHNOTIFY = record
  425.     hdr: NMHDR;
  426.     lParam: LPARAM;
  427.   end;
  428.   {$EXTERNALSYM _PSHNOTIFY}
  429.   PSHNOTIFY = _PSHNOTIFY;
  430.   {$EXTERNALSYM PSHNOTIFY}
  431.   LPPSHNOTIFY = ^PSHNOTIFY;
  432.   {$EXTERNALSYM LPPSHNOTIFY}
  433.   TPSHNotify = PSHNOTIFY;
  434.   PPSHNotify = LPPSHNOTIFY;  
  435. const
  436.   PSN_FIRST              = ULONG(0-200);
  437.   {$EXTERNALSYM PSN_FIRST}
  438.   PSN_LAST               = ULONG(0-299);
  439.   {$EXTERNALSYM PSN_LAST}
  440.   PSN_SETACTIVE   = (PSN_FIRST-0);
  441.   {$EXTERNALSYM PSN_SETACTIVE}
  442.   PSN_KILLACTIVE  = (PSN_FIRST-1);
  443.   {$EXTERNALSYM PSN_KILLACTIVE}
  444.   //PSN_VALIDATE    = (PSN_FIRST-1);
  445.   //{$EXTERNALSYM PSN_VALIDATE}
  446.   PSN_APPLY       = (PSN_FIRST-2);
  447.   {$EXTERNALSYM PSN_APPLY}
  448.   PSN_RESET       = (PSN_FIRST-3);
  449.   {$EXTERNALSYM PSN_RESET}
  450.   //PSN_CANCEL      = (PSN_FIRST-3);
  451.   //{$EXTERNALSYM PSN_CANCEL}
  452.   PSN_HELP        = (PSN_FIRST-5);
  453.   {$EXTERNALSYM PSN_HELP}
  454.   PSN_WIZBACK     = (PSN_FIRST-6);
  455.   {$EXTERNALSYM PSN_WIZBACK}
  456.   PSN_WIZNEXT     = (PSN_FIRST-7);
  457.   {$EXTERNALSYM PSN_WIZNEXT}
  458.   PSN_WIZFINISH   = (PSN_FIRST-8);
  459.   {$EXTERNALSYM PSN_WIZFINISH}
  460.   PSN_QUERYCANCEL = (PSN_FIRST-9);
  461.   {$EXTERNALSYM PSN_QUERYCANCEL}
  462.   PSN_GETOBJECT = (PSN_FIRST-10);
  463.   {$EXTERNALSYM PSN_GETOBJECT}
  464.   PSN_TRANSLATEACCELERATOR = (PSN_FIRST-12);
  465.   {$EXTERNALSYM PSN_TRANSLATEACCELERATOR}
  466.   PSN_QUERYINITIALFOCUS    = (PSN_FIRST-13);
  467.   {$EXTERNALSYM PSN_QUERYINITIALFOCUS}
  468.   PSNRET_NOERROR              = 0;
  469.   {$EXTERNALSYM PSNRET_NOERROR}
  470.   PSNRET_INVALID              = 1;
  471.   {$EXTERNALSYM PSNRET_INVALID}
  472.   PSNRET_INVALID_NOCHANGEPAGE = 2;
  473.   {$EXTERNALSYM PSNRET_INVALID_NOCHANGEPAGE}
  474.   PSNRET_MESSAGEHANDLED       = 3;
  475.   {$EXTERNALSYM PSNRET_MESSAGEHANDLED}
  476.   PSM_SETCURSEL = (WM_USER + 101);
  477.   {$EXTERNALSYM PSM_SETCURSEL}
  478. function PropSheet_SetCurSel(hPropSheetDlg: HWND; hPage: HPROPSHEETPAGE; Index: Integer): BOOL;
  479. const
  480.   PSM_REMOVEPAGE = (WM_USER + 102);
  481.   {$EXTERNALSYM PSM_REMOVEPAGE}
  482. procedure PropSheet_RemovePage(hPropSheetDlg: HWND; Index: Integer; hPage: HPROPSHEETPAGE);
  483. const
  484.   PSM_ADDPAGE = (WM_USER + 103);
  485.   {$EXTERNALSYM PSM_ADDPAGE}
  486. function PropSheet_AddPage(hPropSheetDlg: HWND; hpage: HPROPSHEETPAGE): BOOL;
  487. const
  488.   PSM_CHANGED = (WM_USER + 104);
  489.   {$EXTERNALSYM PSM_CHANGED}
  490. function PropSheet_Changed(hPropSheetDlg: HWND; hwndPage: HWND): BOOL;
  491. const
  492.   PSM_RESTARTWINDOWS = (WM_USER + 105);
  493.   {$EXTERNALSYM PSM_RESTARTWINDOWS}
  494. procedure PropSheet_RestartWindows(hPropSheetDlg: HWND);
  495. const
  496.   PSM_REBOOTSYSTEM = (WM_USER + 106);
  497.   {$EXTERNALSYM PSM_REBOOTSYSTEM}
  498. procedure PropSheet_RebootSystem(hPropSheetDlg: HWND);
  499. const
  500.   PSM_CANCELTOCLOSE = (WM_USER + 107);
  501.   {$EXTERNALSYM PSM_CANCELTOCLOSE}
  502. procedure PropSheet_CancelToClose(hPropSheetDlg: HWND);
  503. const
  504.   PSM_QUERYSIBLINGS = (WM_USER + 108);
  505.   {$EXTERNALSYM PSM_QUERYSIBLINGS}
  506. function PropSheet_QuerySiblings(hPropSheetDlg: HWND; Param1: WPARAM; Param2: LPARAM): Integer;
  507. const
  508.   PSM_UNCHANGED = (WM_USER + 109);
  509.   {$EXTERNALSYM PSM_UNCHANGED}
  510. procedure PropSheet_UnChanged(hPropSheetDlg: HWND; hwndPage: HWND);
  511. const
  512.   PSM_APPLY = (WM_USER + 110);
  513.   {$EXTERNALSYM PSM_APPLY}
  514. function PropSheet_Apply(hPropSheetDlg: HWND): BOOL;
  515. const
  516.   PSM_SETTITLEA = (WM_USER + 111);
  517.   {$EXTERNALSYM PSM_SETTITLEA}
  518.   PSM_SETTITLEW = (WM_USER + 120);
  519.   {$EXTERNALSYM PSM_SETTITLEW}
  520. {$IFDEF UNICODE}
  521.   PSM_SETTITLE = PSM_SETTITLEW;
  522.   {$EXTERNALSYM PSM_SETTITLE}
  523. {$ELSE}
  524.   PSM_SETTITLE = PSM_SETTITLEA;
  525.   {$EXTERNALSYM PSM_SETTITLE}
  526. {$ENDIF}
  527. procedure PropSheet_SetTitle(hPropSheetDlg: HWND; dwStyle: DWORD; lpszText: LPTSTR);
  528. const
  529.   PSM_SETWIZBUTTONS = (WM_USER + 112);
  530.   {$EXTERNALSYM PSM_SETWIZBUTTONS}
  531. procedure PropSheet_SetWizButtons(hPropSheetDlg: HWND; dwFlags: DWORD);
  532. const
  533.   PSWIZB_BACK           = $00000001;
  534.   {$EXTERNALSYM PSWIZB_BACK}
  535.   PSWIZB_NEXT           = $00000002;
  536.   {$EXTERNALSYM PSWIZB_NEXT}
  537.   PSWIZB_FINISH         = $00000004;
  538.   {$EXTERNALSYM PSWIZB_FINISH}
  539.   PSWIZB_DISABLEDFINISH = $00000008;
  540.   {$EXTERNALSYM PSWIZB_DISABLEDFINISH}
  541.   PSM_PRESSBUTTON = (WM_USER + 113);
  542.   {$EXTERNALSYM PSM_PRESSBUTTON}
  543. function PropSheet_PressButton(hPropSheetDlg: HWND; iButton: Integer): BOOL;
  544. const
  545.   PSBTN_BACK     = 0;
  546.   {$EXTERNALSYM PSBTN_BACK}
  547.   PSBTN_NEXT     = 1;
  548.   {$EXTERNALSYM PSBTN_NEXT}
  549.   PSBTN_FINISH   = 2;
  550.   {$EXTERNALSYM PSBTN_FINISH}
  551.   PSBTN_OK       = 3;
  552.   {$EXTERNALSYM PSBTN_OK}
  553.   PSBTN_APPLYNOW = 4;
  554.   {$EXTERNALSYM PSBTN_APPLYNOW}
  555.   PSBTN_CANCEL   = 5;
  556.   {$EXTERNALSYM PSBTN_CANCEL}
  557.   PSBTN_HELP     = 6;
  558.   {$EXTERNALSYM PSBTN_HELP}
  559.   PSBTN_MAX      = 6;
  560.   {$EXTERNALSYM PSBTN_MAX}
  561.   PSM_SETCURSELID = (WM_USER + 114);
  562.   {$EXTERNALSYM PSM_SETCURSELID}
  563. function PropSheet_SetCurSelByID(hPropSheetDlg: HWND; id: Integer): BOOL;
  564. const
  565.   PSM_SETFINISHTEXTA = (WM_USER + 115);
  566.   {$EXTERNALSYM PSM_SETFINISHTEXTA}
  567.   PSM_SETFINISHTEXTW = (WM_USER + 121);
  568.   {$EXTERNALSYM PSM_SETFINISHTEXTW}
  569. {$IFDEF UNICODE}
  570.   PSM_SETFINISHTEXT = PSM_SETFINISHTEXTW;
  571.   {$EXTERNALSYM PSM_SETFINISHTEXT}
  572. {$ELSE}
  573.   PSM_SETFINISHTEXT = PSM_SETFINISHTEXTA;
  574.   {$EXTERNALSYM PSM_SETFINISHTEXT}
  575. {$ENDIF}
  576. procedure PropSheet_SetFinishText(hPropSheetDlg: HWND; lpszText: LPTSTR);
  577. const
  578.   PSM_GETTABCONTROL = (WM_USER + 116);
  579.   {$EXTERNALSYM PSM_GETTABCONTROL}
  580. function PropSheet_GetTabControl(hPropSheetDlg: HWND): HWND;
  581. const
  582.   PSM_ISDIALOGMESSAGE = (WM_USER + 117);
  583.   {$EXTERNALSYM PSM_ISDIALOGMESSAGE}
  584. function PropSheet_IsDialogMessage(hDlg: HWND; pMsg: LPMSG): BOOL;
  585. const
  586.   PSM_GETCURRENTPAGEHWND = (WM_USER + 118);
  587.   {$EXTERNALSYM PSM_GETCURRENTPAGEHWND}
  588. function PropSheet_GetCurrentPageHwnd(hDlg: HWND): HWND;
  589. const
  590.   PSM_INSERTPAGE = (WM_USER + 119);
  591.   {$EXTERNALSYM PSM_INSERTPAGE}
  592. function PropSheet_InsertPage(hPropSheetDlg: HWND; index: Integer; hpage: HPROPSHEETPAGE): BOOL;
  593. const
  594.   PSM_SETHEADERTITLEA = (WM_USER + 125);
  595.   {$EXTERNALSYM PSM_SETHEADERTITLEA}
  596.   PSM_SETHEADERTITLEW = (WM_USER + 126);
  597.   {$EXTERNALSYM PSM_SETHEADERTITLEW}
  598. {$IFDEF UNICODE}
  599.   PSM_SETHEADERTITLE = PSM_SETHEADERTITLEW;
  600.   {$EXTERNALSYM PSM_SETHEADERTITLE}
  601. {$ELSE}
  602.   PSM_SETHEADERTITLE = PSM_SETHEADERTITLEA;
  603.   {$EXTERNALSYM PSM_SETHEADERTITLE}
  604. {$ENDIF}
  605. function PropSheet_SetHeaderTitle(hWizardDlg: HWND; iPageIndex: Integer; lpszText: LPCSTR): Integer;
  606. const
  607.   PSM_SETHEADERSUBTITLEA = (WM_USER + 127);
  608.   {$EXTERNALSYM PSM_SETHEADERSUBTITLEA}
  609.   PSM_SETHEADERSUBTITLEW = (WM_USER + 128);
  610.   {$EXTERNALSYM PSM_SETHEADERSUBTITLEW}
  611. {$IFDEF UNICODE}
  612.   PSM_SETHEADERSUBTITLE = PSM_SETHEADERSUBTITLEW;
  613.   {$EXTERNALSYM PSM_SETHEADERSUBTITLE}
  614. {$ELSE}
  615.   PSM_SETHEADERSUBTITLE = PSM_SETHEADERSUBTITLEA;
  616.   {$EXTERNALSYM PSM_SETHEADERSUBTITLE}
  617. {$ENDIF}
  618. procedure PropSheet_SetHeaderSubTitle(hWizardDlg: HWND; iPageIndex: Integer; pszHeaderSubTitle: LPCSTR);
  619. const
  620.   PSM_HWNDTOINDEX = (WM_USER + 129);
  621.   {$EXTERNALSYM PSM_HWNDTOINDEX}
  622. function PropSheet_HwndToIndex(hPropSheetDlg: HWND; hPageDlg: HWND): Integer;
  623. const
  624.   PSM_INDEXTOHWND = (WM_USER + 130);
  625.   {$EXTERNALSYM PSM_INDEXTOHWND}
  626. function PropSheet_IndexToHwnd(hPropSheetDlg: HWND; iPageIndex: Integer): HWND;
  627. const
  628.   PSM_PAGETOINDEX = (WM_USER + 131);
  629.   {$EXTERNALSYM PSM_PAGETOINDEX}
  630. function PropSheet_PageToIndex(hPropSheetDlg: HWND; hPage: HPROPSHEETPAGE): Integer;
  631. const
  632.   PSM_INDEXTOPAGE = (WM_USER + 132);
  633.   {$EXTERNALSYM PSM_INDEXTOPAGE}
  634. function PropSheet_IndexToPage(hPropSheetDlg: HWND; iPageIndex: Integer): HPROPSHEETPAGE;
  635. const
  636.   PSM_IDTOINDEX = (WM_USER + 133);
  637.   {$EXTERNALSYM PSM_IDTOINDEX}
  638. function PropSheet_IdToIndex(hPropSheetDlg: HWND; iPageId: Integer): Integer;
  639. const
  640.   PSM_INDEXTOID = (WM_USER + 134);
  641.   {$EXTERNALSYM PSM_INDEXTOID}
  642. function PropSheet_IndexToId(hPropSheetDlg: HWND; iPageIndex: Integer): Integer;
  643. const
  644.   PSM_GETRESULT = (WM_USER + 135);
  645.   {$EXTERNALSYM PSM_GETRESULT}
  646. function PropSheet_GetResult(hPropSheetDlg: HWND): BOOL;
  647. const
  648.   PSM_RECALCPAGESIZES = (WM_USER + 136);
  649.   {$EXTERNALSYM PSM_RECALCPAGESIZES}
  650. function PropSheet_RecalcPageSizes(hPropSheetDlg: HWND): BOOL;
  651. const
  652.   ID_PSRESTARTWINDOWS = $2;
  653.   {$EXTERNALSYM ID_PSRESTARTWINDOWS}
  654.   ID_PSREBOOTSYSTEM   = (ID_PSRESTARTWINDOWS or $1);
  655.   {$EXTERNALSYM ID_PSREBOOTSYSTEM}
  656.   WIZ_CXDLG = 276;
  657.   {$EXTERNALSYM WIZ_CXDLG}
  658.   WIZ_CYDLG = 140;
  659.   {$EXTERNALSYM WIZ_CYDLG}
  660.   WIZ_CXBMP = 80;
  661.   {$EXTERNALSYM WIZ_CXBMP}
  662.   WIZ_BODYX  = 92;
  663.   {$EXTERNALSYM WIZ_BODYX}
  664.   WIZ_BODYCX = 184;
  665.   {$EXTERNALSYM WIZ_BODYCX}
  666.   PROP_SM_CXDLG = 212;
  667.   {$EXTERNALSYM PROP_SM_CXDLG}
  668.   PROP_SM_CYDLG = 188;
  669.   {$EXTERNALSYM PROP_SM_CYDLG}
  670.   PROP_MED_CXDLG = 227;
  671.   {$EXTERNALSYM PROP_MED_CXDLG}
  672.   PROP_MED_CYDLG = 215;
  673.   {$EXTERNALSYM PROP_MED_CYDLG}
  674.   PROP_LG_CXDLG = 252;
  675.   {$EXTERNALSYM PROP_LG_CXDLG}
  676.   PROP_LG_CYDLG = 218;
  677.   {$EXTERNALSYM PROP_LG_CYDLG}
  678. implementation
  679. const
  680.   comctl32 = 'comctl32.dll';
  681. {$IFDEF DYNAMIC_LINK}
  682. var
  683.   _CreatePropertySheetPageA: Pointer;
  684. function CreatePropertySheetPageA;
  685. begin
  686.   GetProcedureAddress(_CreatePropertySheetPageA, comctl32, 'CreatePropertySheetPageA');
  687.   asm
  688.     mov esp, ebp
  689.     pop ebp
  690.     jmp [_CreatePropertySheetPageA]
  691.   end;
  692. end;
  693. {$ELSE}
  694. function CreatePropertySheetPageA; external comctl32 name 'CreatePropertySheetPageA';
  695. {$ENDIF DYNAMIC_LINK}
  696. {$IFDEF DYNAMIC_LINK}
  697. var
  698.   _CreatePropertySheetPageW: Pointer;
  699. function CreatePropertySheetPageW;
  700. begin
  701.   GetProcedureAddress(_CreatePropertySheetPageW, comctl32, 'CreatePropertySheetPageW');
  702.   asm
  703.     mov esp, ebp
  704.     pop ebp
  705.     jmp [_CreatePropertySheetPageW]
  706.   end;
  707. end;
  708. {$ELSE}
  709. function CreatePropertySheetPageW; external comctl32 name 'CreatePropertySheetPageW';
  710. {$ENDIF DYNAMIC_LINK}
  711. {$IFDEF DYNAMIC_LINK}
  712. var
  713.   _DestroyPropertySheetPage: Pointer;
  714. function DestroyPropertySheetPage;
  715. begin
  716.   GetProcedureAddress(_DestroyPropertySheetPage, comctl32, 'DestroyPropertySheetPage');
  717.   asm
  718.     mov esp, ebp
  719.     pop ebp
  720.     jmp [_DestroyPropertySheetPage]
  721.   end;
  722. end;
  723. {$ELSE}
  724. function DestroyPropertySheetPage; external comctl32 name 'DestroyPropertySheetPage';
  725. {$ENDIF DYNAMIC_LINK}
  726. {$IFDEF DYNAMIC_LINK}
  727. var
  728.   _PropertySheetA: Pointer;
  729. function PropertySheetA;
  730. begin
  731.   GetProcedureAddress(_PropertySheetA, comctl32, 'PropertySheetA');
  732.   asm
  733.     mov esp, ebp
  734.     pop ebp
  735.     jmp [_PropertySheetA]
  736.   end;
  737. end;
  738. {$ELSE}
  739. function PropertySheetA; external comctl32 name 'PropertySheetA';
  740. {$ENDIF DYNAMIC_LINK}
  741. {$IFDEF DYNAMIC_LINK}
  742. var
  743.   _PropertySheetW: Pointer;
  744. function PropertySheetW;
  745. begin
  746.   GetProcedureAddress(_PropertySheetW, comctl32, 'PropertySheetW');
  747.   asm
  748.     mov esp, ebp
  749.     pop ebp
  750.     jmp [_PropertySheetW]
  751.   end;
  752. end;
  753. {$ELSE}
  754. function PropertySheetW; external comctl32 name 'PropertySheetW';
  755. {$ENDIF DYNAMIC_LINK}
  756. {$IFDEF UNICODE}
  757. {$IFDEF DYNAMIC_LINK}
  758. var
  759.   _CreatePropertySheetPage: Pointer;
  760. function CreatePropertySheetPage;
  761. begin
  762.   GetProcedureAddress(_CreatePropertySheetPage, comctl32, 'CreatePropertySheetPageW');
  763.   asm
  764.     mov esp, ebp
  765.     pop ebp
  766.     jmp [_CreatePropertySheetPage]
  767.   end;
  768. end;
  769. {$ELSE}
  770. function CreatePropertySheetPage; external comctl32 name 'CreatePropertySheetPageW';
  771. {$ENDIF DYNAMIC_LINK}
  772. {$IFDEF DYNAMIC_LINK}
  773. var
  774.   _PropertySheet: Pointer;
  775. function PropertySheet;
  776. begin
  777.   GetProcedureAddress(_PropertySheet, comctl32, 'PropertySheetW');
  778.   asm
  779.     mov esp, ebp
  780.     pop ebp
  781.     jmp [_PropertySheet]
  782.   end;
  783. end;
  784. {$ELSE}
  785. function PropertySheet; external comctl32 name 'PropertySheetW';
  786. {$ENDIF DYNAMIC_LINK}
  787. {$ELSE}
  788. {$IFDEF DYNAMIC_LINK}
  789. var
  790.   _CreatePropertySheetPage: Pointer;
  791. function CreatePropertySheetPage;
  792. begin
  793.   GetProcedureAddress(_CreatePropertySheetPage, comctl32, 'CreatePropertySheetPageA');
  794.   asm
  795.     mov esp, ebp
  796.     pop ebp
  797.     jmp [_CreatePropertySheetPage]
  798.   end;
  799. end;
  800. {$ELSE}
  801. function CreatePropertySheetPage; external comctl32 name 'CreatePropertySheetPageA';
  802. {$ENDIF DYNAMIC_LINK}
  803. {$IFDEF DYNAMIC_LINK}
  804. var
  805.   _PropertySheet: Pointer;
  806. function PropertySheet;
  807. begin
  808.   GetProcedureAddress(_PropertySheet, comctl32, 'PropertySheetA');
  809.   asm
  810.     mov esp, ebp
  811.     pop ebp
  812.     jmp [_PropertySheet]
  813.   end;
  814. end;
  815. {$ELSE}
  816. function PropertySheet; external comctl32 name 'PropertySheetA';
  817. {$ENDIF DYNAMIC_LINK}
  818. {$ENDIF}
  819. function PropSheet_SetCurSel(hPropSheetDlg: HWND; hPage: HPROPSHEETPAGE; Index: Integer): BOOL;
  820. begin
  821.   Result := BOOL(SendMessage(hPropSheetDlg, PSM_SETCURSEL, WPARAM(Index), LPARAM(hPage)));
  822. end;
  823. procedure PropSheet_RemovePage(hPropSheetDlg: HWND; Index: Integer; hPage: HPROPSHEETPAGE);
  824. begin
  825.   SendMessage(hPropSheetDlg, PSM_REMOVEPAGE, Index, LPARAM(hPage));
  826. end;
  827. function PropSheet_AddPage(hPropSheetDlg: HWND; hpage: HPROPSHEETPAGE): BOOL;
  828. begin
  829.   Result := BOOL(SendMessage(hPropSheetDlg, PSM_ADDPAGE, 0, LPARAM(hpage)));
  830. end;
  831. function PropSheet_Changed(hPropSheetDlg: HWND; hwndPage: HWND): BOOL;
  832. begin
  833.   Result := BOOL(SendMessage(hPropSheetDlg, PSM_CHANGED, WPARAM(hwndPage), 0));
  834. end;
  835. procedure PropSheet_RestartWindows(hPropSheetDlg: HWND);
  836. begin
  837.   SendMessage(hPropSheetDlg, PSM_RESTARTWINDOWS, 0, 0);
  838. end;
  839. procedure PropSheet_RebootSystem(hPropSheetDlg: HWND);
  840. begin
  841.   SendMessage(hPropSheetDlg, PSM_REBOOTSYSTEM, 0, 0);
  842. end;
  843. procedure PropSheet_CancelToClose(hPropSheetDlg: HWND);
  844. begin
  845.   PostMessage(hPropSheetDlg, PSM_CANCELTOCLOSE, 0, 0);
  846. end;
  847. function PropSheet_QuerySiblings(hPropSheetDlg: HWND; Param1: WPARAM; Param2: LPARAM): Integer;
  848. begin
  849.   Result := SendMessage(hPropSheetDlg, PSM_QUERYSIBLINGS, Param1, Param2);
  850. end;
  851. procedure PropSheet_UnChanged(hPropSheetDlg: HWND; hwndPage: HWND);
  852. begin
  853.   SendMessage(hPropSheetDlg, PSM_UNCHANGED, WPARAM(hwndPage), 0);
  854. end;
  855. function PropSheet_Apply(hPropSheetDlg: HWND): BOOL;
  856. begin
  857.   Result := BOOL(SendMessage(hPropSheetDlg, PSM_APPLY, 0, 0));
  858. end;
  859. procedure PropSheet_SetTitle(hPropSheetDlg: HWND; dwStyle: DWORD; lpszText: LPTSTR);
  860. begin
  861.   SendMessage(hPropSheetDlg, PSM_SETTITLE, dwStyle, LPARAM(LPCTSTR(lpszText)));
  862. end;
  863. procedure PropSheet_SetWizButtons(hPropSheetDlg: HWND; dwFlags: DWORD);
  864. begin
  865.   PostMessage(hPropSheetDlg, PSM_SETWIZBUTTONS, 0, LPARAM(dwFlags));
  866. end;
  867. function PropSheet_PressButton(hPropSheetDlg: HWND; iButton: Integer): BOOL;
  868. begin
  869.   Result := PostMessage(hPropSheetDlg, PSM_PRESSBUTTON, WPARAM(iButton), 0);
  870. end;
  871. function PropSheet_SetCurSelByID(hPropSheetDlg: HWND; id: Integer): BOOL;
  872. begin
  873.   Result := BOOL(SendMessage(hPropSheetDlg, PSM_SETCURSELID, 0, LPARAM(id)));
  874. end;
  875. procedure PropSheet_SetFinishText(hPropSheetDlg: HWND; lpszText: LPTSTR);
  876. begin
  877.   SendMessage(hPropSheetDlg, PSM_SETFINISHTEXT, 0, LPARAM(lpszText));
  878. end;
  879. function PropSheet_GetTabControl(hPropSheetDlg: HWND): HWND;
  880. begin
  881.   Result := SendMessage(hPropSheetDlg, PSM_GETTABCONTROL, 0, 0);
  882. end;
  883. function PropSheet_IsDialogMessage(hDlg: HWND; pMsg: LPMSG): BOOL;
  884. begin
  885.   Result := BOOL(SendMessage(hDlg, PSM_ISDIALOGMESSAGE, 0, LPARAM(pMsg)));
  886. end;
  887. function PropSheet_GetCurrentPageHwnd(hDlg: HWND): HWND;
  888. begin
  889.   Result := SendMessage(hDlg, PSM_GETCURRENTPAGEHWND, 0, 0);
  890. end;
  891. function PropSheet_InsertPage(hPropSheetDlg: HWND; index: Integer; hpage: HPROPSHEETPAGE): BOOL;
  892. begin
  893.   Result := BOOL(SendMessage(hPropSheetDlg, PSM_INSERTPAGE, WPARAM(index), LPARAM(hpage)));
  894. end;
  895. function PropSheet_SetHeaderTitle(hWizardDlg: HWND; iPageIndex: Integer; lpszText: LPCSTR): Integer;
  896. begin
  897.   Result := SendMessage(hWizardDlg, PSM_SETHEADERTITLE, WPARAM(iPageIndex), LPARAM(lpszText));
  898. end;
  899. procedure PropSheet_SetHeaderSubTitle(hWizardDlg: HWND; iPageIndex: Integer; pszHeaderSubTitle: LPCSTR);
  900. begin
  901.   SendMessage(hWizardDlg, PSM_SETHEADERSUBTITLE, WPARAM(iPageIndex), LPARAM(pszHeaderSubTitle));
  902. end;
  903. function PropSheet_HwndToIndex(hPropSheetDlg: HWND; hPageDlg: HWND): Integer;
  904. begin
  905.   Result := SendMessage(hPropSheetDlg, PSM_HWNDTOINDEX, WPARAM(hPageDlg), 0);
  906. end;
  907. function PropSheet_IndexToHwnd(hPropSheetDlg: HWND; iPageIndex: Integer): HWND;
  908. begin
  909.   Result := SendMessage(hPropSheetDlg, PSM_INDEXTOHWND, WPARAM(iPageIndex), 0);
  910. end;
  911. function PropSheet_PageToIndex(hPropSheetDlg: HWND; hPage: HPROPSHEETPAGE): Integer;
  912. begin
  913.   Result := SendMessage(hPropSheetDlg, PSM_PAGETOINDEX, 0, LPARAM(hpage));
  914. end;
  915. function PropSheet_IndexToPage(hPropSheetDlg: HWND; iPageIndex: Integer): HPROPSHEETPAGE;
  916. begin
  917.   Result := HPROPSHEETPAGE(SendMessage(hPropSheetDlg, PSM_INDEXTOPAGE, WPARAM(iPageIndex), 0));
  918. end;
  919. function PropSheet_IdToIndex(hPropSheetDlg: HWND; iPageId: Integer): Integer;
  920. begin
  921.   Result := SendMessage(hPropSheetDlg, PSM_IDTOINDEX, 0, LPARAM(iPageId));
  922. end;
  923. function PropSheet_IndexToId(hPropSheetDlg: HWND; iPageIndex: Integer): Integer;
  924. begin
  925.   Result := SendMessage(hPropSheetDlg, PSM_INDEXTOID, WPARAM(iPageIndex), 0)
  926. end;
  927. function PropSheet_GetResult(hPropSheetDlg: HWND): BOOL;
  928. begin
  929.   Result := BOOL(SendMessage(hPropSheetDlg, PSM_GETRESULT, 0, 0));
  930. end;
  931. function PropSheet_RecalcPageSizes(hPropSheetDlg: HWND): BOOL;
  932. begin
  933.   Result := BOOL(SendMessage(hPropSheetDlg, PSM_RECALCPAGESIZES, 0, 0));
  934. end;
  935. end.