jwaprsht.pas 31 KB

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