home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1997 May / Pcwk0597.iso / borland / cb / setup / cbuilder / data.z / COMMDLG.PAS < prev    next >
Pascal/Delphi Source File  |  1997-02-28  |  25KB  |  692 lines

  1.  
  2. {*******************************************************}
  3. {                                                       }
  4. {       Delphi Run-time Library                         }
  5. {       Windows 32bit API Interface Unit                }
  6. {                                                       }
  7. {       Copyright (c) 1995,96 Borland International     }
  8. {                                                       }
  9. {*******************************************************}
  10.  
  11. unit CommDlg;
  12.  
  13. interface
  14.  
  15. uses Windows, Messages;
  16.  
  17. type
  18.   POpenFilenameA = ^TOpenFilenameA;
  19.   POpenFilenameW = ^TOpenFilenameW;
  20.   POpenFilename = POpenFilenameA;
  21.   tagOFNA = packed record
  22.     lStructSize: DWORD;
  23.     hWndOwner: HWND;
  24.     hInstance: HINST;
  25.     lpstrFilter: PAnsiChar;
  26.     lpstrCustomFilter: PAnsiChar;
  27.     nMaxCustFilter: DWORD;
  28.     nFilterIndex: DWORD;
  29.     lpstrFile: PAnsiChar;
  30.     nMaxFile: DWORD;
  31.     lpstrFileTitle: PAnsiChar;
  32.     nMaxFileTitle: DWORD;
  33.     lpstrInitialDir: PAnsiChar;
  34.     lpstrTitle: PAnsiChar;
  35.     Flags: DWORD;
  36.     nFileOffset: Word;
  37.     nFileExtension: Word;
  38.     lpstrDefExt: PAnsiChar;
  39.     lCustData: LPARAM;
  40.     lpfnHook: function(Wnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): UINT stdcall;
  41.     lpTemplateName: PAnsiChar;
  42.   end;
  43.   {$nonamespace tagOFNA}
  44.   TOpenFilenameA = tagOFNA;
  45.   tagOFNW = packed record
  46.     lStructSize: DWORD;
  47.     hWndOwner: HWND;
  48.     hInstance: HINST;
  49.     lpstrFilter: PWideChar;
  50.     lpstrCustomFilter: PWideChar;
  51.     nMaxCustFilter: DWORD;
  52.     nFilterIndex: DWORD;
  53.     lpstrFile: PWideChar;
  54.     nMaxFile: DWORD;
  55.     lpstrFileTitle: PWideChar;
  56.     nMaxFileTitle: DWORD;
  57.     lpstrInitialDir: PWideChar;
  58.     lpstrTitle: PWideChar;
  59.     Flags: DWORD;
  60.     nFileOffset: Word;
  61.     nFileExtension: Word;
  62.     lpstrDefExt: PWideChar;
  63.     lCustData: LPARAM;
  64.     lpfnHook: function(Wnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): UINT stdcall;
  65.     lpTemplateName: PWideChar;
  66.   end;
  67.   {$nonamespace tagOFNW}
  68.   TOpenFilenameW = tagOFNW;
  69.   TOpenFilename = TOpenFilenameA;
  70.  
  71. function GetOpenFileNameA(var OpenFile: TOpenFilenameA): Bool; stdcall;
  72. function GetOpenFileNameW(var OpenFile: TOpenFilenameW): Bool; stdcall;
  73. function GetOpenFileName(var OpenFile: TOpenFilename): Bool; stdcall;
  74. function GetSaveFileNameA(var OpenFile: TOpenFilenameA): Bool; stdcall;
  75. function GetSaveFileNameW(var OpenFile: TOpenFilenameW): Bool; stdcall;
  76. function GetSaveFileName(var OpenFile: TOpenFilename): Bool; stdcall;
  77. function GetFileTitleA(FileName: PAnsiChar; Title: PAnsiChar; TitleSize: Word): Smallint; stdcall;
  78. function GetFileTitleW(FileName: PWideChar; Title: PWideChar; TitleSize: Word): Smallint; stdcall;
  79. function GetFileTitle(FileName: PChar; Title: PChar; TitleSize: Word): Smallint; stdcall;
  80.  
  81. const
  82.   OFN_READONLY = $00000001;
  83.   OFN_OVERWRITEPROMPT = $00000002;
  84.   OFN_HIDEREADONLY = $00000004;
  85.   OFN_NOCHANGEDIR = $00000008;
  86.   OFN_SHOWHELP = $00000010;
  87.   OFN_ENABLEHOOK = $00000020;
  88.   OFN_ENABLETEMPLATE = $00000040;
  89.   OFN_ENABLETEMPLATEHANDLE = $00000080;
  90.   OFN_NOVALIDATE = $00000100;
  91.   OFN_ALLOWMULTISELECT = $00000200;
  92.   OFN_EXTENSIONDIFFERENT = $00000400;
  93.   OFN_PATHMUSTEXIST = $00000800;
  94.   OFN_FILEMUSTEXIST = $00001000;
  95.   OFN_CREATEPROMPT = $00002000;
  96.   OFN_SHAREAWARE = $00004000;
  97.   OFN_NOREADONLYRETURN = $00008000;
  98.   OFN_NOTESTFILECREATE = $00010000;
  99.   OFN_NONETWORKBUTTON = $00020000;
  100.   OFN_NOLONGNAMES = $00040000;
  101.   OFN_EXPLORER = $00080000;
  102.   OFN_NODEREFERENCELINKS = $00100000;
  103.   OFN_LONGNAMES = $00200000;
  104.  
  105. { Return values for the registered message sent to the hook function
  106.   when a sharing violation occurs.  OFN_SHAREFALLTHROUGH allows the
  107.   filename to be accepted, OFN_SHARENOWARN rejects the name but puts
  108.   up no warning (returned when the app has already put up a warning
  109.   message), and OFN_SHAREWARN puts up the default warning message
  110.   for sharing violations.
  111.  
  112.   Note:  Undefined return values map to OFN_SHAREWARN, but are
  113.          reserved for future use. }
  114.  
  115.   OFN_SHAREFALLTHROUGH = 2;
  116.   OFN_SHARENOWARN = 1;
  117.   OFN_SHAREWARN = 0;
  118.  
  119. type
  120.   POFNotifyA = ^TOFNotifyA;
  121.   POFNotifyW = ^TOFNotifyW;
  122.   POFNotify = POFNotifyA;
  123.   _OFNOTIFYA = packed record
  124.     hdr: TNMHdr;
  125.     lpOFN: POpenFilenameA;
  126.     pszFile: PAnsiChar;
  127.   end;
  128.   {$nonamespace _OFNOTIFYA}
  129.   TOFNotifyA = _OFNOTIFYA;
  130.   _OFNOTIFYW = packed record
  131.     hdr: TNMHdr;
  132.     lpOFN: POpenFilenameW;
  133.     pszFile: PWideChar;
  134.   end;
  135.   {$nonamespace _OFNOTIFYW}
  136.   TOFNotifyW = _OFNOTIFYW;
  137.   TOFNotify = TOFNotifyA;
  138.  
  139. const
  140.   CDN_FIRST = -601;
  141.   CDN_LAST = -699;
  142.  
  143. { Notifications when Open or Save dialog status changes }
  144.  
  145.   CDN_INITDONE = CDN_FIRST - 0;
  146.   CDN_SELCHANGE = CDN_FIRST - 1;
  147.   CDN_FOLDERCHANGE = CDN_FIRST - 2;
  148.   CDN_SHAREVIOLATION = CDN_FIRST - 3;
  149.   CDN_HELP = CDN_FIRST - 4;
  150.   CDN_FILEOK = CDN_FIRST - 5;
  151.   CDN_TYPECHANGE = CDN_FIRST - 6;
  152.  
  153.   CDM_FIRST = WM_USER + 100;
  154.   CDM_LAST = WM_USER + 200;
  155.  
  156. { Messages to query information from the Open or Save dialogs }
  157.  
  158. { lParam = pointer to text buffer that gets filled in
  159.   wParam = max number of characters of the text buffer (including NULL)
  160.   return = < 0 if error; number of characters needed (including NULL) }
  161.  
  162.   CDM_GETSPEC = CDM_FIRST + 0;
  163.  
  164. { lParam = pointer to text buffer that gets filled in
  165.   wParam = max number of characters of the text buffer (including NULL)
  166.   return = < 0 if error; number of characters needed (including NULL) }
  167.  
  168.   CDM_GETFILEPATH = CDM_FIRST + 1;
  169.  
  170. { lParam = pointer to text buffer that gets filled in
  171.   wParam = max number of characters of the text buffer (including NULL)
  172.   return = < 0 if error; number of characters needed (including NULL) }
  173.  
  174.   CDM_GETFOLDERPATH = CDM_FIRST + 2;
  175.  
  176. { lParam = pointer to ITEMIDLIST buffer that gets filled in
  177.   wParam = size of the ITEMIDLIST buffer
  178.   return = < 0 if error; length of buffer needed }
  179.  
  180.   CDM_GETFOLDERIDLIST = CDM_FIRST + 3;
  181.  
  182. { lParam = pointer to a string
  183.   wParam = ID of control to change
  184.   return = not used }
  185.  
  186.   CDM_SETCONTROLTEXT = CDM_FIRST + 4;
  187.  
  188. { lParam = not used
  189.   wParam = ID of control to change
  190.   return = not used }
  191.  
  192.   CDM_HIDECONTROL = CDM_FIRST + 5;
  193.  
  194. { lParam = pointer to default extension (no dot)
  195.   wParam = not used
  196.   return = not used }
  197.  
  198.   CDM_SETDEFEXT = CDM_FIRST + 6;
  199.  
  200. type
  201.   PChooseColorA = ^TChooseColorA;
  202.   PChooseColorW = ^TChooseColorW;
  203.   PChooseColor = PChooseColorA;
  204.   tagCHOOSECOLORA = packed record
  205.     lStructSize: DWORD;
  206.     hWndOwner: HWND;
  207.     hInstance: HWND;
  208.     rgbResult: COLORREF;
  209.     lpCustColors: ^COLORREF;
  210.     Flags: DWORD;
  211.     lCustData: LPARAM;
  212.     lpfnHook: function(Wnd: HWND; Message: UINT; wParam: WPARAM; lParam: LPARAM): UINT stdcall;
  213.     lpTemplateName: PAnsiChar;
  214.   end;
  215.   {$nonamespace tagCHOOSECOLORA}
  216.   TChooseColorA = tagCHOOSECOLORA;
  217.   tagCHOOSECOLORW = packed record
  218.     lStructSize: DWORD;
  219.     hWndOwner: HWND;
  220.     hInstance: HWND;
  221.     rgbResult: COLORREF;
  222.     lpCustColors: ^COLORREF;
  223.     Flags: DWORD;
  224.     lCustData: LPARAM;
  225.     lpfnHook: function(Wnd: HWND; Message: UINT; wParam: WPARAM; lParam: LPARAM): UINT stdcall;
  226.     lpTemplateName: PWideChar;
  227.   end;
  228.   {$nonamespace tagCHOOSECOLORW}
  229.   TChooseColorW = tagCHOOSECOLORW;
  230.   TChooseColor = TChooseColorA;
  231.  
  232. function ChooseColorA(var CC: TChooseColorA): Bool; stdcall;
  233. function ChooseColorW(var CC: TChooseColorW): Bool; stdcall;
  234. function ChooseColor(var CC: TChooseColor): Bool; stdcall;
  235.  
  236. const
  237.   CC_RGBINIT = $00000001;
  238.   CC_FULLOPEN = $00000002;
  239.   CC_PREVENTFULLOPEN = $00000004;
  240.   CC_SHOWHELP = $00000008;
  241.   CC_ENABLEHOOK = $00000010;
  242.   CC_ENABLETEMPLATE = $00000020;
  243.   CC_ENABLETEMPLATEHANDLE = $00000040;
  244.   CC_SOLIDCOLOR = $00000080;
  245.   CC_ANYCOLOR = $00000100;
  246.  
  247. type
  248.   PFindReplaceA = ^TFindReplaceA;
  249.   PFindReplaceW = ^TFindReplaceW;
  250.   PFindReplace = PFindReplaceA;
  251.   tagFINDREPLACEA = packed record
  252.     lStructSize: DWORD;        { size of this struct $20 }
  253.     hWndOwner: HWND;             { handle to owner's window }
  254.     hInstance: HINST;        { instance handle of.EXE that
  255.                                    contains cust. dlg. template }
  256.     Flags: DWORD;                { one or more of the fr_?? }
  257.     lpstrFindWhat: PAnsiChar;       { ptr. to search string    }
  258.     lpstrReplaceWith: PAnsiChar;    { ptr. to replace string   }
  259.     wFindWhatLen: Word;          { size of find buffer      }
  260.     wReplaceWithLen: Word;       { size of replace buffer   }
  261.     lCustData: LPARAM;           { data passed to hook fn.  }
  262.     lpfnHook: function(Wnd: HWND; Message: UINT; wParam: WPARAM; lParam: LPARAM): UINT stdcall;
  263.                                  { ptr. to hook fn. or nil }
  264.     lpTemplateName: PAnsiChar;     { custom template name     }
  265.   end;
  266.   {$nonamespace tagFINDREPLACEA}
  267.   TFindReplaceA = tagFINDREPLACEA;
  268.   tagFINDREPLACEW = packed record
  269.     lStructSize: DWORD;        { size of this struct $20 }
  270.     hWndOwner: HWND;             { handle to owner's window }
  271.     hInstance: HINST;        { instance handle of.EXE that
  272.                                    contains cust. dlg. template }
  273.     Flags: DWORD;                { one or more of the fr_?? }
  274.     lpstrFindWhat: PWideChar;       { ptr. to search string    }
  275.     lpstrReplaceWith: PWideChar;    { ptr. to replace string   }
  276.     wFindWhatLen: Word;          { size of find buffer      }
  277.     wReplaceWithLen: Word;       { size of replace buffer   }
  278.     lCustData: LPARAM;           { data passed to hook fn.  }
  279.     lpfnHook: function(Wnd: HWND; Message: UINT; wParam: WPARAM; lParam: LPARAM): UINT stdcall;
  280.                                  { ptr. to hook fn. or nil }
  281.     lpTemplateName: PWideChar;     { custom template name     }
  282.   end;
  283.   {$nonamespace tagFINDREPLACEW}
  284.   TFindReplaceW = tagFINDREPLACEW;
  285.   TFindReplace = TFindReplaceA;
  286.  
  287. const
  288.   FR_DOWN = $00000001;
  289.   FR_WHOLEWORD = $00000002;
  290.   FR_MATCHCASE = $00000004;
  291.   FR_FINDNEXT = $00000008;
  292.   FR_REPLACE = $00000010;
  293.   FR_REPLACEALL = $00000020;
  294.   FR_DIALOGTERM = $00000040;
  295.   FR_SHOWHELP = $00000080;
  296.   FR_ENABLEHOOK = $00000100;
  297.   FR_ENABLETEMPLATE = $00000200;
  298.   FR_NOUPDOWN = $00000400;
  299.   FR_NOMATCHCASE = $00000800;
  300.   FR_NOWHOLEWORD = $00001000;
  301.   FR_ENABLETEMPLATEHandle = $00002000;
  302.   FR_HIDEUPDOWN = $00004000;
  303.   FR_HIDEMATCHCASE = $00008000;
  304.   FR_HIDEWHOLEWORD = $00010000;
  305.  
  306. function FindTextA(var FindReplace: TFindReplaceA): HWND; stdcall;
  307. function FindTextW(var FindReplace: TFindReplaceW): HWND; stdcall;
  308. function FindText(var FindReplace: TFindReplace): HWND; stdcall;
  309. function ReplaceTextA(var FindReplace: TFindReplaceA): HWND; stdcall;
  310. function ReplaceTextW(var FindReplace: TFindReplaceW): HWND; stdcall;
  311. function ReplaceText(var FindReplace: TFindReplace): HWND; stdcall;
  312.  
  313. type
  314.   PChooseFontA = ^TChooseFontA;
  315.   PChooseFontW = ^TChooseFontW;
  316.   PChooseFont = PChooseFontA;
  317.   tagCHOOSEFONTA = packed record
  318.     lStructSize: DWORD;
  319.     hWndOwner: HWnd;            { caller's window handle }
  320.     hDC: HDC;                   { printer DC/IC or nil }
  321.     lpLogFont: PLogFontA;     { pointer to a LOGFONT struct }
  322.     iPointSize: Integer;        { 10 * size in points of selected font }
  323.     Flags: DWORD;               { dialog flags }
  324.     rgbColors: COLORREF;        { returned text color }
  325.     lCustData: LPARAM;          { data passed to hook function }
  326.     lpfnHook: function(Wnd: HWND; Message: UINT; wParam: WPARAM; lParam: LPARAM): UINT stdcall;
  327.                                 { pointer to hook function }
  328.     lpTemplateName: PAnsiChar;    { custom template name }
  329.     hInstance: HINST;       { instance handle of EXE that contains
  330.                                   custom dialog template }
  331.     lpszStyle: PAnsiChar;         { return the style field here
  332.                                   must be lf_FaceSize or bigger }
  333.     nFontType: Word;            { same value reported to the EnumFonts
  334.                                   call back with the extra fonttype_
  335.                                   bits added }
  336.     wReserved: Word;
  337.     nSizeMin: Integer;          { minimum point size allowed and }
  338.     nSizeMax: Integer;          { maximum point size allowed if
  339.                                   cf_LimitSize is used }
  340.   end;
  341.   {$nonamespace tagCHOOSEFONTA}
  342.   TChooseFontA = tagCHOOSEFONTA;
  343.   tagCHOOSEFONTW = packed record
  344.     lStructSize: DWORD;
  345.     hWndOwner: HWnd;            { caller's window handle }
  346.     hDC: HDC;                   { printer DC/IC or nil }
  347.     lpLogFont: PLogFontW;     { pointer to a LOGFONT struct }
  348.     iPointSize: Integer;        { 10 * size in points of selected font }
  349.     Flags: DWORD;               { dialog flags }
  350.     rgbColors: COLORREF;        { returned text color }
  351.     lCustData: LPARAM;          { data passed to hook function }
  352.     lpfnHook: function(Wnd: HWND; Message: UINT; wParam: WPARAM; lParam: LPARAM): UINT stdcall;
  353.                                 { pointer to hook function }
  354.     lpTemplateName: PWideChar;    { custom template name }
  355.     hInstance: HINST;       { instance handle of EXE that contains
  356.                                   custom dialog template }
  357.     lpszStyle: PWideChar;         { return the style field here
  358.                                   must be lf_FaceSize or bigger }
  359.     nFontType: Word;            { same value reported to the EnumFonts
  360.                                   call back with the extra fonttype_
  361.                                   bits added }
  362.     wReserved: Word;
  363.     nSizeMin: Integer;          { minimum point size allowed and }
  364.     nSizeMax: Integer;          { maximum point size allowed if
  365.                                   cf_LimitSize is used }
  366.   end;
  367.   {$nonamespace tagCHOOSEFONTW}
  368.   TChooseFontW = tagCHOOSEFONTW;
  369.   TChooseFont = TChooseFontA;
  370.  
  371. function ChooseFontA(var ChooseFont: TChooseFontA): Bool; stdcall;
  372. function ChooseFontW(var ChooseFont: TChooseFontW): Bool; stdcall;
  373. function ChooseFont(var ChooseFont: TChooseFont): Bool; stdcall;
  374.  
  375. const
  376.   CF_SCREENFONTS = $00000001;
  377.   CF_PRINTERFONTS = $00000002;
  378.   CF_BOTH = CF_SCREENFONTS OR CF_PRINTERFONTS;
  379.   CF_SHOWHELP = $00000004;
  380.   CF_ENABLEHOOK = $00000008;
  381.   CF_ENABLETEMPLATE = $00000010;
  382.   CF_ENABLETEMPLATEHANDLE = $00000020;
  383.   CF_INITTOLOGFONTSTRUCT = $00000040;
  384.   CF_USESTYLE = $00000080;
  385.   CF_EFFECTS = $00000100;
  386.   CF_APPLY = $00000200;
  387.   CF_ANSIONLY = $00000400;
  388.   CF_SCRIPTSONLY = CF_ANSIONLY;
  389.   CF_NOVECTORFONTS = $00000800;
  390.   CF_NOOEMFONTS = CF_NOVECTORFONTS;
  391.   CF_NOSIMULATIONS = $00001000;
  392.   CF_LIMITSIZE = $00002000;
  393.   CF_FIXEDPITCHONLY = $00004000;
  394.   CF_WYSIWYG = $00008000; { must also have CF_SCREENFONTS & CF_PRINTERFONTS }
  395.   CF_FORCEFONTEXIST = $00010000;
  396.   CF_SCALABLEONLY = $00020000;
  397.   CF_TTONLY = $00040000;
  398.   CF_NOFACESEL = $00080000;
  399.   CF_NOSTYLESEL = $00100000;
  400.   CF_NOSIZESEL = $00200000;
  401.   CF_SELECTSCRIPT = $00400000;
  402.   CF_NOSCRIPTSEL = $00800000;
  403.   CF_NOVERTFONTS = $01000000;
  404.  
  405. { these are extra nFontType bits that are added to what is returned to the
  406.   EnumFonts callback routine }
  407.  
  408.   SIMULATED_FONTTYPE = $8000;
  409.   PRINTER_FONTTYPE = $4000;
  410.   SCREEN_FONTTYPE = $2000;
  411.   BOLD_FONTTYPE = $0100;
  412.   ITALIC_FONTTYPE = $0200;
  413.   REGULAR_FONTTYPE = $0400;
  414.  
  415.   WM_CHOOSEFONT_GETLOGFONT = WM_USER + 1;
  416.   WM_CHOOSEFONT_SETLOGFONT = WM_USER + 101;
  417.   WM_CHOOSEFONT_SETFLAGS = WM_USER + 102;
  418.  
  419. { strings used to obtain unique window message for communication
  420.   between dialog and caller }
  421.  
  422.   LBSELCHSTRING = 'commdlg_LBSelChangedNotify';
  423.   SHAREVISTRING = 'commdlg_ShareViolation';
  424.   FILEOKSTRING  = 'commdlg_FileNameOK';
  425.   COLOROKSTRING = 'commdlg_ColorOK';
  426.   SETRGBSTRING  = 'commdlg_SetRGBColor';
  427.   FINDMSGSTRING = 'commdlg_FindReplace';
  428.   HELPMSGSTRING = 'commdlg_help';
  429.  
  430. { HIWORD values for lParam of commdlg_LBSelChangeNotify message }
  431.  
  432. const
  433.   CD_LBSELNOITEMS = -1;
  434.   CD_LBSELCHANGE  = 0;
  435.   CD_LBSELSUB     = 1;
  436.   CD_LBSELADD     = 2;
  437.  
  438. type
  439.   PPrintDlgA = ^TPrintDlgA;
  440.   PPrintDlgW = ^TPrintDlgW;
  441.   PPrintDlg = PPrintDlgA;
  442.   tagPDA = packed record
  443.     lStructSize: DWORD;
  444.     hWndOwner: HWND;
  445.     hDevMode: HGLOBAL;
  446.     hDevNames: HGLOBAL;
  447.     hDC: HDC;
  448.     Flags: DWORD;
  449.     nFromPage: Word;
  450.     nToPage: Word;
  451.     nMinPage: Word;
  452.     nMaxPage: Word;
  453.     nCopies: Word;
  454.     hInstance: HINST;
  455.     lCustData: LPARAM;
  456.     lpfnPrintHook: function(Wnd: HWND; Message: UINT; wParam: WPARAM; lParam: LPARAM): UINT stdcall;
  457.     lpfnSetupHook: function(Wnd: HWND; Message: UINT; wParam: WPARAM; lParam: LPARAM): UINT stdcall;
  458.     lpPrintTemplateName: PAnsiChar;
  459.     lpSetupTemplateName: PAnsiChar;
  460.     hPrintTemplate: HGLOBAL;
  461.     hSetupTemplate: HGLOBAL;
  462.   end;
  463.   {$nonamespace tagPDA}
  464.   TPrintDlgA = tagPDA;
  465.   tagPDW = packed record
  466.     lStructSize: DWORD;
  467.     hWndOwner: HWND;
  468.     hDevMode: HGLOBAL;
  469.     hDevNames: HGLOBAL;
  470.     hDC: HDC;
  471.     Flags: DWORD;
  472.     nFromPage: Word;
  473.     nToPage: Word;
  474.     nMinPage: Word;
  475.     nMaxPage: Word;
  476.     nCopies: Word;
  477.     hInstance: HINST;
  478.     lCustData: LPARAM;
  479.     lpfnPrintHook: function(Wnd: HWND; Message: UINT; wParam: WPARAM; lParam: LPARAM): UINT stdcall;
  480.     lpfnSetupHook: function(Wnd: HWND; Message: UINT; wParam: WPARAM; lParam: LPARAM): UINT stdcall;
  481.     lpPrintTemplateName: PWideChar;
  482.     lpSetupTemplateName: PWideChar;
  483.     hPrintTemplate: HGLOBAL;
  484.     hSetupTemplate: HGLOBAL;
  485.   end;
  486.   {$nonamespace tagPDW}
  487.   TPrintDlgW = tagPDW;
  488.   TPrintDlg = TPrintDlgA;
  489.  
  490. function PrintDlgA(var PrintDlg: TPrintDlgA): Bool; stdcall;
  491. function PrintDlgW(var PrintDlg: TPrintDlgW): Bool; stdcall;
  492. function PrintDlg(var PrintDlg: TPrintDlg): Bool; stdcall;
  493.  
  494. const
  495.   PD_ALLPAGES = $00000000;
  496.   PD_SELECTION = $00000001;
  497.   PD_PAGENUMS = $00000002;
  498.   PD_NOSELECTION = $00000004;
  499.   PD_NOPAGENUMS = $00000008;
  500.   PD_COLLATE = $00000010;
  501.   PD_PRINTTOFILE = $00000020;
  502.   PD_PRINTSETUP = $00000040;
  503.   PD_NOWARNING = $00000080;
  504.   PD_RETURNDC = $00000100;
  505.   PD_RETURNIC = $00000200;
  506.   PD_RETURNDEFAULT = $00000400;
  507.   PD_SHOWHELP = $00000800;
  508.   PD_ENABLEPRINTHOOK = $00001000;
  509.   PD_ENABLESETUPHOOK = $00002000;
  510.   PD_ENABLEPRINTTEMPLATE = $00004000;
  511.   PD_ENABLESETUPTEMPLATE = $00008000;
  512.   PD_ENABLEPRINTTEMPLATEHANDLE = $00010000;
  513.   PD_ENABLESETUPTEMPLATEHANDLE = $00020000;
  514.   PD_USEDEVMODECOPIES = $00040000;
  515.   PD_USEDEVMODECOPIESANDCOLLATE = $00040000;
  516.   PD_DISABLEPRINTTOFILE = $00080000;
  517.   PD_HIDEPRINTTOFILE = $00100000;
  518.   PD_NONETWORKBUTTON = $00200000;
  519.  
  520. type
  521.   PDevNames = ^TDevNames;
  522.   tagDEVNAMES = record
  523.     wDriverOffset: Word;
  524.     wDeviceOffset: Word;
  525.     wOutputOffset: Word;
  526.     wDefault: Word;
  527.   end;
  528.   {$nonamespace tagDEVNAMES}
  529.   TDevNames = tagDEVNAMES;
  530.  
  531. const
  532.   DN_DEFAULTPRN = $0001;
  533.  
  534. function CommDlgExtendedError: DWORD; stdcall;
  535.  
  536. const
  537.   WM_PSD_PAGESETUPDLG     = WM_USER;
  538.   WM_PSD_FULLPAGERECT     = WM_USER + 1;
  539.   WM_PSD_MINMARGINRECT    = WM_USER + 2;
  540.   WM_PSD_MARGINRECT       = WM_USER + 3;
  541.   WM_PSD_GREEKTEXTRECT    = WM_USER + 4;
  542.   WM_PSD_ENVSTAMPRECT     = WM_USER + 5;
  543.   WM_PSD_YAFULLPAGERECT   = WM_USER + 6;
  544.  
  545. type
  546.   PPageSetupDlgA = ^TPageSetupDlgA;
  547.   PPageSetupDlgW = ^TPageSetupDlgW;
  548.   PPageSetupDlg = PPageSetupDlgA;
  549.   tagPSDA = packed record
  550.     lStructSize: DWORD;
  551.     hwndOwner: HWND;
  552.     hDevMode: HGLOBAL;
  553.     hDevNames: HGLOBAL;
  554.     Flags: DWORD;
  555.     ptPaperSize: TPoint;
  556.     rtMinMargin: TRect;
  557.     rtMargin: TRect;
  558.     hInstance: HINST;
  559.     lCustData: LPARAM;
  560.     lpfnPageSetupHook: function(Wnd: HWND; Message: UINT; wParam: WPARAM; lParam: LPARAM): UINT stdcall;
  561.     lpfnPagePaintHook: function(Wnd: HWND; Message: UINT; wParam: WPARAM; lParam: LPARAM): UINT stdcall;
  562.     lpPageSetupTemplateName: PAnsiChar;
  563.     hPageSetupTemplate: HGLOBAL;
  564.   end;
  565.   {$nonamespace tagPSDA}
  566.   TPageSetupDlgA = tagPSDA;
  567.   tagPSDW = packed record
  568.     lStructSize: DWORD;
  569.     hwndOwner: HWND;
  570.     hDevMode: HGLOBAL;
  571.     hDevNames: HGLOBAL;
  572.     Flags: DWORD;
  573.     ptPaperSize: TPoint;
  574.     rtMinMargin: TRect;
  575.     rtMargin: TRect;
  576.     hInstance: HINST;
  577.     lCustData: LPARAM;
  578.     lpfnPageSetupHook: function(Wnd: HWND; Message: UINT; wParam: WPARAM; lParam: LPARAM): UINT stdcall;
  579.     lpfnPagePaintHook: function(Wnd: HWND; Message: UINT; wParam: WPARAM; lParam: LPARAM): UINT stdcall;
  580.     lpPageSetupTemplateName: PWideChar;
  581.     hPageSetupTemplate: HGLOBAL;
  582.   end;
  583.   {$nonamespace tagPSDW}
  584.   TPageSetupDlgW = tagPSDW;
  585.   TPageSetupDlg = TPageSetupDlgA;
  586.  
  587. function PageSetupDlgA(var PgSetupDialog: TPageSetupDlgA): BOOL; stdcall;
  588. function PageSetupDlgW(var PgSetupDialog: TPageSetupDlgW): BOOL; stdcall;
  589. function PageSetupDlg(var PgSetupDialog: TPageSetupDlg): BOOL; stdcall;
  590.  
  591. const
  592.   PSD_DEFAULTMINMARGINS             = $00000000; { default (printer's) }
  593.   PSD_INWININIINTLMEASURE           = $00000000; { 1st of 4 possible }
  594.  
  595.   PSD_MINMARGINS                    = $00000001; { use caller's }
  596.   PSD_MARGINS                       = $00000002; { use caller's }
  597.   PSD_INTHOUSANDTHSOFINCHES         = $00000004; { 2nd of 4 possible }
  598.   PSD_INHUNDREDTHSOFMILLIMETERS     = $00000008; { 3rd of 4 possible }
  599.   PSD_DISABLEMARGINS                = $00000010;
  600.   PSD_DISABLEPRINTER                = $00000020;
  601.   PSD_NOWARNING                     = $00000080; { must be same as PD_* }
  602.   PSD_DISABLEORIENTATION            = $00000100;
  603.   PSD_RETURNDEFAULT                 = $00000400; { must be same as PD_* }
  604.   PSD_DISABLEPAPER                  = $00000200;
  605.   PSD_SHOWHELP                      = $00000800; { must be same as PD_* }
  606.   PSD_ENABLEPAGESETUPHOOK           = $00002000; { must be same as PD_* }
  607.   PSD_ENABLEPAGESETUPTEMPLATE       = $00008000; { must be same as PD_* }
  608.   PSD_ENABLEPAGESETUPTEMPLATEHANDLE = $00020000; { must be same as PD_* }
  609.   PSD_ENABLEPAGEPAINTHOOK           = $00040000;
  610.   PSD_DISABLEPAGEPAINTING           = $00080000;
  611.  
  612. { Common dialog error return codes }
  613.  
  614. const
  615.   CDERR_DIALOGFAILURE    = $FFFF;
  616.  
  617.   CDERR_GENERALCODES     = $0000;
  618.   CDERR_STRUCTSIZE       = $0001;
  619.   CDERR_INITIALIZATION   = $0002;
  620.   CDERR_NOTEMPLATE       = $0003;
  621.   CDERR_NOHINSTANCE      = $0004;
  622.   CDERR_LOADSTRFAILURE   = $0005;
  623.   CDERR_FINDRESFAILURE   = $0006;
  624.   CDERR_LOADRESFAILURE   = $0007;
  625.   CDERR_LOCKRESFAILURE   = $0008;
  626.   CDERR_MEMALLOCFAILURE  = $0009;
  627.   CDERR_MEMLOCKFAILURE   = $000A;
  628.   CDERR_NOHOOK           = $000B;
  629.   CDERR_REGISTERMSGFAIL  = $000C;
  630.  
  631.   PDERR_PRINTERCODES     = $1000;
  632.   PDERR_SETUPFAILURE     = $1001;
  633.   PDERR_PARSEFAILURE     = $1002;
  634.   PDERR_RETDEFFAILURE    = $1003;
  635.   PDERR_LOADDRVFAILURE   = $1004;
  636.   PDERR_GETDEVMODEFAIL   = $1005;
  637.   PDERR_INITFAILURE      = $1006;
  638.   PDERR_NODEVICES        = $1007;
  639.   PDERR_NODEFAULTPRN     = $1008;
  640.   PDERR_DNDMMISMATCH     = $1009;
  641.   PDERR_CREATEICFAILURE  = $100A;
  642.   PDERR_PRINTERNOTFOUND  = $100B;
  643.   PDERR_DEFAULTDIFFERENT = $100C;
  644.  
  645.   CFERR_CHOOSEFONTCODES  = $2000;
  646.   CFERR_NOFONTS          = $2001;
  647.   CFERR_MAXLESSTHANMIN   = $2002;
  648.  
  649.   FNERR_FILENAMECODES    = $3000;
  650.   FNERR_SUBCLASSFAILURE  = $3001;
  651.   FNERR_INVALIDFILENAME  = $3002;
  652.   FNERR_BUFFERTOOSMALL   = $3003;
  653.  
  654.   FRERR_FINDREPLACECODES = $4000;
  655.   FRERR_BUFFERLENGTHZERO = $4001;
  656.  
  657.   CCERR_CHOOSECOLORCODES = $5000;
  658.  
  659. implementation
  660.  
  661. function GetOpenFileNameA;      external 'comdlg32.dll'  name 'GetOpenFileNameA';
  662. function GetOpenFileNameW;      external 'comdlg32.dll'  name 'GetOpenFileNameW';
  663. function GetOpenFileName;      external 'comdlg32.dll'  name 'GetOpenFileNameA';
  664. function GetSaveFileNameA;   external 'comdlg32.dll'  name 'GetSaveFileNameA';
  665. function GetSaveFileNameW;   external 'comdlg32.dll'  name 'GetSaveFileNameW';
  666. function GetSaveFileName;   external 'comdlg32.dll'  name 'GetSaveFileNameA';
  667. function GetFileTitleA;      external 'comdlg32.dll'  name 'GetFileTitleA';
  668. function GetFileTitleW;      external 'comdlg32.dll'  name 'GetFileTitleW';
  669. function GetFileTitle;      external 'comdlg32.dll'  name 'GetFileTitleA';
  670. function ChooseColorA;       external 'comdlg32.dll'  name 'ChooseColorA';
  671. function ChooseColorW;       external 'comdlg32.dll'  name 'ChooseColorW';
  672. function ChooseColor;       external 'comdlg32.dll'  name 'ChooseColorA';
  673. function FindTextA;          external 'comdlg32.dll'  name 'FindTextA';
  674. function FindTextW;          external 'comdlg32.dll'  name 'FindTextW';
  675. function FindText;          external 'comdlg32.dll'  name 'FindTextA';
  676. function ReplaceTextA;       external 'comdlg32.dll'  name 'ReplaceTextA';
  677. function ReplaceTextW;       external 'comdlg32.dll'  name 'ReplaceTextW';
  678. function ReplaceText;       external 'comdlg32.dll'  name 'ReplaceTextA';
  679. function ChooseFontA;        external 'comdlg32.dll'  name 'ChooseFontA';
  680. function ChooseFontW;        external 'comdlg32.dll'  name 'ChooseFontW';
  681. function ChooseFont;        external 'comdlg32.dll'  name 'ChooseFontA';
  682. function PrintDlgA;          external 'comdlg32.dll'  name 'PrintDlgA';
  683. function PrintDlgW;          external 'comdlg32.dll'  name 'PrintDlgW';
  684. function PrintDlg;          external 'comdlg32.dll'  name 'PrintDlgA';
  685. function CommDlgExtendedError; external 'comdlg32.dll'  name 'CommDlgExtendedError';
  686. function PageSetupDlgA;      external 'comdlg32.dll'  name 'PageSetupDlgA';
  687. function PageSetupDlgW;      external 'comdlg32.dll'  name 'PageSetupDlgW';
  688. function PageSetupDlg;      external 'comdlg32.dll'  name 'PageSetupDlgA';
  689.  
  690. end.
  691.  
  692.