home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 May / PCP163A.iso / Runimage / Cbuilder4 / Source / Vcl / COMMDLG.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1999-01-26  |  35.0 KB  |  1,006 lines

  1.  
  2. {*******************************************************}
  3. {                                                       }
  4. {       Borland Delphi Run-time Library                 }
  5. {       Win32 common dialogs interface unit             }
  6. {                                                       }
  7. {       Copyright (c) 1995,98 Inprise Corporation       }
  8. {                                                       }
  9. {*******************************************************}
  10.  
  11. unit CommDlg;
  12.  
  13. {$WEAKPACKAGEUNIT}
  14.  
  15. {$HPPEMIT '#include <commdlg.h>'}
  16.  
  17. interface
  18.  
  19. uses Windows, Messages;
  20.  
  21. type
  22.   POpenFilenameA = ^TOpenFilenameA;
  23.   POpenFilenameW = ^TOpenFilenameW;
  24.   POpenFilename = POpenFilenameA;
  25.   {$EXTERNALSYM tagOFNA}
  26.   tagOFNA = packed record
  27.     lStructSize: DWORD;
  28.     hWndOwner: HWND;
  29.     hInstance: HINST;
  30.     lpstrFilter: PAnsiChar;
  31.     lpstrCustomFilter: PAnsiChar;
  32.     nMaxCustFilter: DWORD;
  33.     nFilterIndex: DWORD;
  34.     lpstrFile: PAnsiChar;
  35.     nMaxFile: DWORD;
  36.     lpstrFileTitle: PAnsiChar;
  37.     nMaxFileTitle: DWORD;
  38.     lpstrInitialDir: PAnsiChar;
  39.     lpstrTitle: PAnsiChar;
  40.     Flags: DWORD;
  41.     nFileOffset: Word;
  42.     nFileExtension: Word;
  43.     lpstrDefExt: PAnsiChar;
  44.     lCustData: LPARAM;
  45.     lpfnHook: function(Wnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): UINT stdcall;
  46.     lpTemplateName: PAnsiChar;
  47.   end;
  48.   {$EXTERNALSYM tagOFNW}
  49.   tagOFNW = packed record
  50.     lStructSize: DWORD;
  51.     hWndOwner: HWND;
  52.     hInstance: HINST;
  53.     lpstrFilter: PWideChar;
  54.     lpstrCustomFilter: PWideChar;
  55.     nMaxCustFilter: DWORD;
  56.     nFilterIndex: DWORD;
  57.     lpstrFile: PWideChar;
  58.     nMaxFile: DWORD;
  59.     lpstrFileTitle: PWideChar;
  60.     nMaxFileTitle: DWORD;
  61.     lpstrInitialDir: PWideChar;
  62.     lpstrTitle: PWideChar;
  63.     Flags: DWORD;
  64.     nFileOffset: Word;
  65.     nFileExtension: Word;
  66.     lpstrDefExt: PWideChar;
  67.     lCustData: LPARAM;
  68.     lpfnHook: function(Wnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): UINT stdcall;
  69.     lpTemplateName: PWideChar;
  70.   end;
  71.   {$EXTERNALSYM tagOFN}
  72.   tagOFN = tagOFNA;
  73.   TOpenFilenameA = tagOFNA;
  74.   TOpenFilenameW = tagOFNW;
  75.   TOpenFilename = TOpenFilenameA;
  76.   {$EXTERNALSYM OPENFILENAMEA}
  77.   OPENFILENAMEA = tagOFNA;
  78.   {$EXTERNALSYM OPENFILENAMEW}
  79.   OPENFILENAMEW = tagOFNW;
  80.   {$EXTERNALSYM OPENFILENAME}
  81.   OPENFILENAME = OPENFILENAMEA;
  82.  
  83. {$EXTERNALSYM GetOpenFileNameA}
  84. function GetOpenFileNameA(var OpenFile: TOpenFilenameA): Bool; stdcall;
  85. {$EXTERNALSYM GetOpenFileNameW}
  86. function GetOpenFileNameW(var OpenFile: TOpenFilenameW): Bool; stdcall;
  87. {$EXTERNALSYM GetOpenFileName}
  88. function GetOpenFileName(var OpenFile: TOpenFilename): Bool; stdcall;
  89. {$EXTERNALSYM GetSaveFileNameA}
  90. function GetSaveFileNameA(var OpenFile: TOpenFilenameA): Bool; stdcall;
  91. {$EXTERNALSYM GetSaveFileNameW}
  92. function GetSaveFileNameW(var OpenFile: TOpenFilenameW): Bool; stdcall;
  93. {$EXTERNALSYM GetSaveFileName}
  94. function GetSaveFileName(var OpenFile: TOpenFilename): Bool; stdcall;
  95. {$EXTERNALSYM GetFileTitleA}
  96. function GetFileTitleA(FileName: PAnsiChar; Title: PAnsiChar; TitleSize: Word): Smallint; stdcall;
  97. {$EXTERNALSYM GetFileTitleW}
  98. function GetFileTitleW(FileName: PWideChar; Title: PWideChar; TitleSize: Word): Smallint; stdcall;
  99. {$EXTERNALSYM GetFileTitle}
  100. function GetFileTitle(FileName: PChar; Title: PChar; TitleSize: Word): Smallint; stdcall;
  101.  
  102. const
  103.   {$EXTERNALSYM OFN_READONLY}
  104.   OFN_READONLY = $00000001;
  105.   {$EXTERNALSYM OFN_OVERWRITEPROMPT}
  106.   OFN_OVERWRITEPROMPT = $00000002;
  107.   {$EXTERNALSYM OFN_HIDEREADONLY}
  108.   OFN_HIDEREADONLY = $00000004;
  109.   {$EXTERNALSYM OFN_NOCHANGEDIR}
  110.   OFN_NOCHANGEDIR = $00000008;
  111.   {$EXTERNALSYM OFN_SHOWHELP}
  112.   OFN_SHOWHELP = $00000010;
  113.   {$EXTERNALSYM OFN_ENABLEHOOK}
  114.   OFN_ENABLEHOOK = $00000020;
  115.   {$EXTERNALSYM OFN_ENABLETEMPLATE}
  116.   OFN_ENABLETEMPLATE = $00000040;
  117.   {$EXTERNALSYM OFN_ENABLETEMPLATEHANDLE}
  118.   OFN_ENABLETEMPLATEHANDLE = $00000080;
  119.   {$EXTERNALSYM OFN_NOVALIDATE}
  120.   OFN_NOVALIDATE = $00000100;
  121.   {$EXTERNALSYM OFN_ALLOWMULTISELECT}
  122.   OFN_ALLOWMULTISELECT = $00000200;
  123.   {$EXTERNALSYM OFN_EXTENSIONDIFFERENT}
  124.   OFN_EXTENSIONDIFFERENT = $00000400;
  125.   {$EXTERNALSYM OFN_PATHMUSTEXIST}
  126.   OFN_PATHMUSTEXIST = $00000800;
  127.   {$EXTERNALSYM OFN_FILEMUSTEXIST}
  128.   OFN_FILEMUSTEXIST = $00001000;
  129.   {$EXTERNALSYM OFN_CREATEPROMPT}
  130.   OFN_CREATEPROMPT = $00002000;
  131.   {$EXTERNALSYM OFN_SHAREAWARE}
  132.   OFN_SHAREAWARE = $00004000;
  133.   {$EXTERNALSYM OFN_NOREADONLYRETURN}
  134.   OFN_NOREADONLYRETURN = $00008000;
  135.   {$EXTERNALSYM OFN_NOTESTFILECREATE}
  136.   OFN_NOTESTFILECREATE = $00010000;
  137.   {$EXTERNALSYM OFN_NONETWORKBUTTON}
  138.   OFN_NONETWORKBUTTON = $00020000;
  139.   {$EXTERNALSYM OFN_NOLONGNAMES}
  140.   OFN_NOLONGNAMES = $00040000;
  141.   {$EXTERNALSYM OFN_EXPLORER}
  142.   OFN_EXPLORER = $00080000;
  143.   {$EXTERNALSYM OFN_NODEREFERENCELINKS}
  144.   OFN_NODEREFERENCELINKS = $00100000;
  145.   {$EXTERNALSYM OFN_LONGNAMES}
  146.   OFN_LONGNAMES = $00200000;
  147.   {$EXTERNALSYM OFN_ENABLEINCLUDENOTIFY}
  148.   OFN_ENABLEINCLUDENOTIFY = $00400000;
  149.   {$EXTERNALSYM OFN_ENABLESIZING}
  150.   OFN_ENABLESIZING = $00800000;
  151.  
  152.  
  153. { Return values for the registered message sent to the hook function
  154.   when a sharing violation occurs.  OFN_SHAREFALLTHROUGH allows the
  155.   filename to be accepted, OFN_SHARENOWARN rejects the name but puts
  156.   up no warning (returned when the app has already put up a warning
  157.   message), and OFN_SHAREWARN puts up the default warning message
  158.   for sharing violations.
  159.  
  160.   Note:  Undefined return values map to OFN_SHAREWARN, but are
  161.          reserved for future use. }
  162.  
  163.   {$EXTERNALSYM OFN_SHAREFALLTHROUGH}
  164.   OFN_SHAREFALLTHROUGH = 2;
  165.   {$EXTERNALSYM OFN_SHARENOWARN}
  166.   OFN_SHARENOWARN = 1;
  167.   {$EXTERNALSYM OFN_SHAREWARN}
  168.   OFN_SHAREWARN = 0;
  169.  
  170. type
  171.   POFNotifyA = ^TOFNotifyA;
  172.   POFNotifyW = ^TOFNotifyW;
  173.   POFNotify = POFNotifyA;
  174.   {$EXTERNALSYM _OFNOTIFYA}
  175.   _OFNOTIFYA = packed record
  176.     hdr: TNMHdr;
  177.     lpOFN: POpenFilenameA;
  178.     pszFile: PAnsiChar;
  179.   end;
  180.   {$EXTERNALSYM _OFNOTIFYW}
  181.   _OFNOTIFYW = packed record
  182.     hdr: TNMHdr;
  183.     lpOFN: POpenFilenameW;
  184.     pszFile: PWideChar;
  185.   end;
  186.   {$EXTERNALSYM _OFNOTIFY}
  187.   _OFNOTIFY = _OFNOTIFYA;
  188.   TOFNotifyA = _OFNOTIFYA;
  189.   TOFNotifyW = _OFNOTIFYW;
  190.   TOFNotify = TOFNotifyA;
  191.   {$EXTERNALSYM OFNOTIFYA}
  192.   OFNOTIFYA = _OFNOTIFYA;
  193.   {$EXTERNALSYM OFNOTIFYW}
  194.   OFNOTIFYW = _OFNOTIFYW;
  195.   {$EXTERNALSYM OFNOTIFY}
  196.   OFNOTIFY = OFNOTIFYA;
  197.  
  198. const
  199.   {$EXTERNALSYM CDN_FIRST}
  200.   CDN_FIRST = -601;
  201.   {$EXTERNALSYM CDN_LAST}
  202.   CDN_LAST = -699;
  203.  
  204. { Notifications when Open or Save dialog status changes }
  205.  
  206.   {$EXTERNALSYM CDN_INITDONE}
  207.   CDN_INITDONE = CDN_FIRST - 0;
  208.   {$EXTERNALSYM CDN_SELCHANGE}
  209.   CDN_SELCHANGE = CDN_FIRST - 1;
  210.   {$EXTERNALSYM CDN_FOLDERCHANGE}
  211.   CDN_FOLDERCHANGE = CDN_FIRST - 2;
  212.   {$EXTERNALSYM CDN_SHAREVIOLATION}
  213.   CDN_SHAREVIOLATION = CDN_FIRST - 3;
  214.   {$EXTERNALSYM CDN_HELP}
  215.   CDN_HELP = CDN_FIRST - 4;
  216.   {$EXTERNALSYM CDN_FILEOK}
  217.   CDN_FILEOK = CDN_FIRST - 5;
  218.   {$EXTERNALSYM CDN_TYPECHANGE}
  219.   CDN_TYPECHANGE = CDN_FIRST - 6;
  220.   {$EXTERNALSYM CDN_INCLUDEITEM}
  221.   CDN_INCLUDEITEM = CDN_FIRST - 7;
  222.  
  223.   {$EXTERNALSYM CDM_FIRST}
  224.   CDM_FIRST = WM_USER + 100;
  225.   {$EXTERNALSYM CDM_LAST}
  226.   CDM_LAST = WM_USER + 200;
  227.  
  228. { Messages to query information from the Open or Save dialogs }
  229.  
  230. { lParam = pointer to text buffer that gets filled in
  231.   wParam = max number of characters of the text buffer (including NULL)
  232.   return = < 0 if error; number of characters needed (including NULL) }
  233.  
  234.   {$EXTERNALSYM CDM_GETSPEC}
  235.   CDM_GETSPEC = CDM_FIRST + 0;
  236.  
  237. { lParam = pointer to text buffer that gets filled in
  238.   wParam = max number of characters of the text buffer (including NULL)
  239.   return = < 0 if error; number of characters needed (including NULL) }
  240.  
  241.   {$EXTERNALSYM CDM_GETFILEPATH}
  242.   CDM_GETFILEPATH = CDM_FIRST + 1;
  243.  
  244. { lParam = pointer to text buffer that gets filled in
  245.   wParam = max number of characters of the text buffer (including NULL)
  246.   return = < 0 if error; number of characters needed (including NULL) }
  247.  
  248.   {$EXTERNALSYM CDM_GETFOLDERPATH}
  249.   CDM_GETFOLDERPATH = CDM_FIRST + 2;
  250.  
  251. { lParam = pointer to ITEMIDLIST buffer that gets filled in
  252.   wParam = size of the ITEMIDLIST buffer
  253.   return = < 0 if error; length of buffer needed }
  254.  
  255.   {$EXTERNALSYM CDM_GETFOLDERIDLIST}
  256.   CDM_GETFOLDERIDLIST = CDM_FIRST + 3;
  257.  
  258. { lParam = pointer to a string
  259.   wParam = ID of control to change
  260.   return = not used }
  261.  
  262.   {$EXTERNALSYM CDM_SETCONTROLTEXT}
  263.   CDM_SETCONTROLTEXT = CDM_FIRST + 4;
  264.  
  265. { lParam = not used
  266.   wParam = ID of control to change
  267.   return = not used }
  268.  
  269.   {$EXTERNALSYM CDM_HIDECONTROL}
  270.   CDM_HIDECONTROL = CDM_FIRST + 5;
  271.  
  272. { lParam = pointer to default extension (no dot)
  273.   wParam = not used
  274.   return = not used }
  275.  
  276.   {$EXTERNALSYM CDM_SETDEFEXT}
  277.   CDM_SETDEFEXT = CDM_FIRST + 6;
  278.  
  279. type
  280.   PChooseColorA = ^TChooseColorA;
  281.   PChooseColorW = ^TChooseColorW;
  282.   PChooseColor = PChooseColorA;
  283.   {$EXTERNALSYM tagCHOOSECOLORA}
  284.   tagCHOOSECOLORA = packed record
  285.     lStructSize: DWORD;
  286.     hWndOwner: HWND;
  287.     hInstance: HWND;
  288.     rgbResult: COLORREF;
  289.     lpCustColors: ^COLORREF;
  290.     Flags: DWORD;
  291.     lCustData: LPARAM;
  292.     lpfnHook: function(Wnd: HWND; Message: UINT; wParam: WPARAM; lParam: LPARAM): UINT stdcall;
  293.     lpTemplateName: PAnsiChar;
  294.   end;
  295.   {$EXTERNALSYM tagCHOOSECOLORW}
  296.   tagCHOOSECOLORW = packed record
  297.     lStructSize: DWORD;
  298.     hWndOwner: HWND;
  299.     hInstance: HWND;
  300.     rgbResult: COLORREF;
  301.     lpCustColors: ^COLORREF;
  302.     Flags: DWORD;
  303.     lCustData: LPARAM;
  304.     lpfnHook: function(Wnd: HWND; Message: UINT; wParam: WPARAM; lParam: LPARAM): UINT stdcall;
  305.     lpTemplateName: PWideChar;
  306.   end;
  307.   {$EXTERNALSYM tagCHOOSECOLOR}
  308.   tagCHOOSECOLOR = tagCHOOSECOLORA;
  309.   TChooseColorA = tagCHOOSECOLORA;
  310.   TChooseColorW = tagCHOOSECOLORW;
  311.   TChooseColor = TChooseColorA;
  312.  
  313. {$EXTERNALSYM ChooseColorA}
  314. function ChooseColorA(var CC: TChooseColorA): Bool; stdcall;
  315. {$EXTERNALSYM ChooseColorW}
  316. function ChooseColorW(var CC: TChooseColorW): Bool; stdcall;
  317. {$EXTERNALSYM ChooseColor}
  318. function ChooseColor(var CC: TChooseColor): Bool; stdcall;
  319.  
  320. const
  321.   {$EXTERNALSYM CC_RGBINIT}
  322.   CC_RGBINIT = $00000001;
  323.   {$EXTERNALSYM CC_FULLOPEN}
  324.   CC_FULLOPEN = $00000002;
  325.   {$EXTERNALSYM CC_PREVENTFULLOPEN}
  326.   CC_PREVENTFULLOPEN = $00000004;
  327.   {$EXTERNALSYM CC_SHOWHELP}
  328.   CC_SHOWHELP = $00000008;
  329.   {$EXTERNALSYM CC_ENABLEHOOK}
  330.   CC_ENABLEHOOK = $00000010;
  331.   {$EXTERNALSYM CC_ENABLETEMPLATE}
  332.   CC_ENABLETEMPLATE = $00000020;
  333.   {$EXTERNALSYM CC_ENABLETEMPLATEHANDLE}
  334.   CC_ENABLETEMPLATEHANDLE = $00000040;
  335.   {$EXTERNALSYM CC_SOLIDCOLOR}
  336.   CC_SOLIDCOLOR = $00000080;
  337.   {$EXTERNALSYM CC_ANYCOLOR}
  338.   CC_ANYCOLOR = $00000100;
  339.  
  340. type
  341.   PFindReplaceA = ^TFindReplaceA;
  342.   PFindReplaceW = ^TFindReplaceW;
  343.   PFindReplace = PFindReplaceA;
  344.   {$EXTERNALSYM tagFINDREPLACEA}
  345.   tagFINDREPLACEA = packed record
  346.     lStructSize: DWORD;        { size of this struct $20 }
  347.     hWndOwner: HWND;             { handle to owner's window }
  348.     hInstance: HINST;        { instance handle of.EXE that
  349.                                    contains cust. dlg. template }
  350.     Flags: DWORD;                { one or more of the fr_?? }
  351.     lpstrFindWhat: PAnsiChar;       { ptr. to search string    }
  352.     lpstrReplaceWith: PAnsiChar;    { ptr. to replace string   }
  353.     wFindWhatLen: Word;          { size of find buffer      }
  354.     wReplaceWithLen: Word;       { size of replace buffer   }
  355.     lCustData: LPARAM;           { data passed to hook fn.  }
  356.     lpfnHook: function(Wnd: HWND; Message: UINT; wParam: WPARAM; lParam: LPARAM): UINT stdcall;
  357.                                  { ptr. to hook fn. or nil }
  358.     lpTemplateName: PAnsiChar;     { custom template name     }
  359.   end;
  360.   {$EXTERNALSYM tagFINDREPLACEW}
  361.   tagFINDREPLACEW = packed record
  362.     lStructSize: DWORD;        { size of this struct $20 }
  363.     hWndOwner: HWND;             { handle to owner's window }
  364.     hInstance: HINST;        { instance handle of.EXE that
  365.                                    contains cust. dlg. template }
  366.     Flags: DWORD;                { one or more of the fr_?? }
  367.     lpstrFindWhat: PWideChar;       { ptr. to search string    }
  368.     lpstrReplaceWith: PWideChar;    { ptr. to replace string   }
  369.     wFindWhatLen: Word;          { size of find buffer      }
  370.     wReplaceWithLen: Word;       { size of replace buffer   }
  371.     lCustData: LPARAM;           { data passed to hook fn.  }
  372.     lpfnHook: function(Wnd: HWND; Message: UINT; wParam: WPARAM; lParam: LPARAM): UINT stdcall;
  373.                                  { ptr. to hook fn. or nil }
  374.     lpTemplateName: PWideChar;     { custom template name     }
  375.   end;
  376.   {$EXTERNALSYM tagFINDREPLACE}
  377.   tagFINDREPLACE = tagFINDREPLACEA;
  378.   TFindReplaceA = tagFINDREPLACEA;
  379.   TFindReplaceW = tagFINDREPLACEW;
  380.   TFindReplace = TFindReplaceA;
  381.   {$EXTERNALSYM FINDREPLACEA}
  382.   FINDREPLACEA = tagFINDREPLACEA;
  383.   {$EXTERNALSYM FINDREPLACEW}
  384.   FINDREPLACEW = tagFINDREPLACEW;
  385.   {$EXTERNALSYM FINDREPLACE}
  386.   FINDREPLACE = FINDREPLACEA;
  387.  
  388. const
  389.   {$EXTERNALSYM FR_DOWN}
  390.   FR_DOWN = $00000001;
  391.   {$EXTERNALSYM FR_WHOLEWORD}
  392.   FR_WHOLEWORD = $00000002;
  393.   {$EXTERNALSYM FR_MATCHCASE}
  394.   FR_MATCHCASE = $00000004;
  395.   {$EXTERNALSYM FR_FINDNEXT}
  396.   FR_FINDNEXT = $00000008;
  397.   {$EXTERNALSYM FR_REPLACE}
  398.   FR_REPLACE = $00000010;
  399.   {$EXTERNALSYM FR_REPLACEALL}
  400.   FR_REPLACEALL = $00000020;
  401.   {$EXTERNALSYM FR_DIALOGTERM}
  402.   FR_DIALOGTERM = $00000040;
  403.   {$EXTERNALSYM FR_SHOWHELP}
  404.   FR_SHOWHELP = $00000080;
  405.   {$EXTERNALSYM FR_ENABLEHOOK}
  406.   FR_ENABLEHOOK = $00000100;
  407.   {$EXTERNALSYM FR_ENABLETEMPLATE}
  408.   FR_ENABLETEMPLATE = $00000200;
  409.   {$EXTERNALSYM FR_NOUPDOWN}
  410.   FR_NOUPDOWN = $00000400;
  411.   {$EXTERNALSYM FR_NOMATCHCASE}
  412.   FR_NOMATCHCASE = $00000800;
  413.   {$EXTERNALSYM FR_NOWHOLEWORD}
  414.   FR_NOWHOLEWORD = $00001000;
  415.   FR_ENABLETEMPLATEHandle = $00002000;
  416.   {$EXTERNALSYM FR_HIDEUPDOWN}
  417.   FR_HIDEUPDOWN = $00004000;
  418.   {$EXTERNALSYM FR_HIDEMATCHCASE}
  419.   FR_HIDEMATCHCASE = $00008000;
  420.   {$EXTERNALSYM FR_HIDEWHOLEWORD}
  421.   FR_HIDEWHOLEWORD = $00010000;
  422.  
  423. {$EXTERNALSYM FindTextA}
  424. function FindTextA(var FindReplace: TFindReplaceA): HWND; stdcall;
  425. {$EXTERNALSYM FindTextW}
  426. function FindTextW(var FindReplace: TFindReplaceW): HWND; stdcall;
  427. {$EXTERNALSYM FindText}
  428. function FindText(var FindReplace: TFindReplace): HWND; stdcall;
  429. {$EXTERNALSYM ReplaceTextA}
  430. function ReplaceTextA(var FindReplace: TFindReplaceA): HWND; stdcall;
  431. {$EXTERNALSYM ReplaceTextW}
  432. function ReplaceTextW(var FindReplace: TFindReplaceW): HWND; stdcall;
  433. {$EXTERNALSYM ReplaceText}
  434. function ReplaceText(var FindReplace: TFindReplace): HWND; stdcall;
  435.  
  436. type
  437.   PChooseFontA = ^TChooseFontA;
  438.   PChooseFontW = ^TChooseFontW;
  439.   PChooseFont = PChooseFontA;
  440.   {$EXTERNALSYM tagCHOOSEFONTA}
  441.   tagCHOOSEFONTA = packed record
  442.     lStructSize: DWORD;
  443.     hWndOwner: HWnd;            { caller's window handle }
  444.     hDC: HDC;                   { printer DC/IC or nil }
  445.     lpLogFont: PLogFontA;     { pointer to a LOGFONT struct }
  446.     iPointSize: Integer;        { 10 * size in points of selected font }
  447.     Flags: DWORD;               { dialog flags }
  448.     rgbColors: COLORREF;        { returned text color }
  449.     lCustData: LPARAM;          { data passed to hook function }
  450.     lpfnHook: function(Wnd: HWND; Message: UINT; wParam: WPARAM; lParam: LPARAM): UINT stdcall;
  451.                                 { pointer to hook function }
  452.     lpTemplateName: PAnsiChar;    { custom template name }
  453.     hInstance: HINST;       { instance handle of EXE that contains
  454.                                   custom dialog template }
  455.     lpszStyle: PAnsiChar;         { return the style field here
  456.                                   must be lf_FaceSize or bigger }
  457.     nFontType: Word;            { same value reported to the EnumFonts
  458.                                   call back with the extra fonttype_
  459.                                   bits added }
  460.     wReserved: Word;
  461.     nSizeMin: Integer;          { minimum point size allowed and }
  462.     nSizeMax: Integer;          { maximum point size allowed if
  463.                                   cf_LimitSize is used }
  464.   end;
  465.   {$EXTERNALSYM tagCHOOSEFONTW}
  466.   tagCHOOSEFONTW = packed record
  467.     lStructSize: DWORD;
  468.     hWndOwner: HWnd;            { caller's window handle }
  469.     hDC: HDC;                   { printer DC/IC or nil }
  470.     lpLogFont: PLogFontW;     { pointer to a LOGFONT struct }
  471.     iPointSize: Integer;        { 10 * size in points of selected font }
  472.     Flags: DWORD;               { dialog flags }
  473.     rgbColors: COLORREF;        { returned text color }
  474.     lCustData: LPARAM;          { data passed to hook function }
  475.     lpfnHook: function(Wnd: HWND; Message: UINT; wParam: WPARAM; lParam: LPARAM): UINT stdcall;
  476.                                 { pointer to hook function }
  477.     lpTemplateName: PWideChar;    { custom template name }
  478.     hInstance: HINST;       { instance handle of EXE that contains
  479.                                   custom dialog template }
  480.     lpszStyle: PWideChar;         { return the style field here
  481.                                   must be lf_FaceSize or bigger }
  482.     nFontType: Word;            { same value reported to the EnumFonts
  483.                                   call back with the extra fonttype_
  484.                                   bits added }
  485.     wReserved: Word;
  486.     nSizeMin: Integer;          { minimum point size allowed and }
  487.     nSizeMax: Integer;          { maximum point size allowed if
  488.                                   cf_LimitSize is used }
  489.   end;
  490.   {$EXTERNALSYM tagCHOOSEFONT}
  491.   tagCHOOSEFONT = tagCHOOSEFONTA;
  492.   TChooseFontA = tagCHOOSEFONTA;
  493.   TChooseFontW = tagCHOOSEFONTW;
  494.   TChooseFont = TChooseFontA;
  495.  
  496. {$EXTERNALSYM ChooseFontA}
  497. function ChooseFontA(var ChooseFont: TChooseFontA): Bool; stdcall;
  498. {$EXTERNALSYM ChooseFontW}
  499. function ChooseFontW(var ChooseFont: TChooseFontW): Bool; stdcall;
  500. {$EXTERNALSYM ChooseFont}
  501. function ChooseFont(var ChooseFont: TChooseFont): Bool; stdcall;
  502.  
  503. const
  504.   {$EXTERNALSYM CF_SCREENFONTS}
  505.   CF_SCREENFONTS = $00000001;
  506.   {$EXTERNALSYM CF_PRINTERFONTS}
  507.   CF_PRINTERFONTS = $00000002;
  508.   {$EXTERNALSYM CF_BOTH}
  509.   CF_BOTH = CF_SCREENFONTS OR CF_PRINTERFONTS;
  510.   {$EXTERNALSYM CF_SHOWHELP}
  511.   CF_SHOWHELP = $00000004;
  512.   {$EXTERNALSYM CF_ENABLEHOOK}
  513.   CF_ENABLEHOOK = $00000008;
  514.   {$EXTERNALSYM CF_ENABLETEMPLATE}
  515.   CF_ENABLETEMPLATE = $00000010;
  516.   {$EXTERNALSYM CF_ENABLETEMPLATEHANDLE}
  517.   CF_ENABLETEMPLATEHANDLE = $00000020;
  518.   {$EXTERNALSYM CF_INITTOLOGFONTSTRUCT}
  519.   CF_INITTOLOGFONTSTRUCT = $00000040;
  520.   {$EXTERNALSYM CF_USESTYLE}
  521.   CF_USESTYLE = $00000080;
  522.   {$EXTERNALSYM CF_EFFECTS}
  523.   CF_EFFECTS = $00000100;
  524.   {$EXTERNALSYM CF_APPLY}
  525.   CF_APPLY = $00000200;
  526.   {$EXTERNALSYM CF_ANSIONLY}
  527.   CF_ANSIONLY = $00000400;
  528.   {$EXTERNALSYM CF_SCRIPTSONLY}
  529.   CF_SCRIPTSONLY = CF_ANSIONLY;
  530.   {$EXTERNALSYM CF_NOVECTORFONTS}
  531.   CF_NOVECTORFONTS = $00000800;
  532.   {$EXTERNALSYM CF_NOOEMFONTS}
  533.   CF_NOOEMFONTS = CF_NOVECTORFONTS;
  534.   {$EXTERNALSYM CF_NOSIMULATIONS}
  535.   CF_NOSIMULATIONS = $00001000;
  536.   {$EXTERNALSYM CF_LIMITSIZE}
  537.   CF_LIMITSIZE = $00002000;
  538.   {$EXTERNALSYM CF_FIXEDPITCHONLY}
  539.   CF_FIXEDPITCHONLY = $00004000;
  540.   {$EXTERNALSYM CF_WYSIWYG}
  541.   CF_WYSIWYG = $00008000; { must also have CF_SCREENFONTS & CF_PRINTERFONTS }
  542.   {$EXTERNALSYM CF_FORCEFONTEXIST}
  543.   CF_FORCEFONTEXIST = $00010000;
  544.   {$EXTERNALSYM CF_SCALABLEONLY}
  545.   CF_SCALABLEONLY = $00020000;
  546.   {$EXTERNALSYM CF_TTONLY}
  547.   CF_TTONLY = $00040000;
  548.   {$EXTERNALSYM CF_NOFACESEL}
  549.   CF_NOFACESEL = $00080000;
  550.   {$EXTERNALSYM CF_NOSTYLESEL}
  551.   CF_NOSTYLESEL = $00100000;
  552.   {$EXTERNALSYM CF_NOSIZESEL}
  553.   CF_NOSIZESEL = $00200000;
  554.   {$EXTERNALSYM CF_SELECTSCRIPT}
  555.   CF_SELECTSCRIPT = $00400000;
  556.   {$EXTERNALSYM CF_NOSCRIPTSEL}
  557.   CF_NOSCRIPTSEL = $00800000;
  558.   {$EXTERNALSYM CF_NOVERTFONTS}
  559.   CF_NOVERTFONTS = $01000000;
  560.  
  561. { these are extra nFontType bits that are added to what is returned to the
  562.   EnumFonts callback routine }
  563.  
  564.   {$EXTERNALSYM SIMULATED_FONTTYPE}
  565.   SIMULATED_FONTTYPE = $8000;
  566.   {$EXTERNALSYM PRINTER_FONTTYPE}
  567.   PRINTER_FONTTYPE = $4000;
  568.   {$EXTERNALSYM SCREEN_FONTTYPE}
  569.   SCREEN_FONTTYPE = $2000;
  570.   {$EXTERNALSYM BOLD_FONTTYPE}
  571.   BOLD_FONTTYPE = $0100;
  572.   {$EXTERNALSYM ITALIC_FONTTYPE}
  573.   ITALIC_FONTTYPE = $0200;
  574.   {$EXTERNALSYM REGULAR_FONTTYPE}
  575.   REGULAR_FONTTYPE = $0400;
  576.  
  577.   {$EXTERNALSYM OPENTYPE_FONTTYPE}
  578.   OPENTYPE_FONTTYPE = $10000;
  579.   {$EXTERNALSYM TYPE1_FONTTYPE}
  580.   TYPE1_FONTTYPE = $20000;
  581.   {$EXTERNALSYM DSIG_FONTTYPE}
  582.   DSIG_FONTTYPE = $40000;
  583.  
  584.   {$EXTERNALSYM WM_CHOOSEFONT_GETLOGFONT}
  585.   WM_CHOOSEFONT_GETLOGFONT = WM_USER + 1;
  586.   {$EXTERNALSYM WM_CHOOSEFONT_SETLOGFONT}
  587.   WM_CHOOSEFONT_SETLOGFONT = WM_USER + 101; { removed in 4.0 SDK }
  588.   {$EXTERNALSYM WM_CHOOSEFONT_SETFLAGS}
  589.   WM_CHOOSEFONT_SETFLAGS   = WM_USER + 102; { removed in 4.0 SDK }
  590.  
  591. { strings used to obtain unique window message for communication
  592.   between dialog and caller }
  593.  
  594.   {$EXTERNALSYM LBSELCHSTRING}
  595.   LBSELCHSTRING = 'commdlg_LBSelChangedNotify';
  596.   {$EXTERNALSYM SHAREVISTRING}
  597.   SHAREVISTRING = 'commdlg_ShareViolation';
  598.   {$EXTERNALSYM FILEOKSTRING}
  599.   FILEOKSTRING  = 'commdlg_FileNameOK';
  600.   {$EXTERNALSYM COLOROKSTRING}
  601.   COLOROKSTRING = 'commdlg_ColorOK';
  602.   {$EXTERNALSYM SETRGBSTRING}
  603.   SETRGBSTRING  = 'commdlg_SetRGBColor';
  604.   {$EXTERNALSYM FINDMSGSTRING}
  605.   FINDMSGSTRING = 'commdlg_FindReplace';
  606.   {$EXTERNALSYM HELPMSGSTRING}
  607.   HELPMSGSTRING = 'commdlg_help';
  608.  
  609. { HIWORD values for lParam of commdlg_LBSelChangeNotify message }
  610.  
  611. const
  612.   {$EXTERNALSYM CD_LBSELNOITEMS}
  613.   CD_LBSELNOITEMS = -1;
  614.   {$EXTERNALSYM CD_LBSELCHANGE}
  615.   CD_LBSELCHANGE  = 0;
  616.   {$EXTERNALSYM CD_LBSELSUB}
  617.   CD_LBSELSUB     = 1;
  618.   {$EXTERNALSYM CD_LBSELADD}
  619.   CD_LBSELADD     = 2;
  620.  
  621. type
  622.   PPrintDlgA = ^TPrintDlgA;
  623.   PPrintDlgW = ^TPrintDlgW;
  624.   PPrintDlg = PPrintDlgA;
  625.   {$EXTERNALSYM tagPDA}
  626.   tagPDA = packed record
  627.     lStructSize: DWORD;
  628.     hWndOwner: HWND;
  629.     hDevMode: HGLOBAL;
  630.     hDevNames: HGLOBAL;
  631.     hDC: HDC;
  632.     Flags: DWORD;
  633.     nFromPage: Word;
  634.     nToPage: Word;
  635.     nMinPage: Word;
  636.     nMaxPage: Word;
  637.     nCopies: Word;
  638.     hInstance: HINST;
  639.     lCustData: LPARAM;
  640.     lpfnPrintHook: function(Wnd: HWND; Message: UINT; wParam: WPARAM; lParam: LPARAM): UINT stdcall;
  641.     lpfnSetupHook: function(Wnd: HWND; Message: UINT; wParam: WPARAM; lParam: LPARAM): UINT stdcall;
  642.     lpPrintTemplateName: PAnsiChar;
  643.     lpSetupTemplateName: PAnsiChar;
  644.     hPrintTemplate: HGLOBAL;
  645.     hSetupTemplate: HGLOBAL;
  646.   end;
  647.   {$EXTERNALSYM tagPDW}
  648.   tagPDW = packed record
  649.     lStructSize: DWORD;
  650.     hWndOwner: HWND;
  651.     hDevMode: HGLOBAL;
  652.     hDevNames: HGLOBAL;
  653.     hDC: HDC;
  654.     Flags: DWORD;
  655.     nFromPage: Word;
  656.     nToPage: Word;
  657.     nMinPage: Word;
  658.     nMaxPage: Word;
  659.     nCopies: Word;
  660.     hInstance: HINST;
  661.     lCustData: LPARAM;
  662.     lpfnPrintHook: function(Wnd: HWND; Message: UINT; wParam: WPARAM; lParam: LPARAM): UINT stdcall;
  663.     lpfnSetupHook: function(Wnd: HWND; Message: UINT; wParam: WPARAM; lParam: LPARAM): UINT stdcall;
  664.     lpPrintTemplateName: PWideChar;
  665.     lpSetupTemplateName: PWideChar;
  666.     hPrintTemplate: HGLOBAL;
  667.     hSetupTemplate: HGLOBAL;
  668.   end;
  669.   {$EXTERNALSYM tagPD}
  670.   tagPD = tagPDA;
  671.   TPrintDlgA = tagPDA;
  672.   TPrintDlgW = tagPDW;
  673.   TPrintDlg = TPrintDlgA;
  674.  
  675. {$EXTERNALSYM PrintDlgA}
  676. function PrintDlgA(var PrintDlg: TPrintDlgA): Bool; stdcall;
  677. {$EXTERNALSYM PrintDlgW}
  678. function PrintDlgW(var PrintDlg: TPrintDlgW): Bool; stdcall;
  679. {$EXTERNALSYM PrintDlg}
  680. function PrintDlg(var PrintDlg: TPrintDlg): Bool; stdcall;
  681.  
  682. const
  683.   {$EXTERNALSYM PD_ALLPAGES}
  684.   PD_ALLPAGES = $00000000;
  685.   {$EXTERNALSYM PD_SELECTION}
  686.   PD_SELECTION = $00000001;
  687.   {$EXTERNALSYM PD_PAGENUMS}
  688.   PD_PAGENUMS = $00000002;
  689.   {$EXTERNALSYM PD_NOSELECTION}
  690.   PD_NOSELECTION = $00000004;
  691.   {$EXTERNALSYM PD_NOPAGENUMS}
  692.   PD_NOPAGENUMS = $00000008;
  693.   {$EXTERNALSYM PD_COLLATE}
  694.   PD_COLLATE = $00000010;
  695.   {$EXTERNALSYM PD_PRINTTOFILE}
  696.   PD_PRINTTOFILE = $00000020;
  697.   {$EXTERNALSYM PD_PRINTSETUP}
  698.   PD_PRINTSETUP = $00000040;
  699.   {$EXTERNALSYM PD_NOWARNING}
  700.   PD_NOWARNING = $00000080;
  701.   {$EXTERNALSYM PD_RETURNDC}
  702.   PD_RETURNDC = $00000100;
  703.   {$EXTERNALSYM PD_RETURNIC}
  704.   PD_RETURNIC = $00000200;
  705.   {$EXTERNALSYM PD_RETURNDEFAULT}
  706.   PD_RETURNDEFAULT = $00000400;
  707.   {$EXTERNALSYM PD_SHOWHELP}
  708.   PD_SHOWHELP = $00000800;
  709.   {$EXTERNALSYM PD_ENABLEPRINTHOOK}
  710.   PD_ENABLEPRINTHOOK = $00001000;
  711.   {$EXTERNALSYM PD_ENABLESETUPHOOK}
  712.   PD_ENABLESETUPHOOK = $00002000;
  713.   {$EXTERNALSYM PD_ENABLEPRINTTEMPLATE}
  714.   PD_ENABLEPRINTTEMPLATE = $00004000;
  715.   {$EXTERNALSYM PD_ENABLESETUPTEMPLATE}
  716.   PD_ENABLESETUPTEMPLATE = $00008000;
  717.   {$EXTERNALSYM PD_ENABLEPRINTTEMPLATEHANDLE}
  718.   PD_ENABLEPRINTTEMPLATEHANDLE = $00010000;
  719.   {$EXTERNALSYM PD_ENABLESETUPTEMPLATEHANDLE}
  720.   PD_ENABLESETUPTEMPLATEHANDLE = $00020000;
  721.   {$EXTERNALSYM PD_USEDEVMODECOPIES}
  722.   PD_USEDEVMODECOPIES = $00040000;
  723.   {$EXTERNALSYM PD_USEDEVMODECOPIESANDCOLLATE}
  724.   PD_USEDEVMODECOPIESANDCOLLATE = $00040000;
  725.   {$EXTERNALSYM PD_DISABLEPRINTTOFILE}
  726.   PD_DISABLEPRINTTOFILE = $00080000;
  727.   {$EXTERNALSYM PD_HIDEPRINTTOFILE}
  728.   PD_HIDEPRINTTOFILE = $00100000;
  729.   {$EXTERNALSYM PD_NONETWORKBUTTON}
  730.   PD_NONETWORKBUTTON = $00200000;
  731.  
  732. type
  733.   PDevNames = ^TDevNames;
  734.   {$EXTERNALSYM tagDEVNAMES}
  735.   tagDEVNAMES = record
  736.     wDriverOffset: Word;
  737.     wDeviceOffset: Word;
  738.     wOutputOffset: Word;
  739.     wDefault: Word;
  740.   end;
  741.   TDevNames = tagDEVNAMES;
  742.   {$EXTERNALSYM DEVNAMES}
  743.   DEVNAMES = tagDEVNAMES;
  744.  
  745. const
  746.   {$EXTERNALSYM DN_DEFAULTPRN}
  747.   DN_DEFAULTPRN = $0001;
  748.  
  749. {$EXTERNALSYM CommDlgExtendedError}
  750. function CommDlgExtendedError: DWORD; stdcall;
  751.  
  752. const
  753.   {$EXTERNALSYM WM_PSD_PAGESETUPDLG}
  754.   WM_PSD_PAGESETUPDLG     = WM_USER;
  755.   {$EXTERNALSYM WM_PSD_FULLPAGERECT}
  756.   WM_PSD_FULLPAGERECT     = WM_USER + 1;
  757.   {$EXTERNALSYM WM_PSD_MINMARGINRECT}
  758.   WM_PSD_MINMARGINRECT    = WM_USER + 2;
  759.   {$EXTERNALSYM WM_PSD_MARGINRECT}
  760.   WM_PSD_MARGINRECT       = WM_USER + 3;
  761.   {$EXTERNALSYM WM_PSD_GREEKTEXTRECT}
  762.   WM_PSD_GREEKTEXTRECT    = WM_USER + 4;
  763.   {$EXTERNALSYM WM_PSD_ENVSTAMPRECT}
  764.   WM_PSD_ENVSTAMPRECT     = WM_USER + 5;
  765.   {$EXTERNALSYM WM_PSD_YAFULLPAGERECT}
  766.   WM_PSD_YAFULLPAGERECT   = WM_USER + 6;
  767.  
  768. type
  769.   PPageSetupDlgA = ^TPageSetupDlgA;
  770.   PPageSetupDlgW = ^TPageSetupDlgW;
  771.   PPageSetupDlg = PPageSetupDlgA;
  772.   {$EXTERNALSYM tagPSDA}
  773.   tagPSDA = packed record
  774.     lStructSize: DWORD;
  775.     hwndOwner: HWND;
  776.     hDevMode: HGLOBAL;
  777.     hDevNames: HGLOBAL;
  778.     Flags: DWORD;
  779.     ptPaperSize: TPoint;
  780.     rtMinMargin: TRect;
  781.     rtMargin: TRect;
  782.     hInstance: HINST;
  783.     lCustData: LPARAM;
  784.     lpfnPageSetupHook: function(Wnd: HWND; Message: UINT; wParam: WPARAM; lParam: LPARAM): UINT stdcall;
  785.     lpfnPagePaintHook: function(Wnd: HWND; Message: UINT; wParam: WPARAM; lParam: LPARAM): UINT stdcall;
  786.     lpPageSetupTemplateName: PAnsiChar;
  787.     hPageSetupTemplate: HGLOBAL;
  788.   end;
  789.   {$EXTERNALSYM tagPSDW}
  790.   tagPSDW = packed record
  791.     lStructSize: DWORD;
  792.     hwndOwner: HWND;
  793.     hDevMode: HGLOBAL;
  794.     hDevNames: HGLOBAL;
  795.     Flags: DWORD;
  796.     ptPaperSize: TPoint;
  797.     rtMinMargin: TRect;
  798.     rtMargin: TRect;
  799.     hInstance: HINST;
  800.     lCustData: LPARAM;
  801.     lpfnPageSetupHook: function(Wnd: HWND; Message: UINT; wParam: WPARAM; lParam: LPARAM): UINT stdcall;
  802.     lpfnPagePaintHook: function(Wnd: HWND; Message: UINT; wParam: WPARAM; lParam: LPARAM): UINT stdcall;
  803.     lpPageSetupTemplateName: PWideChar;
  804.     hPageSetupTemplate: HGLOBAL;
  805.   end;
  806.   {$EXTERNALSYM tagPSD}
  807.   tagPSD = tagPSDA;
  808.   TPageSetupDlgA = tagPSDA;
  809.   TPageSetupDlgW = tagPSDW;
  810.   TPageSetupDlg = TPageSetupDlgA;
  811.  
  812. {$EXTERNALSYM PageSetupDlgA}
  813. function PageSetupDlgA(var PgSetupDialog: TPageSetupDlgA): BOOL; stdcall;
  814. {$EXTERNALSYM PageSetupDlgW}
  815. function PageSetupDlgW(var PgSetupDialog: TPageSetupDlgW): BOOL; stdcall;
  816. {$EXTERNALSYM PageSetupDlg}
  817. function PageSetupDlg(var PgSetupDialog: TPageSetupDlg): BOOL; stdcall;
  818.  
  819. const
  820.   {$EXTERNALSYM PSD_DEFAULTMINMARGINS}
  821.   PSD_DEFAULTMINMARGINS             = $00000000; { default (printer's) }
  822.   {$EXTERNALSYM PSD_INWININIINTLMEASURE}
  823.   PSD_INWININIINTLMEASURE           = $00000000; { 1st of 4 possible }
  824.  
  825.   {$EXTERNALSYM PSD_MINMARGINS}
  826.   PSD_MINMARGINS                    = $00000001; { use caller's }
  827.   {$EXTERNALSYM PSD_MARGINS}
  828.   PSD_MARGINS                       = $00000002; { use caller's }
  829.   {$EXTERNALSYM PSD_INTHOUSANDTHSOFINCHES}
  830.   PSD_INTHOUSANDTHSOFINCHES         = $00000004; { 2nd of 4 possible }
  831.   {$EXTERNALSYM PSD_INHUNDREDTHSOFMILLIMETERS}
  832.   PSD_INHUNDREDTHSOFMILLIMETERS     = $00000008; { 3rd of 4 possible }
  833.   {$EXTERNALSYM PSD_DISABLEMARGINS}
  834.   PSD_DISABLEMARGINS                = $00000010;
  835.   {$EXTERNALSYM PSD_DISABLEPRINTER}
  836.   PSD_DISABLEPRINTER                = $00000020;
  837.   {$EXTERNALSYM PSD_NOWARNING}
  838.   PSD_NOWARNING                     = $00000080; { must be same as PD_* }
  839.   {$EXTERNALSYM PSD_DISABLEORIENTATION}
  840.   PSD_DISABLEORIENTATION            = $00000100;
  841.   {$EXTERNALSYM PSD_RETURNDEFAULT}
  842.   PSD_RETURNDEFAULT                 = $00000400; { must be same as PD_* }
  843.   {$EXTERNALSYM PSD_DISABLEPAPER}
  844.   PSD_DISABLEPAPER                  = $00000200;
  845.   {$EXTERNALSYM PSD_SHOWHELP}
  846.   PSD_SHOWHELP                      = $00000800; { must be same as PD_* }
  847.   {$EXTERNALSYM PSD_ENABLEPAGESETUPHOOK}
  848.   PSD_ENABLEPAGESETUPHOOK           = $00002000; { must be same as PD_* }
  849.   {$EXTERNALSYM PSD_ENABLEPAGESETUPTEMPLATE}
  850.   PSD_ENABLEPAGESETUPTEMPLATE       = $00008000; { must be same as PD_* }
  851.   {$EXTERNALSYM PSD_ENABLEPAGESETUPTEMPLATEHANDLE}
  852.   PSD_ENABLEPAGESETUPTEMPLATEHANDLE = $00020000; { must be same as PD_* }
  853.   {$EXTERNALSYM PSD_ENABLEPAGEPAINTHOOK}
  854.   PSD_ENABLEPAGEPAINTHOOK           = $00040000;
  855.   {$EXTERNALSYM PSD_DISABLEPAGEPAINTING}
  856.   PSD_DISABLEPAGEPAINTING           = $00080000;
  857.   {$EXTERNALSYM PSD_NONETWORKBUTTON}
  858.   PSD_NONETWORKBUTTON               = $00200000; { must be same as PD_* }
  859.  
  860.  
  861. { Common dialog error return codes }
  862.  
  863. const
  864.   {$EXTERNALSYM CDERR_DIALOGFAILURE}
  865.   CDERR_DIALOGFAILURE    = $FFFF;
  866.  
  867.   {$EXTERNALSYM CDERR_GENERALCODES}
  868.   CDERR_GENERALCODES     = $0000;
  869.   {$EXTERNALSYM CDERR_STRUCTSIZE}
  870.   CDERR_STRUCTSIZE       = $0001;
  871.   {$EXTERNALSYM CDERR_INITIALIZATION}
  872.   CDERR_INITIALIZATION   = $0002;
  873.   {$EXTERNALSYM CDERR_NOTEMPLATE}
  874.   CDERR_NOTEMPLATE       = $0003;
  875.   {$EXTERNALSYM CDERR_NOHINSTANCE}
  876.   CDERR_NOHINSTANCE      = $0004;
  877.   {$EXTERNALSYM CDERR_LOADSTRFAILURE}
  878.   CDERR_LOADSTRFAILURE   = $0005;
  879.   {$EXTERNALSYM CDERR_FINDRESFAILURE}
  880.   CDERR_FINDRESFAILURE   = $0006;
  881.   {$EXTERNALSYM CDERR_LOADRESFAILURE}
  882.   CDERR_LOADRESFAILURE   = $0007;
  883.   {$EXTERNALSYM CDERR_LOCKRESFAILURE}
  884.   CDERR_LOCKRESFAILURE   = $0008;
  885.   {$EXTERNALSYM CDERR_MEMALLOCFAILURE}
  886.   CDERR_MEMALLOCFAILURE  = $0009;
  887.   {$EXTERNALSYM CDERR_MEMLOCKFAILURE}
  888.   CDERR_MEMLOCKFAILURE   = $000A;
  889.   {$EXTERNALSYM CDERR_NOHOOK}
  890.   CDERR_NOHOOK           = $000B;
  891.   {$EXTERNALSYM CDERR_REGISTERMSGFAIL}
  892.   CDERR_REGISTERMSGFAIL  = $000C;
  893.  
  894.   {$EXTERNALSYM PDERR_PRINTERCODES}
  895.   PDERR_PRINTERCODES     = $1000;
  896.   {$EXTERNALSYM PDERR_SETUPFAILURE}
  897.   PDERR_SETUPFAILURE     = $1001;
  898.   {$EXTERNALSYM PDERR_PARSEFAILURE}
  899.   PDERR_PARSEFAILURE     = $1002;
  900.   {$EXTERNALSYM PDERR_RETDEFFAILURE}
  901.   PDERR_RETDEFFAILURE    = $1003;
  902.   {$EXTERNALSYM PDERR_LOADDRVFAILURE}
  903.   PDERR_LOADDRVFAILURE   = $1004;
  904.   {$EXTERNALSYM PDERR_GETDEVMODEFAIL}
  905.   PDERR_GETDEVMODEFAIL   = $1005;
  906.   {$EXTERNALSYM PDERR_INITFAILURE}
  907.   PDERR_INITFAILURE      = $1006;
  908.   {$EXTERNALSYM PDERR_NODEVICES}
  909.   PDERR_NODEVICES        = $1007;
  910.   {$EXTERNALSYM PDERR_NODEFAULTPRN}
  911.   PDERR_NODEFAULTPRN     = $1008;
  912.   {$EXTERNALSYM PDERR_DNDMMISMATCH}
  913.   PDERR_DNDMMISMATCH     = $1009;
  914.   {$EXTERNALSYM PDERR_CREATEICFAILURE}
  915.   PDERR_CREATEICFAILURE  = $100A;
  916.   {$EXTERNALSYM PDERR_PRINTERNOTFOUND}
  917.   PDERR_PRINTERNOTFOUND  = $100B;
  918.   {$EXTERNALSYM PDERR_DEFAULTDIFFERENT}
  919.   PDERR_DEFAULTDIFFERENT = $100C;
  920.  
  921.   {$EXTERNALSYM CFERR_CHOOSEFONTCODES}
  922.   CFERR_CHOOSEFONTCODES  = $2000;
  923.   {$EXTERNALSYM CFERR_NOFONTS}
  924.   CFERR_NOFONTS          = $2001;
  925.   {$EXTERNALSYM CFERR_MAXLESSTHANMIN}
  926.   CFERR_MAXLESSTHANMIN   = $2002;
  927.  
  928.   {$EXTERNALSYM FNERR_FILENAMECODES}
  929.   FNERR_FILENAMECODES    = $3000;
  930.   {$EXTERNALSYM FNERR_SUBCLASSFAILURE}
  931.   FNERR_SUBCLASSFAILURE  = $3001;
  932.   {$EXTERNALSYM FNERR_INVALIDFILENAME}
  933.   FNERR_INVALIDFILENAME  = $3002;
  934.   {$EXTERNALSYM FNERR_BUFFERTOOSMALL}
  935.   FNERR_BUFFERTOOSMALL   = $3003;
  936.  
  937.   {$EXTERNALSYM FRERR_FINDREPLACECODES}
  938.   FRERR_FINDREPLACECODES = $4000;
  939.   {$EXTERNALSYM FRERR_BUFFERLENGTHZERO}
  940.   FRERR_BUFFERLENGTHZERO = $4001;
  941.  
  942.   {$EXTERNALSYM CCERR_CHOOSECOLORCODES}
  943.   CCERR_CHOOSECOLORCODES = $5000;
  944.  
  945. implementation
  946.  
  947. {$EXTERNALSYM GetOpenFileNameA}
  948. function GetOpenFileNameA;      external 'comdlg32.dll'  name 'GetOpenFileNameA';
  949. {$EXTERNALSYM GetOpenFileNameW}
  950. function GetOpenFileNameW;      external 'comdlg32.dll'  name 'GetOpenFileNameW';
  951. {$EXTERNALSYM GetOpenFileName}
  952. function GetOpenFileName;      external 'comdlg32.dll'  name 'GetOpenFileNameA';
  953. {$EXTERNALSYM GetSaveFileNameA}
  954. function GetSaveFileNameA;   external 'comdlg32.dll'  name 'GetSaveFileNameA';
  955. {$EXTERNALSYM GetSaveFileNameW}
  956. function GetSaveFileNameW;   external 'comdlg32.dll'  name 'GetSaveFileNameW';
  957. {$EXTERNALSYM GetSaveFileName}
  958. function GetSaveFileName;   external 'comdlg32.dll'  name 'GetSaveFileNameA';
  959. {$EXTERNALSYM GetFileTitleA}
  960. function GetFileTitleA;      external 'comdlg32.dll'  name 'GetFileTitleA';
  961. {$EXTERNALSYM GetFileTitleW}
  962. function GetFileTitleW;      external 'comdlg32.dll'  name 'GetFileTitleW';
  963. {$EXTERNALSYM GetFileTitle}
  964. function GetFileTitle;      external 'comdlg32.dll'  name 'GetFileTitleA';
  965. {$EXTERNALSYM ChooseColorA}
  966. function ChooseColorA;       external 'comdlg32.dll'  name 'ChooseColorA';
  967. {$EXTERNALSYM ChooseColorW}
  968. function ChooseColorW;       external 'comdlg32.dll'  name 'ChooseColorW';
  969. {$EXTERNALSYM ChooseColor}
  970. function ChooseColor;       external 'comdlg32.dll'  name 'ChooseColorA';
  971. {$EXTERNALSYM FindTextA}
  972. function FindTextA;          external 'comdlg32.dll'  name 'FindTextA';
  973. {$EXTERNALSYM FindTextW}
  974. function FindTextW;          external 'comdlg32.dll'  name 'FindTextW';
  975. {$EXTERNALSYM FindText}
  976. function FindText;          external 'comdlg32.dll'  name 'FindTextA';
  977. {$EXTERNALSYM ReplaceTextA}
  978. function ReplaceTextA;       external 'comdlg32.dll'  name 'ReplaceTextA';
  979. {$EXTERNALSYM ReplaceTextW}
  980. function ReplaceTextW;       external 'comdlg32.dll'  name 'ReplaceTextW';
  981. {$EXTERNALSYM ReplaceText}
  982. function ReplaceText;       external 'comdlg32.dll'  name 'ReplaceTextA';
  983. {$EXTERNALSYM ChooseFontA}
  984. function ChooseFontA;        external 'comdlg32.dll'  name 'ChooseFontA';
  985. {$EXTERNALSYM ChooseFontW}
  986. function ChooseFontW;        external 'comdlg32.dll'  name 'ChooseFontW';
  987. {$EXTERNALSYM ChooseFont}
  988. function ChooseFont;        external 'comdlg32.dll'  name 'ChooseFontA';
  989. {$EXTERNALSYM PrintDlgA}
  990. function PrintDlgA;          external 'comdlg32.dll'  name 'PrintDlgA';
  991. {$EXTERNALSYM PrintDlgW}
  992. function PrintDlgW;          external 'comdlg32.dll'  name 'PrintDlgW';
  993. {$EXTERNALSYM PrintDlg}
  994. function PrintDlg;          external 'comdlg32.dll'  name 'PrintDlgA';
  995. {$EXTERNALSYM CommDlgExtendedError}
  996. function CommDlgExtendedError; external 'comdlg32.dll'  name 'CommDlgExtendedError';
  997. {$EXTERNALSYM PageSetupDlgA}
  998. function PageSetupDlgA;      external 'comdlg32.dll'  name 'PageSetupDlgA';
  999. {$EXTERNALSYM PageSetupDlgW}
  1000. function PageSetupDlgW;      external 'comdlg32.dll'  name 'PageSetupDlgW';
  1001. {$EXTERNALSYM PageSetupDlg}
  1002. function PageSetupDlg;      external 'comdlg32.dll'  name 'PageSetupDlgA';
  1003.  
  1004. end.
  1005.  
  1006.