commdlg.pp 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616
  1. {
  2. This file is part of the Free Pascal run time library.
  3. Copyright (c) 2008 by Marco van de Voort
  4. member of the Free Pascal development team.
  5. See the file COPYING.FPC, included in this distribution,
  6. for details about the copyright.
  7. This program is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  10. Note these functions were in the windows unit in older versions
  11. **********************************************************************}
  12. unit commdlg;
  13. interface
  14. {$mode delphi} // interface
  15. {$ifndef Win64}
  16. {$packrecords 1}
  17. {$endif}
  18. {$ifdef FPC_OS_UNICODE}
  19. {$define UNICODE}
  20. {$endif}
  21. uses windows;
  22. Type
  23. LPOFNHOOKPROC=function (h:HWND; u:UINT; w:WPARAM; l:LPARAM): UINT_PTR; stdcall;
  24. OPENFILENAMEA_NT4 = record
  25. lStructSize : DWORD;
  26. hwndOwner : HWND;
  27. hInstance : HINST;
  28. lpstrFilter : LPCTSTR;
  29. lpstrCustomFilter : LPTSTR;
  30. nMaxCustFilter : DWORD;
  31. nFilterIndex : DWORD;
  32. lpstrFile : LPTSTR;
  33. nMaxFile : DWORD;
  34. lpstrFileTitle : LPTSTR;
  35. nMaxFileTitle : DWORD;
  36. lpstrInitialDir : LPCTSTR;
  37. lpstrTitle : LPCTSTR;
  38. Flags : DWORD;
  39. nFileOffset : WORD;
  40. nFileExtension : WORD;
  41. lpstrDefExt : LPCTSTR;
  42. lCustData : LPARAM;
  43. lpfnHook : LPOFNHOOKPROC;
  44. lpTemplateName : LPCTSTR;
  45. end;
  46. LPOPENFILENAMEA_NT4 = ^OPENFILENAMEA_NT4;
  47. TOPENFILENAMEA_NT4 = OPENFILENAMEA_NT4;
  48. POPENFILENAMEA_NT4 = ^OPENFILENAMEA_NT4;
  49. OPENFILENAMEW_NT4 = record
  50. lStructSize : DWORD;
  51. hwndOwner : HWND;
  52. hInstance : HINST;
  53. lpstrFilter : LPWSTR;
  54. lpstrCustomFilter : LPWSTR;
  55. nMaxCustFilter : DWORD;
  56. nFilterIndex : DWORD;
  57. lpstrFile : LPWSTR;
  58. nMaxFile : DWORD;
  59. lpstrFileTitle : LPWSTR;
  60. nMaxFileTitle : DWORD;
  61. lpstrInitialDir : LPWSTR;
  62. lpstrTitle : LPWSTR;
  63. Flags : DWORD;
  64. nFileOffset : WORD;
  65. nFileExtension : WORD;
  66. lpstrDefExt : LPWSTR;
  67. lCustData : LPARAM;
  68. lpfnHook : LPOFNHOOKPROC;
  69. lpTemplateName : LPWSTR;
  70. end;
  71. LPOPENFILENAMEW_NT4 = ^OPENFILENAMEW_NT4;
  72. TOPENFILENAMEW_NT4 = OPENFILENAMEW_NT4;
  73. POPENFILENAMEW_NT4 = ^OPENFILENAMEW_NT4;
  74. {$IFDEF UNICODE}
  75. LPOPENFILENAME_NT4 = ^OPENFILENAMEW_NT4;
  76. TOPENFILENAME_NT4 = OPENFILENAMEW_NT4;
  77. POPENFILENAME_NT4 = ^OPENFILENAMEW_NT4;
  78. OPENFILENAME_NT4 = OPENFILENAMEW_NT4;
  79. {$else}
  80. LPOPENFILENAME_NT4 = ^OPENFILENAMEA_NT4;
  81. TOPENFILENAME_NT4 = OPENFILENAMEA_NT4;
  82. POPENFILENAME_NT4 = ^OPENFILENAMEA_NT4;
  83. OPENFILENAME_NT4 = OPENFILENAMEA_NT4;
  84. {$endif}
  85. OPENFILENAMEA = record
  86. lStructSize : DWORD;
  87. hwndOwner : HWND;
  88. hInstance : HINST;
  89. lpstrFilter : LPCTSTR;
  90. lpstrCustomFilter : LPTSTR;
  91. nMaxCustFilter : DWORD;
  92. nFilterIndex : DWORD;
  93. lpstrFile : LPTSTR;
  94. nMaxFile : DWORD;
  95. lpstrFileTitle : LPTSTR;
  96. nMaxFileTitle : DWORD;
  97. lpstrInitialDir : LPCTSTR;
  98. lpstrTitle : LPCTSTR;
  99. Flags : DWORD;
  100. nFileOffset : WORD;
  101. nFileExtension : WORD;
  102. lpstrDefExt : LPCTSTR;
  103. lCustData : LPARAM;
  104. lpfnHook : LPOFNHOOKPROC;
  105. lpTemplateName : LPCTSTR;
  106. pvReserved : pointer;
  107. dwreserved : dword;
  108. FlagsEx : dword;
  109. end;
  110. LPOPENFILENAMEA = ^OPENFILENAMEA;
  111. TOPENFILENAMEA = OPENFILENAMEA;
  112. POPENFILENAMEA = ^OPENFILENAMEA;
  113. OPENFILENAMEW = record
  114. lStructSize : DWORD;
  115. hwndOwner : HWND;
  116. hInstance : HINST;
  117. lpstrFilter : LPWSTR;
  118. lpstrCustomFilter : LPWSTR;
  119. nMaxCustFilter : DWORD;
  120. nFilterIndex : DWORD;
  121. lpstrFile : LPWSTR;
  122. nMaxFile : DWORD;
  123. lpstrFileTitle : LPWSTR;
  124. nMaxFileTitle : DWORD;
  125. lpstrInitialDir : LPWSTR;
  126. lpstrTitle : LPWSTR;
  127. Flags : DWORD;
  128. nFileOffset : WORD;
  129. nFileExtension : WORD;
  130. lpstrDefExt : LPWSTR;
  131. lCustData : LPARAM;
  132. lpfnHook : LPOFNHOOKPROC;
  133. lpTemplateName : LPWSTR;
  134. pvReserved : pointer;
  135. dwreserved : dword;
  136. FlagsEx : dword;
  137. end;
  138. LPOPENFILENAMEW = ^OPENFILENAMEW;
  139. TOPENFILENAMEW = OPENFILENAMEW;
  140. POPENFILENAMEW = ^OPENFILENAMEW;
  141. OFNOTIFYA = record
  142. hdr : NMHDR;
  143. lpOFN : LPOPENFILENAME;
  144. pszFile : LPTSTR;
  145. end;
  146. LPOFNOTIFYA = ^OFNOTIFYA;
  147. _OFNOTIFYA = OFNOTIFYA;
  148. TOFNOTIFYA = OFNOTIFYA;
  149. POFNOTIFYA = ^OFNOTIFYA;
  150. OFNOTIFYW = record
  151. hdr : NMHDR;
  152. lpOFN : LPOPENFILENAMEW;
  153. pszFile : LPWSTR;
  154. end;
  155. LPOFNOTIFYW = ^OFNOTIFYW;
  156. _OFNOTIFYW = OFNOTIFYW;
  157. TOFNOTIFYW = OFNOTIFYW;
  158. POFNOTIFYW = ^OFNOTIFYW;
  159. {$ifdef unicode}
  160. OFNOTIFY = OFNOTIFYW;
  161. _OFNOTIFY = OFNOTIFYW;
  162. TOFNOTIFY = OFNOTIFYW;
  163. POFNOTIFY = ^OFNOTIFYW;
  164. LPOFNOTIFY = POFNOTIFYW;
  165. {$else}
  166. OFNOTIFY = OFNOTIFYA;
  167. _OFNOTIFY = OFNOTIFYA;
  168. TOFNOTIFY = OFNOTIFYA;
  169. POFNOTIFY = ^OFNOTIFYA;
  170. LPOFNOTIFY = POFNOTIFYA;
  171. {$endif}
  172. OFNOTIFYEXA = record
  173. hdr : NMHDR;
  174. lpOFN : LPOPENFILENAMEA;
  175. pszFile : pointer;
  176. pidl : pointer;
  177. end;
  178. LPOFNOTIFYEXA = ^OFNOTIFYEXA;
  179. _OFNOTIFYEXA = OFNOTIFYEXA;
  180. TOFNOTIFYEXA = OFNOTIFYEXA;
  181. POFNOTIFYEXA = ^OFNOTIFYEXA;
  182. OFNOTIFYEXW = record
  183. hdr : NMHDR;
  184. lpOFN : LPOPENFILENAMEW;
  185. pszFile : pointer;
  186. pidl : pointer;
  187. end;
  188. LPOFNOTIFYEXW = ^OFNOTIFYEXW;
  189. _OFNOTIFYEXW = OFNOTIFYEXW;
  190. TOFNOTIFYEXW = OFNOTIFYEXW;
  191. POFNOTIFYEXW = ^OFNOTIFYEXW;
  192. {$ifdef unicode}
  193. OFNOTIFYEX = OFNOTIFYEXW;
  194. _OFNOTIFYEX = OFNOTIFYEXW;
  195. TOFNOTIFYEX = OFNOTIFYEXW;
  196. POFNOTIFYEX = ^OFNOTIFYEXW;
  197. {$else}
  198. OFNOTIFYEX = OFNOTIFYEXA;
  199. _OFNOTIFYEX = OFNOTIFYEXA;
  200. TOFNOTIFYEX = OFNOTIFYEXA;
  201. POFNOTIFYEX = ^OFNOTIFYEXA;
  202. {$endif}
  203. {CHOOSECOLOR = record confilcts with function ChooseColor }
  204. TCHOOSECOLORA = record
  205. lStructSize : DWORD;
  206. hwndOwner : HWND;
  207. hInstance : HWND;
  208. rgbResult : COLORREF;
  209. lpCustColors : ^COLORREF;
  210. Flags : DWORD;
  211. lCustData : LPARAM;
  212. lpfnHook : LPCCHOOKPROC;
  213. lpTemplateName : LPCTSTR;
  214. end;
  215. LPCHOOSECOLORA = ^TCHOOSECOLORA;
  216. PCHOOSECOLORA = ^TCHOOSECOLORA;
  217. _CHOOSECOLORA = TCHOOSECOLORA;
  218. TCHOOSECOLORW = record
  219. lStructSize : DWORD;
  220. hwndOwner : HWND;
  221. hInstance : HWND;
  222. rgbResult : COLORREF;
  223. lpCustColors : ^COLORREF;
  224. Flags : DWORD;
  225. lCustData : LPARAM;
  226. lpfnHook : LPCCHOOKPROC;
  227. lpTemplateName : LPCWSTR;
  228. end;
  229. LPCHOOSECOLORW = ^TCHOOSECOLORW;
  230. PCHOOSECOLORW = ^TCHOOSECOLORW;
  231. _CHOOSECOLORW = TCHOOSECOLORW;
  232. {$ifdef unicode}
  233. _CHOOSECOLOR = TCHOOSECOLORW;
  234. TCHOOSECOLOR = TCHOOSECOLORW;
  235. PCHOOSECOLOR = ^TCHOOSECOLORW;
  236. LPCHOOSECOLOR = PCHOOSECOLORW;
  237. {$else}
  238. _CHOOSECOLOR = TCHOOSECOLORA;
  239. TCHOOSECOLOR = TCHOOSECOLORA;
  240. PCHOOSECOLOR = ^TCHOOSECOLORA;
  241. LPCHOOSECOLOR = PCHOOSECOLORA;
  242. {$endif}
  243. FINDREPLACEA = record
  244. lStructSize : DWORD;
  245. hwndOwner : HWND;
  246. hInstance : HINST;
  247. Flags : DWORD;
  248. lpstrFindWhat : LPTSTR;
  249. lpstrReplaceWith : LPTSTR;
  250. wFindWhatLen : WORD;
  251. wReplaceWithLen : WORD;
  252. lCustData : LPARAM;
  253. lpfnHook : LPFRHOOKPROC;
  254. lpTemplateName : LPCTSTR;
  255. end;
  256. LPFINDREPLACEA = ^FINDREPLACEA;
  257. TFINDREPLACEA = FINDREPLACEA;
  258. PFINDREPLACEA = ^FINDREPLACEA;
  259. FINDREPLACEW = record
  260. lStructSize : DWORD;
  261. hwndOwner : HWND;
  262. hInstance : HINST;
  263. Flags : DWORD;
  264. lpstrFindWhat : LPWSTR;
  265. lpstrReplaceWith : LPWSTR;
  266. wFindWhatLen : WORD;
  267. wReplaceWithLen : WORD;
  268. lCustData : LPARAM;
  269. lpfnHook : LPFRHOOKPROC;
  270. lpTemplateName : LPWSTR;
  271. end;
  272. LPFINDREPLACEW = ^FINDREPLACEW;
  273. TFINDREPLACEW = FINDREPLACEW;
  274. PFINDREPLACEW = ^FINDREPLACEW;
  275. {$ifdef unicode}
  276. _FINDREPLACE = FINDREPLACEW;
  277. TFINDREPLACE = FINDREPLACEW;
  278. PFINDREPLACE = ^FINDREPLACEW;
  279. LPFINDREPLACE = PFINDREPLACEW;
  280. {$else}
  281. _FINDREPLACE = FINDREPLACEA;
  282. TFINDREPLACE = FINDREPLACEA;
  283. PFINDREPLACE = ^FINDREPLACEA;
  284. LPFINDREPLACE = PFINDREPLACEA;
  285. {$endif}
  286. LOGFONTA = record
  287. lfHeight : LONG;
  288. lfWidth : LONG;
  289. lfEscapement : LONG;
  290. lfOrientation : LONG;
  291. lfWeight : LONG;
  292. lfItalic : BYTE;
  293. lfUnderline : BYTE;
  294. lfStrikeOut : BYTE;
  295. lfCharSet : BYTE;
  296. lfOutPrecision : BYTE;
  297. lfClipPrecision : BYTE;
  298. lfQuality : BYTE;
  299. lfPitchAndFamily : BYTE;
  300. lfFaceName : array[0..(LF_FACESIZE)-1] of TCHAR;
  301. end;
  302. TLOGFONTA = LOGFONTA;
  303. PLOGFONTA = ^LOGFONTA;
  304. LPLOGFONTA = PLOGFONTA;
  305. LOGFONTW = record
  306. lfHeight: LONG;
  307. lfWidth: LONG;
  308. lfEscapement: LONG;
  309. lfOrientation: LONG;
  310. lfWeight: LONG;
  311. lfItalic: BYTE;
  312. lfUnderline: BYTE;
  313. lfStrikeOut: BYTE;
  314. lfCharSet: BYTE;
  315. lfOutPrecision: BYTE;
  316. lfClipPrecision: BYTE;
  317. lfQuality: BYTE;
  318. lfPitchAndFamily: BYTE;
  319. lfFaceName: array [0..LF_FACESIZE - 1] of WCHAR;
  320. end;
  321. LPLOGFONTW = ^LOGFONTW;
  322. NPLOGFONTW = ^LOGFONTW;
  323. TLogFontW = LOGFONTW;
  324. PLogFontW = ^TLogFontW;
  325. {$ifdef unicode}
  326. LOGFONT = LOGFONTW;
  327. _LOGFONT = LOGFONTW;
  328. TLOGFONT = LOGFONTW;
  329. PLOGFONT = ^LOGFONTW;
  330. LPLOGFONT = PLOGFONTW;
  331. {$else}
  332. LOGFONT = LOGFONTA;
  333. _LOGFONT = LOGFONTA;
  334. TLOGFONT = LOGFONTA;
  335. PLOGFONT = ^LOGFONTA;
  336. LPLOGFONT = PLOGFONTA;
  337. {$endif}
  338. _CHOOSEFONTA = record
  339. lStructSize : DWORD;
  340. hwndOwner : HWND;
  341. hDC : HDC;
  342. lpLogFont : LPLOGFONTA;
  343. iPointSize : WINT;
  344. Flags : DWORD;
  345. rgbColors : DWORD;
  346. lCustData : LPARAM;
  347. lpfnHook : LPCFHOOKPROC;
  348. lpTemplateName : LPCTSTR;
  349. hInstance : HINST;
  350. lpszStyle : LPTSTR;
  351. nFontType : WORD;
  352. ___MISSING_ALIGNMENT__ : WORD;
  353. nSizeMin : WINT;
  354. nSizeMax : WINT;
  355. end;
  356. LPCHOOSEFONTA = ^TCHOOSEFONTA;
  357. PCHOOSEFONTA = ^TCHOOSEFONTA;
  358. TCHOOSEFONTA = _CHOOSEFONTA;
  359. _CHOOSEFONTW = record
  360. lStructSize : DWORD;
  361. hwndOwner : HWND;
  362. hDC : HDC;
  363. lpLogFont : LPLOGFONTW;
  364. iPointSize : WINT;
  365. Flags : DWORD;
  366. rgbColors : DWORD;
  367. lCustData : LPARAM;
  368. lpfnHook : LPCFHOOKPROC;
  369. lpTemplateName : LPWSTR;
  370. hInstance : HINST;
  371. lpszStyle : LPWSTR;
  372. nFontType : WORD;
  373. ___MISSING_ALIGNMENT__ : WORD;
  374. nSizeMin : WINT;
  375. nSizeMax : WINT;
  376. end;
  377. LPCHOOSEFONTW = ^TCHOOSEFONTW;
  378. PCHOOSEFONTW = ^TCHOOSEFONTW;
  379. TCHOOSEFONTW = _CHOOSEFONTW;
  380. {$ifdef unicode}
  381. _choosefont = TchoosefontW;
  382. Tchoosefont = TchoosefontW;
  383. Pchoosefont = ^_choosefontW;
  384. LPchoosefont = PchoosefontW;
  385. {$else}
  386. _choosefont = TchoosefontA;
  387. Tchoosefont = TchoosefontA;
  388. Pchoosefont = ^_choosefontA;
  389. LPchoosefont = PchoosefontA;
  390. {$endif}
  391. DEVNAMES = record
  392. wDriverOffset : WORD;
  393. wDeviceOffset : WORD;
  394. wOutputOffset : WORD;
  395. wDefault : WORD;
  396. end;
  397. LPDEVNAMES = ^DEVNAMES;
  398. tagDEVNAMES = DEVNAMES;
  399. TDEVNAMES = DEVNAMES;
  400. PDEVNAMES = ^DEVNAMES;
  401. TPRINTDLGA = record
  402. lStructSize : DWORD;
  403. hwndOwner : HWND;
  404. hDevMode : HANDLE;
  405. hDevNames : HANDLE;
  406. hDC : HDC;
  407. Flags : DWORD;
  408. nFromPage : WORD;
  409. nToPage : WORD;
  410. nMinPage : WORD;
  411. nMaxPage : WORD;
  412. nCopies : WORD;
  413. hInstance : HINST;
  414. lCustData : LPARAM;
  415. lpfnPrintHook : LPPRINTHOOKPROC;
  416. lpfnSetupHook : LPSETUPHOOKPROC;
  417. lpPrintTemplateName : LPCTSTR;
  418. lpSetupTemplateName : LPCTSTR;
  419. hPrintTemplate : HANDLE;
  420. hSetupTemplate : HANDLE;
  421. end;
  422. LPPRINTDLGA = ^TPRINTDLGA;
  423. PPRINTDLGA = ^TPRINTDLGA;
  424. _PRINTDLGA = TPRINTDLGA;
  425. tagPDA = TPRINTDLGA;
  426. TPDA = TPRINTDLGA;
  427. PPDA = ^TPRINTDLGA;
  428. TPRINTDLGW = record
  429. lStructSize : DWORD;
  430. hwndOwner : HWND;
  431. hDevMode : HANDLE;
  432. hDevNames : HANDLE;
  433. hDC : HDC;
  434. Flags : DWORD;
  435. nFromPage : WORD;
  436. nToPage : WORD;
  437. nMinPage : WORD;
  438. nMaxPage : WORD;
  439. nCopies : WORD;
  440. hInstance : HINST;
  441. lCustData : LPARAM;
  442. lpfnPrintHook : LPPRINTHOOKPROC;
  443. lpfnSetupHook : LPSETUPHOOKPROC;
  444. lpPrintTemplateName : LPWSTR;
  445. lpSetupTemplateName : LPWSTR;
  446. hPrintTemplate : HANDLE;
  447. hSetupTemplate : HANDLE;
  448. end;
  449. LPPRINTDLGW = ^TPRINTDLGW;
  450. PPRINTDLGW = ^TPRINTDLGW;
  451. _PRINTDLGW = TPRINTDLGW;
  452. tagPDW = TPRINTDLGW;
  453. TPDW = TPRINTDLGW;
  454. PPDW = ^TPRINTDLGW;
  455. {$ifndef unicode}
  456. LPPRINTDLG = ^TPRINTDLGA;
  457. PPRINTDLG = ^TPRINTDLGA;
  458. _PRINTDLG = TPRINTDLGA;
  459. tagPD = TPRINTDLGA;
  460. TPD = TPRINTDLGA;
  461. PPD = ^TPRINTDLGA;
  462. {$else}
  463. LPPRINTDLG = ^TPRINTDLGW;
  464. PPRINTDLG = ^TPRINTDLGW;
  465. _PRINTDLG = TPRINTDLGW;
  466. tagPD = TPRINTDLGW;
  467. TPD = TPRINTDLGW;
  468. PPD = ^TPRINTDLGW;
  469. {$endif}
  470. TPAGESETUPDLGA = record
  471. lStructSize : DWORD;
  472. hwndOwner : HWND;
  473. hDevMode : HGLOBAL;
  474. hDevNames : HGLOBAL;
  475. Flags : DWORD;
  476. ptPaperSize : POINT;
  477. rtMinMargin : RECT;
  478. rtMargin : RECT;
  479. hInstance : HINST;
  480. lCustData : LPARAM;
  481. lpfnPageSetupHook : LPPAGESETUPHOOK;
  482. lpfnPagePaintHook : LPPAGEPAINTHOOK;
  483. lpPageSetupTemplateName : LPCTSTR;
  484. hPageSetupTemplate : HGLOBAL;
  485. end;
  486. LPPAGESETUPDLGA = ^TPAGESETUPDLGA;
  487. PPAGESETUPDLGA = ^TPAGESETUPDLGA;
  488. _PAGESETUPDLGA = TPAGESETUPDLGA;
  489. tagPSDA = TPAGESETUPDLGA;
  490. TPSDA = TPAGESETUPDLGA;
  491. PPSDA = ^TPAGESETUPDLGA;
  492. TPAGESETUPDLGW = record
  493. lStructSize : DWORD;
  494. hwndOwner : HWND;
  495. hDevMode : HGLOBAL;
  496. hDevNames : HGLOBAL;
  497. Flags : DWORD;
  498. ptPaperSize : POINT;
  499. rtMinMargin : RECT;
  500. rtMargin : RECT;
  501. hInstance : HINST;
  502. lCustData : LPARAM;
  503. lpfnPageSetupHook : LPPAGESETUPHOOK;
  504. lpfnPagePaintHook : LPPAGEPAINTHOOK;
  505. lpPageSetupTemplateName : LPWSTR;
  506. hPageSetupTemplate : HGLOBAL;
  507. end;
  508. LPPAGESETUPDLGW = ^TPAGESETUPDLGW;
  509. PPAGESETUPDLGW = ^TPAGESETUPDLGW;
  510. _PAGESETUPDLGW = TPAGESETUPDLGW;
  511. tagPSDW = TPAGESETUPDLGW;
  512. TPSDW = TPAGESETUPDLGW;
  513. PPSDW = ^TPAGESETUPDLGW;
  514. {$ifdef unicode}
  515. _PAGESETUPDLG = TPAGESETUPDLGW;
  516. TPAGESETUPDLG = TPAGESETUPDLGW;
  517. PPAGESETUPDLG = ^TPAGESETUPDLGW;
  518. LPPAGESETUPDLG = PPAGESETUPDLGW;
  519. {$else}
  520. _PAGESETUPDLG = TPAGESETUPDLGA;
  521. TPAGESETUPDLG = TPAGESETUPDLGA;
  522. PPAGESETUPDLG = ^TPAGESETUPDLGA;
  523. LPPAGESETUPDLG = PPAGESETUPDLGA;
  524. {$endif}
  525. // todo tagpdexa, psdax
  526. IPrintDialogCallback= interface(IUnknown)
  527. ['{5852A2C3-6530-11D1-B6A3-0000F8757BF9}']
  528. function InitDone:HResult;Stdcall;
  529. function SelectionDone:HResult;Stdcall;
  530. function handleMessage(hdlg:HWND;uMsg:UINT;wparm:WPARAM;Lparm:LPARAM;pres :PLRESULT):HRESULT;StdCall;
  531. end;
  532. IPrintDialogServices= interface (IUnknown)
  533. ['{509AAEDA-5639-11D1-B6A1-0000F8757BF9}']
  534. function GetCurrentDevMode(pDevMode: LPDEVMODE;pcbSize:PUINT):HResult;Stdcall;
  535. function GetCurrentPrinterName(pPrinterName:LPWSTR;pcchSize:PUINT):HREsult;Stdcall;
  536. function GetCurrentPortName(PortName:LPWSTR;pcchSize:PUINT):HREsult;Stdcall;
  537. end;
  538. Const
  539. comctl32 = 'comctl32.dll';
  540. {$ifndef unicode}
  541. function GetOpenFileName(_para1:LPOPENFILENAME):WINBOOL; stdcall; external 'comdlg32' name 'GetOpenFileNameA';
  542. function GetSaveFileName(_para1:LPOPENFILENAME):WINBOOL; stdcall; external 'comdlg32' name 'GetSaveFileNameA';
  543. function GetFileTitle(_para1:LPCSTR; _para2:LPSTR; _para3:WORD):integer; stdcall; external 'comdlg32' name 'GetFileTitleA';
  544. function ChooseColor(_para1:LPCHOOSECOLOR):WINBOOL; stdcall; external 'comdlg32' name 'ChooseColorA';
  545. function FindText(_para1:LPFINDREPLACE):HWND; stdcall; external 'comdlg32' name 'FindTextA';
  546. function ReplaceText(_para1:LPFINDREPLACE):HWND; stdcall; external 'comdlg32' name 'ReplaceTextA';
  547. function ChooseFont(_para1:LPCHOOSEFONT):WINBOOL; stdcall; external 'comdlg32' name 'ChooseFontA';
  548. function PrintDlg(_para1:LPPRINTDLG):WINBOOL; stdcall; external 'comdlg32' name 'PrintDlgA';
  549. function PageSetupDlg(_para1:LPPAGESETUPDLG):WINBOOL; stdcall; external 'comdlg32' name 'PageSetupDlgA';
  550. {$else}
  551. function GetOpenFileName(_para1:LPOPENFILENAME):WINBOOL; stdcall; external 'comdlg32' name 'GetOpenFileNameW';
  552. function GetSaveFileName(_para1:LPOPENFILENAME):WINBOOL; stdcall; external 'comdlg32' name 'GetSaveFileNameW';
  553. function GetFileTitle(_para1:LPCWSTR; _para2:LPWSTR; _para3:WORD):integer; stdcall; external 'comdlg32' name 'GetFileTitleW';
  554. function ChooseColor(_para1:LPCHOOSECOLOR):WINBOOL; stdcall; external 'comdlg32' name 'ChooseColorW';
  555. function ReplaceText(_para1:LPFINDREPLACE):HWND; stdcall; external 'comdlg32' name 'ReplaceTextW';
  556. function ChooseFont(_para1:LPCHOOSEFONT):WINBOOL; stdcall; external 'comdlg32' name 'ChooseFontW';
  557. function FindText(_para1:LPFINDREPLACE):HWND; stdcall; external 'comdlg32' name 'FindTextW';
  558. function PrintDlg(_para1:LPPRINTDLG):WINBOOL; stdcall; external 'comdlg32' name 'PrintDlgW';
  559. function PageSetupDlg(_para1:LPPAGESETUPDLG):WINBOOL; stdcall; external 'comdlg32' name 'PageSetupDlgW';
  560. {$endif}
  561. function GetOpenFileNameA(_para1:LPOPENFILENAME):WINBOOL; stdcall; external 'comdlg32' name 'GetOpenFileNameA';
  562. function GetSaveFileNameA(_para1:LPOPENFILENAME):WINBOOL; stdcall; external 'comdlg32' name 'GetSaveFileNameA';
  563. function GetFileTitleA(_para1:LPCSTR; _para2:LPSTR; _para3:WORD):integer; stdcall; external 'comdlg32' name 'GetFileTitleA';
  564. function ChooseColorA(_para1:LPCHOOSECOLOR):WINBOOL; stdcall; external 'comdlg32' name 'ChooseColorA';
  565. function FindTextA(_para1:LPFINDREPLACE):HWND; stdcall; external 'comdlg32' name 'FindTextA';
  566. function ReplaceTextA(_para1:LPFINDREPLACE):HWND; stdcall; external 'comdlg32' name 'ReplaceTextA';
  567. function ChooseFontA(_para1:LPCHOOSEFONT):WINBOOL; stdcall; external 'comdlg32' name 'ChooseFontA';
  568. function PrintDlgA(_para1:LPPRINTDLG):WINBOOL; stdcall; external 'comdlg32' name 'PrintDlgA';
  569. function PageSetupDlgA(_para1:LPPAGESETUPDLG):WINBOOL; stdcall; external 'comdlg32' name 'PageSetupDlgA';
  570. function CommDlgExtendedError : DWORD; stdcall; external 'comdlg32' name 'CommDlgExtendedError';
  571. function GetOpenFileNameW(_para1:LPOPENFILENAME):WINBOOL; stdcall; external 'comdlg32' name 'GetOpenFileNameW';
  572. function GetSaveFileNameW(_para1:LPOPENFILENAME):WINBOOL; stdcall; external 'comdlg32' name 'GetSaveFileNameW';
  573. function GetFileTitleW(_para1:LPCWSTR; _para2:LPWSTR; _para3:WORD):integer; stdcall; external 'comdlg32' name 'GetFileTitleW';
  574. function ChooseColorW(_para1:LPCHOOSECOLOR):WINBOOL; stdcall; external 'comdlg32' name 'ChooseColorW';
  575. function ReplaceTextW(_para1:LPFINDREPLACE):HWND; stdcall; external 'comdlg32' name 'ReplaceTextW';
  576. function ChooseFontW(_para1:LPCHOOSEFONT):WINBOOL; stdcall; external 'comdlg32' name 'ChooseFontW';
  577. function FindTextW(_para1:LPFINDREPLACE):HWND; stdcall; external 'comdlg32' name 'FindTextW';
  578. function PrintDlgW(_para1:LPPRINTDLG):WINBOOL; stdcall; external 'comdlg32' name 'PrintDlgW';
  579. function PageSetupDlgW(_para1:LPPAGESETUPDLG):WINBOOL; stdcall; external 'comdlg32' name 'PageSetupDlgW';
  580. implementation
  581. end.