jwaprsht.pas 31 KB

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