jwaprsht.pas 31 KB

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