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

  1.  
  2. {*******************************************************}
  3. {                                                       }
  4. {       Delphi Runtime Library                          }
  5. {       Windows 32bit API Interface Unit                }
  6. {                                                       }
  7. {       Copyright (c) 1996 Borland International        }
  8. {                                                       }
  9. {*******************************************************}
  10.  
  11. unit OleDlg;
  12.  
  13. interface
  14.  
  15. uses Windows, CommCtrl, Ole2;
  16.  
  17. const
  18.  
  19. { Help Button Identifier }
  20.  
  21.   IDC_OLEUIHELP                   = 99;
  22.  
  23. { Insert Object Dialog identifiers }
  24.  
  25.   IDC_IO_CREATENEW                = 2100;
  26.   IDC_IO_CREATEFROMFILE           = 2101;
  27.   IDC_IO_LINKFILE                 = 2102;
  28.   IDC_IO_OBJECTTYPELIST           = 2103;
  29.   IDC_IO_DISPLAYASICON            = 2104;
  30.   IDC_IO_CHANGEICON               = 2105;
  31.   IDC_IO_FILE                     = 2106;
  32.   IDC_IO_FILEDISPLAY              = 2107;
  33.   IDC_IO_RESULTIMAGE              = 2108;
  34.   IDC_IO_RESULTTEXT               = 2109;
  35.   IDC_IO_ICONDISPLAY              = 2110;
  36.   IDC_IO_OBJECTTYPETEXT           = 2111;
  37.   IDC_IO_FILETEXT                 = 2112;
  38.   IDC_IO_FILETYPE                 = 2113;
  39.   IDC_IO_INSERTCONTROL            = 2114;
  40.   IDC_IO_ADDCONTROL               = 2115;
  41.   IDC_IO_CONTROLTYPELIST          = 2116;
  42.  
  43. { Paste Special Dialog identifiers }
  44.  
  45.   IDC_PS_PASTE                    = 500;
  46.   IDC_PS_PASTELINK                = 501;
  47.   IDC_PS_SOURCETEXT               = 502;
  48.   IDC_PS_PASTELIST                = 503;
  49.   IDC_PS_PASTELINKLIST            = 504;
  50.   IDC_PS_DISPLAYLIST              = 505;
  51.   IDC_PS_DISPLAYASICON            = 506;
  52.   IDC_PS_ICONDISPLAY              = 507;
  53.   IDC_PS_CHANGEICON               = 508;
  54.   IDC_PS_RESULTIMAGE              = 509;
  55.   IDC_PS_RESULTTEXT               = 510;
  56.  
  57. { Change Icon Dialog identifiers }
  58.  
  59.   IDC_CI_GROUP                    = 120;
  60.   IDC_CI_CURRENT                  = 121;
  61.   IDC_CI_CURRENTICON              = 122;
  62.   IDC_CI_DEFAULT                  = 123;
  63.   IDC_CI_DEFAULTICON              = 124;
  64.   IDC_CI_FROMFILE                 = 125;
  65.   IDC_CI_FROMFILEEDIT             = 126;
  66.   IDC_CI_ICONLIST                 = 127;
  67.   IDC_CI_LABEL                    = 128;
  68.   IDC_CI_LABELEDIT                = 129;
  69.   IDC_CI_BROWSE                   = 130;
  70.   IDC_CI_ICONDISPLAY              = 131;
  71.  
  72. { Convert Dialog identifiers }
  73.  
  74.   IDC_CV_OBJECTTYPE               = 150;
  75.   IDC_CV_DISPLAYASICON            = 152;
  76.   IDC_CV_CHANGEICON               = 153;
  77.   IDC_CV_ACTIVATELIST             = 154;
  78.   IDC_CV_CONVERTTO                = 155;
  79.   IDC_CV_ACTIVATEAS               = 156;
  80.   IDC_CV_RESULTTEXT               = 157;
  81.   IDC_CV_CONVERTLIST              = 158;
  82.   IDC_CV_ICONDISPLAY              = 165;
  83.  
  84. { Edit Links Dialog identifiers }
  85.  
  86.   IDC_EL_CHANGESOURCE             = 201;
  87.   IDC_EL_AUTOMATIC                = 202;
  88.   IDC_EL_CANCELLINK               = 209;
  89.   IDC_EL_UPDATENOW                = 210;
  90.   IDC_EL_OPENSOURCE               = 211;
  91.   IDC_EL_MANUAL                   = 212;
  92.   IDC_EL_LINKSOURCE               = 216;
  93.   IDC_EL_LINKTYPE                 = 217;
  94.   IDC_EL_LINKSLISTBOX             = 206;
  95.   IDC_EL_COL1                     = 220;
  96.   IDC_EL_COL2                     = 221;
  97.   IDC_EL_COL3                     = 222;
  98.  
  99. { Busy dialog identifiers }
  100.  
  101.   IDC_BZ_RETRY                    = 600;
  102.   IDC_BZ_ICON                     = 601;
  103.   IDC_BZ_MESSAGE1                 = 602;
  104.   IDC_BZ_SWITCHTO                 = 604;
  105.  
  106. { Update Links dialog identifiers }
  107.  
  108.   IDC_UL_METER                    = 1029;
  109.   IDC_UL_STOP                     = 1030;
  110.   IDC_UL_PERCENT                  = 1031;
  111.   IDC_UL_PROGRESS                 = 1032;
  112.  
  113. { User Prompt dialog identifiers }
  114.  
  115.   IDC_PU_LINKS                    = 900;
  116.   IDC_PU_TEXT                     = 901;
  117.   IDC_PU_CONVERT                  = 902;
  118.   IDC_PU_ICON                     = 908;
  119.  
  120. { General Properties identifiers }
  121.  
  122.   IDC_GP_OBJECTNAME               = 1009;
  123.   IDC_GP_OBJECTTYPE               = 1010;
  124.   IDC_GP_OBJECTSIZE               = 1011;
  125.   IDC_GP_CONVERT                  = 1013;
  126.   IDC_GP_OBJECTICON               = 1014;
  127.   IDC_GP_OBJECTLOCATION           = 1022;
  128.  
  129. { View Properties identifiers }
  130.  
  131.   IDC_VP_PERCENT                  = 1000;
  132.   IDC_VP_CHANGEICON               = 1001;
  133.   IDC_VP_EDITABLE                 = 1002;
  134.   IDC_VP_ASICON                   = 1003;
  135.   IDC_VP_RELATIVE                 = 1005;
  136.   IDC_VP_SPIN                     = 1006;
  137.   IDC_VP_SCALETXT                 = 1034;
  138.   IDC_VP_ICONDISPLAY              = 1021;
  139.   IDC_VP_RESULTIMAGE              = 1033;
  140.  
  141. { Link Properties identifiers }
  142.  
  143.   IDC_LP_OPENSOURCE               = 1006;
  144.   IDC_LP_UPDATENOW                = 1007;
  145.   IDC_LP_BREAKLINK                = 1008;
  146.   IDC_LP_LINKSOURCE               = 1012;
  147.   IDC_LP_CHANGESOURCE             = 1015;
  148.   IDC_LP_AUTOMATIC                = 1016;
  149.   IDC_LP_MANUAL                   = 1017;
  150.   IDC_LP_DATE                     = 1018;
  151.   IDC_LP_TIME                     = 1019;
  152.  
  153. { Dialog Identifiers as passed in Help messages to identify the source }
  154.  
  155.   IDD_INSERTOBJECT                = 1000;
  156.   IDD_CHANGEICON                  = 1001;
  157.   IDD_CONVERT                     = 1002;
  158.   IDD_PASTESPECIAL                = 1003;
  159.   IDD_EDITLINKS                   = 1004;
  160.   IDD_BUSY                        = 1006;
  161.   IDD_UPDATELINKS                 = 1007;
  162.   IDD_CHANGESOURCE                = 1009;
  163.   IDD_INSERTFILEBROWSE            = 1010;
  164.   IDD_CHANGEICONBROWSE            = 1011;
  165.   IDD_CONVERTONLY                 = 1012;
  166.   IDD_CHANGESOURCE4               = 1013;
  167.   IDD_GNRLPROPS                   = 1100;
  168.   IDD_VIEWPROPS                   = 1101;
  169.   IDD_LINKPROPS                   = 1102;
  170.  
  171. { The following Dialogs are message dialogs used by OleUIPromptUser API }
  172.  
  173.   IDD_CANNOTUPDATELINK            = 1008;
  174.   IDD_LINKSOURCEUNAVAILABLE       = 1020;
  175.   IDD_SERVERNOTFOUND              = 1023;
  176.   IDD_OUTOFMEMORY                 = 1024;
  177.   IDD_SERVERNOTREG                = 1021;
  178.   IDD_LINKTYPECHANGED             = 1022;
  179.  
  180. { Delimeter used to separate ItemMoniker pieces of a composite moniker }
  181.  
  182.   OLESTDDELIM = '\';
  183.  
  184. { Strings for registered messages }
  185.  
  186.   SZOLEUI_MSG_HELP                = 'OLEUI_MSG_HELP';
  187.   SZOLEUI_MSG_ENDDIALOG           = 'OLEUI_MSG_ENDDIALOG';
  188.   SZOLEUI_MSG_BROWSE              = 'OLEUI_MSG_BROWSE';
  189.   SZOLEUI_MSG_CHANGEICON          = 'OLEUI_MSG_CHANGEICON';
  190.   SZOLEUI_MSG_CLOSEBUSYDIALOG     = 'OLEUI_MSG_CLOSEBUSYDIALOG';
  191.   SZOLEUI_MSG_CONVERT             = 'OLEUI_MSG_CONVERT';
  192.   SZOLEUI_MSG_CHANGESOURCE        = 'OLEUI_MSG_CHANGESOURCE';
  193.   SZOLEUI_MSG_ADDCONTROL          = 'OLEUI_MSG_ADDCONTROL';
  194.   SZOLEUI_MSG_BROWSE_OFN          = 'OLEUI_MSG_BROWSE_OFN';
  195.  
  196. { Identifiers for SZOLEUI_MSG_BROWSE_OFN (in wParam) }
  197.  
  198.   ID_BROWSE_CHANGEICON            = 1;
  199.   ID_BROWSE_INSERTFILE            = 2;
  200.   ID_BROWSE_ADDCONTROL            = 3;
  201.   ID_BROWSE_CHANGESOURCE          = 4;
  202.  
  203. { Standard success/error definitions }
  204.  
  205.   OLEUI_FALSE                     = 0;
  206.   OLEUI_SUCCESS                   = 1;   { No error, same as OLEUI_OK }
  207.   OLEUI_OK                        = 1;   { OK button pressed }
  208.   OLEUI_CANCEL                    = 2;   { Cancel button pressed }
  209.  
  210.   OLEUI_ERR_STANDARDMIN           = 100;
  211.   OLEUI_ERR_STRUCTURENULL         = 101; { Standard field validation }
  212.   OLEUI_ERR_STRUCTUREINVALID      = 102;
  213.   OLEUI_ERR_CBSTRUCTINCORRECT     = 103;
  214.   OLEUI_ERR_HWNDOWNERINVALID      = 104;
  215.   OLEUI_ERR_LPSZCAPTIONINVALID    = 105;
  216.   OLEUI_ERR_LPFNHOOKINVALID       = 106;
  217.   OLEUI_ERR_HINSTANCEINVALID      = 107;
  218.   OLEUI_ERR_LPSZTEMPLATEINVALID   = 108;
  219.   OLEUI_ERR_HRESOURCEINVALID      = 109;
  220.  
  221.   OLEUI_ERR_FINDTEMPLATEFAILURE   = 110; { Initialization errors }
  222.   OLEUI_ERR_LOADTEMPLATEFAILURE   = 111;
  223.   OLEUI_ERR_DIALOGFAILURE         = 112;
  224.   OLEUI_ERR_LOCALMEMALLOC         = 113;
  225.   OLEUI_ERR_GLOBALMEMALLOC        = 114;
  226.   OLEUI_ERR_LOADSTRING            = 115;
  227.   OLEUI_ERR_OLEMEMALLOC           = 116;
  228.  
  229.   OLEUI_ERR_STANDARDMAX           = 117; { Start here for specific errors }
  230.  
  231. { Hook type used in all structures }
  232.  
  233. type
  234.   TFNOleUIHook = function(Wnd: HWnd; Msg, WParam, LParam: Longint): Longint stdcall;
  235.  
  236. { Miscellaneous utility functions }
  237.  
  238. function OleUIAddVerbMenu(oleObj: IOleObject; pszShortType: PChar;
  239.   menu: HMenu; uPos: Integer; uIDVerbMin: Integer; uIDVerbMax: Integer;
  240.   bAddConvert: BOOL; idConvert: Integer; var outMenu: HMenu): BOOL; stdcall;
  241.  
  242. { **** Insert Object dialog **** }
  243.  
  244. { Insert object dialog structure }
  245.  
  246. type
  247.   POleUIInsertObject = ^TOleUIInsertObject;
  248.   tagOLEUIINSERTOBJECTA = record
  249.     cbStruct: Longint;                  { Structure Size }
  250.     dwFlags: Longint;                   { IN-OUT: Flags }
  251.     hWndOwner: HWnd;                    { Owning window }
  252.     lpszCaption: PChar;                 { Dialog caption bar contents }
  253.     lpfnHook: TFNOleUIHook;             { Hook callback }
  254.     lCustData: Longint;                 { Custom data to pass to hook }
  255.     hInstance: THandle;                 { Instance for customized template name }
  256.     lpszTemplate: PChar;                { Customized template name }
  257.     hResource: HRsrc;                   { Customized template handle }
  258.     clsid: TCLSID;                      { OUT: Return space for class ID }
  259.     lpszFile: PChar;                    { IN-OUT: Filename for inserts or links }
  260.     cchFile: Integer;                   { IN: Size of lpszFile buffer: MAX_PATH }
  261.     cClsidExclude: Integer;             { IN: CLSIDs in lpClsidExclude }
  262.     lpClsidExclude: PCLSID;             { IN: List of CLSIDs to exclude from listing }
  263.     iid: TIID;                          { IN: Requested interface on creation }
  264.     oleRender: Longint;                 { IN: Rendering option }
  265.     lpFormatEtc: PFormatEtc;            { IN: Desired format }
  266.     lpIOleClientSite: IOleClientSite;   { IN: Site to be use for the object }
  267.     lpIStorage: IStorage;               { IN: Storage used for the object }
  268.     ppvObj: Pointer;                    { OUT: Where the object is returned }
  269.     sc: HResult;                        { OUT: Result of creation calls }
  270.     hMetaPict: HGlobal;                 { OUT: metafile aspect (METAFILEPICT) }
  271.   end;
  272.   {$nonamespace tagOLEUIINSERTOBJECTA}
  273.   TOleUIInsertObject = tagOLEUIINSERTOBJECTA;
  274.  
  275. { Insert object dialog function }
  276.  
  277. function OleUIInsertObject(var Info: TOleUIInsertObject): Integer; stdcall;
  278.  
  279. { Insert Object flags }
  280.  
  281. const
  282.   IOF_SHOWHELP                    = $00000001;
  283.   IOF_SELECTCREATENEW             = $00000002;
  284.   IOF_SELECTCREATEFROMFILE        = $00000004;
  285.   IOF_CHECKLINK                   = $00000008;
  286.   IOF_CHECKDISPLAYASICON          = $00000010;
  287.   IOF_CREATENEWOBJECT             = $00000020;
  288.   IOF_CREATEFILEOBJECT            = $00000040;
  289.   IOF_CREATELINKOBJECT            = $00000080;
  290.   IOF_DISABLELINK                 = $00000100;
  291.   IOF_VERIFYSERVERSEXIST          = $00000200;
  292.   IOF_DISABLEDISPLAYASICON        = $00000400;
  293.   IOF_HIDECHANGEICON              = $00000800;
  294.   IOF_SHOWINSERTCONTROL           = $00001000;
  295.   IOF_SELECTCREATECONTROL         = $00002000;
  296.  
  297. { Insert Object specific error codes }
  298.  
  299. const
  300.   OLEUI_IOERR_LPSZFILEINVALID         = OLEUI_ERR_STANDARDMAX + 0;
  301.   OLEUI_IOERR_LPSZLABELINVALID        = OLEUI_ERR_STANDARDMAX + 1;
  302.   OLEUI_IOERR_HICONINVALID            = OLEUI_ERR_STANDARDMAX + 2;
  303.   OLEUI_IOERR_LPFORMATETCINVALID      = OLEUI_ERR_STANDARDMAX + 3;
  304.   OLEUI_IOERR_PPVOBJINVALID           = OLEUI_ERR_STANDARDMAX + 4;
  305.   OLEUI_IOERR_LPIOLECLIENTSITEINVALID = OLEUI_ERR_STANDARDMAX + 5;
  306.   OLEUI_IOERR_LPISTORAGEINVALID       = OLEUI_ERR_STANDARDMAX + 6;
  307.   OLEUI_IOERR_SCODEHASERROR           = OLEUI_ERR_STANDARDMAX + 7;
  308.   OLEUI_IOERR_LPCLSIDEXCLUDEINVALID   = OLEUI_ERR_STANDARDMAX + 8;
  309.   OLEUI_IOERR_CCHFILEINVALID          = OLEUI_ERR_STANDARDMAX + 9;
  310.  
  311. { **** Paste Special dialog **** }
  312.  
  313. { The OLEUIPASTE_xxx values are used by the TOleUIPasteEntry structure.
  314.  
  315.   OLEUIPASTE_ENABLEICON: If the container does not specify this flag for
  316.        the entry in the TOleUIPasteEntry array passed as input to
  317.        OleUIPasteSpecial, the DisplayAsIcon button will be unchecked and
  318.        disabled when the the user selects the format that corresponds to
  319.        the entry.
  320.  
  321.   OLEUIPASTE_PASTEONLY: Indicates that the entry in the TOleUIPasteEntry
  322.        array is valid for pasting only.
  323.  
  324.   OLEUIPASTE_PASTE: Indicates that the entry in the TOleUIPasteEntry array
  325.        is valid for pasting. It may also be valid for linking if any of
  326.        the following linking flags are specified.
  327.  
  328.   If the entry in the TOleUIPasteEntry array is valid for linking, the
  329.   following flags indicate which link types are acceptable by OR'ing
  330.   together the appropriate OLEUIPASTE_LINKTYPE<#> values.
  331.  
  332.   These values correspond as follows to the array of link types passed to
  333.   OleUIPasteSpecial:
  334.  
  335.     OLEUIPASTE_LINKTYPE1 = arrLinkTypes[0]
  336.     OLEUIPASTE_LINKTYPE2 = arrLinkTypes[1]
  337.     OLEUIPASTE_LINKTYPE3 = arrLinkTypes[2]
  338.     OLEUIPASTE_LINKTYPE4 = arrLinkTypes[3]
  339.     OLEUIPASTE_LINKTYPE5 = arrLinkTypes[4]
  340.     OLEUIPASTE_LINKTYPE6 = arrLinkTypes[5]
  341.     OLEUIPASTE_LINKTYPE7 = arrLinkTypes[6]
  342.     OLEUIPASTE_LINKTYPE8 = arrLinkTypes[7]
  343.  
  344.   where,
  345.     UINT arrLinkTypes[8] is an array of registered clipboard formats for
  346.     linking. A maximium of 8 link types are allowed. }
  347.  
  348. const
  349.   OLEUIPASTE_ENABLEICON    = 2048;  { enable display as icon }
  350.   OLEUIPASTE_PASTEONLY     = 0;
  351.   OLEUIPASTE_PASTE         = 512;
  352.   OLEUIPASTE_LINKANYTYPE   = 1024;
  353.   OLEUIPASTE_LINKTYPE1     = 1;
  354.   OLEUIPASTE_LINKTYPE2     = 2;
  355.   OLEUIPASTE_LINKTYPE3     = 4;
  356.   OLEUIPASTE_LINKTYPE4     = 8;
  357.   OLEUIPASTE_LINKTYPE5     = 16;
  358.   OLEUIPASTE_LINKTYPE6     = 32;
  359.   OLEUIPASTE_LINKTYPE7     = 64;
  360.   OLEUIPASTE_LINKTYPE8     = 128;
  361.  
  362. { TOleUIPasteEntry structure
  363.  
  364.   An array of TOleUIPasteEntry entries is specified for the PasteSpecial
  365.   dialog box. Each entry includes a TFormatEtc which specifies the
  366.   formats that are acceptable, a string that is to represent the format
  367.   in the  dialog's list box, a string to customize the result text of the
  368.   dialog and a set of flags from the OLEUIPASTE_xxx constants.  The
  369.   flags indicate if the entry is valid for pasting only, linking only or
  370.   both pasting and linking. }
  371.  
  372. type
  373.   POleUIPasteEntry = ^TOleUIPasteEntry;
  374.   tagOLEUIPASTEENTRYA = record
  375.     fmtetc: TFormatEtc;         { Format that is acceptable }
  376.     lpstrFormatName: PChar;     { String that represents the format
  377.                                   to the user. %s is replaced by the
  378.                                   full user type name of the object }
  379.     lpstrResultText: PChar;     { String to customize the result text
  380.                                   of the dialog when the user
  381.                                   selects the format correspoding to
  382.                                   this entry. Any %s in this string
  383.                                   is replaced by the the application
  384.                                   name or FullUserTypeName of the
  385.                                   object on the clipboard }
  386.     dwFlags: Longint;           { Values from OLEUIPASTE_xxx set }
  387.     dwScratchSpace: Longint;    { Scratch space used internally }
  388.   end;
  389.   {$nonamespace tagOLEUIPASTEENTRYA}
  390.   TOleUIPasteEntry = tagOLEUIPASTEENTRYA;
  391.  
  392. { Maximum number of link types }
  393.  
  394. const
  395.   PS_MAXLINKTYPES = 8;
  396.  
  397. type
  398.   POleUIPasteSpecial = ^TOleUIPasteSpecial;
  399.   tagOLEUIPASTESPECIALA = record
  400.     cbStruct: Longint;                  { Structure Size }
  401.     dwFlags: Longint;                   { IN-OUT: Flags }
  402.     hWndOwner: HWnd;                    { Owning window }
  403.     lpszCaption: PChar;                 { Dialog caption bar contents }
  404.     lpfnHook: TFNOleUIHook;             { Hook callback }
  405.     lCustData: Longint;                 { Custom data to pass to hook }
  406.     hInstance: THandle;                 { Instance for customized template name }
  407.     lpszTemplate: PChar;                { Customized template name }
  408.     hResource: HRsrc;                   { Customized template handle }
  409.     lpSrcDataObj: IDataObject;          { IN-OUT: Source IDataObject on the clipboard }
  410.     arrPasteEntries: POleUIPasteEntry;  { IN: Array of acceptable formats }
  411.     cPasteEntries: Integer;             { IN: No. of TOleUIPasteEntry array entries }
  412.     arrLinkTypes: PLongint;             { IN: List of acceptable link types }
  413.     cLinkTypes: Integer;                { IN: Number of link types }
  414.     cClsidExclude: Integer;             { IN: Number of CLSIDs in lpClsidExclude }
  415.     lpClsidExclude: PCLSID;             { IN: List of CLSIDs to exclude from list }
  416.     nSelectedIndex: Integer;            { OUT: Index that the user selected }
  417.     fLink: BOOL;                        { OUT: Indicates if Paste or PasteLink }
  418.     hMetaPict: HGlobal;                 { OUT: Handle to Metafile containing icon }
  419.     sizel: TSize;                       { OUT: size of object/link in its source
  420.                                           may be 0,0 if different display
  421.                                           aspect is chosen }
  422.   end;
  423.   {$nonamespace tagOLEUIPASTESPECIALA}
  424.   TOleUIPasteSpecial = tagOLEUIPASTESPECIALA;
  425.  
  426. function OleUIPasteSpecial(var Info: TOleUIPasteSpecial): Integer; stdcall;
  427.  
  428. { Paste Special specific flags }
  429.  
  430. const
  431.   PSF_SHOWHELP                    = $00000001;
  432.   PSF_SELECTPASTE                 = $00000002;
  433.   PSF_SELECTPASTELINK             = $00000004;
  434.   PSF_CHECKDISPLAYASICON          = $00000008;
  435.   PSF_DISABLEDISPLAYASICON        = $00000010;
  436.   PSF_HIDECHANGEICON              = $00000020;
  437.   PSF_STAYONCLIPBOARDCHANGE       = $00000040;
  438.   PSF_NOREFRESHDATAOBJECT         = $00000080;
  439.  
  440. { Paste Special specific error codes }
  441.  
  442. const
  443.   OLEUI_IOERR_SRCDATAOBJECTINVALID   = OLEUI_ERR_STANDARDMAX + 0;
  444.   OLEUI_IOERR_ARRPASTEENTRIESINVALID = OLEUI_ERR_STANDARDMAX + 1;
  445.   OLEUI_IOERR_ARRLINKTYPESINVALID    = OLEUI_ERR_STANDARDMAX + 2;
  446.   OLEUI_PSERR_CLIPBOARDCHANGED       = OLEUI_ERR_STANDARDMAX + 3;
  447.   OLEUI_PSERR_GETCLIPBOARDFAILED     = OLEUI_ERR_STANDARDMAX + 4;
  448.  
  449. { **** Edit Links dialog **** }
  450.  
  451. { iOleUILinkContainer interface
  452.  
  453.   This interface must be implemented by container applications that
  454.   want to use the EditLinks dialog. the EditLinks dialog calls back
  455.   to the container app to perform the OLE functions to manipulate
  456.   the links within the container. }
  457.  
  458. type
  459.   iOleUILinkContainer = class(IUnknown)
  460.   public
  461.     function GetNextLink(dwLink: Longint): Longint; virtual; stdcall; abstract;
  462.     function SetLinkUpdateOptions(dwLink: Longint;
  463.       dwUpdateOpt: Longint): HResult; virtual; stdcall; abstract;
  464.     function GetLinkUpdateOptions(dwLink: Longint;
  465.       var dwUpdateOpt: Longint): HResult; virtual; stdcall; abstract;
  466.     function SetLinkSource(dwLink: Longint; pszDisplayName: PChar;
  467.       lenFileName: Longint; var chEaten: Longint;
  468.       fValidateSource: BOOL): HResult; virtual; stdcall; abstract;
  469.     function GetLinkSource(dwLink: Longint; var pszDisplayName: PChar;
  470.       var lenFileName: Longint; var pszFullLinkType: PChar;
  471.       var pszShortLinkType: PChar; var fSourceAvailable: BOOL;
  472.       var fIsSelected: BOOL): HResult; virtual; stdcall; abstract;
  473.     function OpenLinkSource(dwLink: Longint): HResult; virtual; stdcall; abstract;
  474.     function UpdateLink(dwLink: Longint; fErrorMessage: BOOL;
  475.       fErrorAction: BOOL): HResult; virtual; stdcall; abstract;
  476.     function CancelLink(dwLink: Longint): HResult; virtual; stdcall; abstract;
  477.   end;
  478.  
  479. { TOleIUEditLinks structure }
  480.  
  481. type
  482.   POleUIEditLinks = ^TOleUIEditLinks;
  483.   tagOLEUIEDITLINKSA = record
  484.     cbStruct: Longint;                  { Structure Size }
  485.     dwFlags: Longint;                   { IN-OUT: Flags }
  486.     hWndOwner: HWnd;                    { Owning window }
  487.     lpszCaption: PChar;                 { Dialog caption bar contents }
  488.     lpfnHook: TFNOleUIHook;             { Hook callback }
  489.     lCustData: Longint;                 { Custom data to pass to hook }
  490.     hInstance: THandle;                 { Instance for customized template name }
  491.     lpszTemplate: PChar;                { Customized template name }
  492.     hResource: HRsrc;                   { Customized template handle }
  493.     OleUILinkContainer: IOleUILinkContainer; { IN: Interface to manipulate
  494.                                           links in the container }
  495.   end;
  496.   {$nonamespace tagOLEUIEDITLINKSA}
  497.   TOleUIEditLinks = tagOLEUIEDITLINKSA;
  498.  
  499. const
  500.   OLEUI_ELERR_LINKCNTRNULL    = OLEUI_ERR_STANDARDMAX + 0;
  501.   OLEUI_ELERR_LINKCNTRINVALID = OLEUI_ERR_STANDARDMAX + 1;
  502.  
  503. function OleUIEditLinks(var Info: TOleUIEditLinks): Integer; stdcall;
  504.  
  505. { Edit Links flags }
  506.  
  507. const
  508.   ELF_SHOWHELP                    = $00000001;
  509.   ELF_DISABLEUPDATENOW            = $00000002;
  510.   ELF_DISABLEOPENSOURCE           = $00000004;
  511.   ELF_DISABLECHANGESOURCE         = $00000008;
  512.   ELF_DISABLECANCELLINK           = $00000010;
  513.  
  514. { **** Change Icon dialog **** }
  515.  
  516. type
  517.   POleUIChangeIcon = ^TOleUIChangeIcon;
  518.   tagOLEUICHANGEICONA = record
  519.     cbStruct: Longint;                  { Structure Size }
  520.     dwFlags: Longint;                   { IN-OUT: Flags }
  521.     hWndOwner: HWnd;                    { Owning window }
  522.     lpszCaption: PChar;                 { Dialog caption bar contents }
  523.     lpfnHook: TFNOleUIHook;             { Hook callback }
  524.     lCustData: Longint;                 { Custom data to pass to hook }
  525.     hInstance: THandle;                 { Instance for customized template name }
  526.     lpszTemplate: PChar;                { Customized template name }
  527.     hResource: HRsrc;                   { Customized template handle }
  528.     hMetaPict: HGlobal;                 { IN-OUT: Current and final image.
  529.                                           Source of the icon is embedded in
  530.                                           the metafile itself }
  531.     clsid: TCLSID;                      { IN: class used to get Default icon }
  532.     szIconExe: array[0..MAX_PATH - 1] of Char; { IN: exlicit icon source path }
  533.     cchIconExe: Integer;                { IN: number of characters in szIconExe }
  534.   end;
  535.   {$nonamespace tagOLEUICHANGEICONA}
  536.   TOleUIChangeIcon = tagOLEUICHANGEICONA;
  537.  
  538. function OleUIChangeIcon(var Info: TOleUIChangeIcon): Integer; stdcall;
  539.  
  540. { Change Icon flags }
  541.  
  542. const
  543.   CIF_SHOWHELP                    = $00000001;
  544.   CIF_SELECTCURRENT               = $00000002;
  545.   CIF_SELECTDEFAULT               = $00000004;
  546.   CIF_SELECTFROMFILE              = $00000008;
  547.   CIF_USEICONEXE                  = $00000010;
  548.  
  549. { Change Icon specific error codes }
  550.  
  551. const
  552.   OLEUI_CIERR_MUSTHAVECLSID           = OLEUI_ERR_STANDARDMAX + 0;
  553.   OLEUI_CIERR_MUSTHAVECURRENTMETAFILE = OLEUI_ERR_STANDARDMAX + 1;
  554.   OLEUI_CIERR_SZICONEXEINVALID        = OLEUI_ERR_STANDARDMAX + 2;
  555.  
  556. { Property used by ChangeIcon dialog to give its parent window access to
  557.   its hDlg. The PasteSpecial dialog may need to force the ChgIcon dialog
  558.   down if the clipboard contents change underneath it. If so it will send
  559.   a IDCANCEL command to the ChangeIcon dialog. }
  560.  
  561. const
  562.   PROP_HWND_CHGICONDLG = 'HWND_CIDLG';
  563.  
  564. { **** Convert dialog **** }
  565.  
  566. type
  567.   POleUIConvert = ^TOleUIConvert;
  568.   tagOLEUICONVERTA = record
  569.     cbStruct: Longint;                  { Structure Size }
  570.     dwFlags: Longint;                   { IN-OUT: Flags }
  571.     hWndOwner: HWnd;                    { Owning window }
  572.     lpszCaption: PChar;                 { Dialog caption bar contents }
  573.     lpfnHook: TFNOleUIHook;             { Hook callback }
  574.     lCustData: Longint;                 { Custom data to pass to hook }
  575.     hInstance: THandle;                 { Instance for customized template name }
  576.     lpszTemplate: PChar;                { Customized template name }
  577.     hResource: HRsrc;                   { Customized template handle }
  578.     clsid: TCLSID;                      { IN: Class ID sent in to dialog: IN only }
  579.     clsidConvertDefault: TCLSID;        { IN: use as convert default: IN only }
  580.     clsidActivateDefault: TCLSID;       { IN: use as activate default: IN only }
  581.     clsidNew: TCLSID;                   { OUT: Selected Class ID }
  582.     dvAspect: Longint;                  { IN-OUT: either DVASPECT_CONTENT or
  583.                                           DVASPECT_ICON }
  584.     wFormat: Word;                      { IN" Original data format }
  585.     fIsLinkedObject: BOOL;              { IN: true if object is linked }
  586.     hMetaPict: HGlobal;                 { IN-OUT: metafile icon image }
  587.     lpszUserType: PChar;                { IN-OUT: user type name of original class.
  588.                                           We'll do lookup if NULL. This gets freed
  589.                                           on exit }
  590.     fObjectsIconChanged: BOOL;          { OUT: TRUE == ChangeIcon was called }
  591.     lpszDefLabel: PChar;                { IN-OUT: default label to use for icon.
  592.                                           if NULL, the short user type name
  593.                                           will be used. if the object is a
  594.                                           link, the caller should pass the
  595.                                           DisplayName of the link source
  596.                                           This gets freed on exit }
  597.     cClsidExclude: Integer;             { IN: No. of CLSIDs in lpClsidExclude }
  598.     lpClsidExclude: PCLSID;             { IN: List of CLSIDs to exclude from list }
  599.   end;
  600.   {$nonamespace tagOLEUICONVERTA}
  601.   TOleUIConvert = tagOLEUICONVERTA;
  602.  
  603. function OleUIConvert(var Info: TOleUIConvert): Integer; stdcall;
  604.  
  605. { Determine if there is at least one class that can Convert or ActivateAs
  606.   the given clsid }
  607.  
  608. function OleUICanConvertOrActivateAs(const clsid: TCLSID;
  609.   fIsLinkedObject: BOOL; wFormat: Word): BOOL; stdcall;
  610.  
  611. { Convert Dialog flags }
  612.  
  613. const
  614.   CF_SHOWHELPBUTTON               = $00000001;
  615.   CF_SETCONVERTDEFAULT            = $00000002;
  616.   CF_SETACTIVATEDEFAULT           = $00000004;
  617.   CF_SELECTCONVERTTO              = $00000008;
  618.   CF_SELECTACTIVATEAS             = $00000010;
  619.   CF_DISABLEDISPLAYASICON         = $00000020;
  620.   CF_DISABLEACTIVATEAS            = $00000040;
  621.   CF_HIDECHANGEICON               = $00000080;
  622.   CF_CONVERTONLY                  = $00000100;
  623.  
  624. { Convert specific error codes }
  625.  
  626. const
  627.   OLEUI_CTERR_CLASSIDINVALID      = OLEUI_ERR_STANDARDMAX + 1;
  628.   OLEUI_CTERR_DVASPECTINVALID     = OLEUI_ERR_STANDARDMAX + 2;
  629.   OLEUI_CTERR_CBFORMATINVALID     = OLEUI_ERR_STANDARDMAX + 3;
  630.   OLEUI_CTERR_HMETAPICTINVALID    = OLEUI_ERR_STANDARDMAX + 4;
  631.   OLEUI_CTERR_STRINGINVALID       = OLEUI_ERR_STANDARDMAX + 5;
  632.  
  633. { **** Busy dialog **** }
  634.  
  635. type
  636.   POleUIBusy = ^TOleUIBusy;
  637.   tagOLEUIBUSYA = record
  638.     cbStruct: Longint;                  { Structure Size }
  639.     dwFlags: Longint;                   { IN-OUT: Flags }
  640.     hWndOwner: HWnd;                    { Owning window }
  641.     lpszCaption: PChar;                 { Dialog caption bar contents }
  642.     lpfnHook: TFNOleUIHook;             { Hook callback }
  643.     lCustData: Longint;                 { Custom data to pass to hook }
  644.     hInstance: THandle;                 { Instance for customized template name }
  645.     lpszTemplate: PChar;                { Customized template name }
  646.     hResource: HRsrc;                   { Customized template handle }
  647.     task: HTask;                        { IN: HTask which is blocking }
  648.     lphWndDialog: ^HWnd;                { IN: Dialog's HWND is placed here }
  649.   end;
  650.   {$nonamespace tagOLEUIBUSYA}
  651.   TOleUIBusy = tagOLEUIBUSYA;
  652.  
  653. function OleUIBusy(var Info: TOleUIBusy): Integer; stdcall;
  654.  
  655. { Flags for the Busy dialog }
  656.  
  657. const
  658.   BZ_DISABLECANCELBUTTON          = $00000001;
  659.   BZ_DISABLESWITCHTOBUTTON        = $00000002;
  660.   BZ_DISABLERETRYBUTTON           = $00000004;
  661.   BZ_NOTRESPONDINGDIALOG          = $00000008;
  662.  
  663. { Busy specific error/return codes }
  664.  
  665. const
  666.   OLEUI_BZERR_HTASKINVALID     = OLEUI_ERR_STANDARDMAX + 0;
  667.   OLEUI_BZ_SWITCHTOSELECTED    = OLEUI_ERR_STANDARDMAX + 1;
  668.   OLEUI_BZ_RETRYSELECTED       = OLEUI_ERR_STANDARDMAX + 2;
  669.   OLEUI_BZ_CALLUNBLOCKED       = OLEUI_ERR_STANDARDMAX + 3;
  670.  
  671. { **** Object Properties dialog **** }
  672.  
  673. type
  674.   iOleUIObjInfo = class(IUnknown)
  675.   public
  676.     function GetObjectInfo(dwObject: Longint;
  677.       var dwObjSize: Longint; var lpszLabel: PChar;
  678.       var lpszType: PChar; var lpszShortType: PChar;
  679.       var lpszLocation: PChar): HResult; virtual; stdcall; abstract;
  680.     function GetConvertInfo(dwObject: Longint; var ClassID: TCLSID;
  681.       var wFormat: Word; var ConvertDefaultClassID: TCLSID;
  682.       var lpClsidExclude: PCLSID; var cClsidExclude: Longint): HResult;
  683.       virtual; stdcall; abstract;
  684.     function ConvertObject(dwObject: Longint;
  685.       const clsidNew: TCLSID): HResult; virtual; stdcall; abstract;
  686.     function GetViewInfo(dwObject: Longint; var hMetaPict: HGlobal;
  687.       var dvAspect: Longint; var nCurrentScale: Integer): HResult;
  688.       virtual; stdcall; abstract;
  689.     function SetViewInfo(dwObject: Longint; hMetaPict: HGlobal;
  690.       dvAspect: Longint; nCurrentScale: Integer;
  691.       bRelativeToOrig: BOOL): HResult; virtual; stdcall; abstract;
  692.   end;
  693.  
  694. type
  695.   iOleUILinkInfo = class(iOleUILinkContainer)
  696.   public
  697.     function GetLastUpdate(dwLink: Longint;
  698.       var LastUpdate: TFileTime): HResult; virtual; stdcall; abstract;
  699.   end;
  700.  
  701. type
  702.   POleUIGnrlProps = ^TOleUIGnrlProps;
  703.   tagOLEUIGNRLPROPSA = record
  704.     cbStruct: Longint;
  705.     dwFlags: Longint;
  706.     dwReserved1: array[1..2] of Longint;
  707.     lpfnHook: TFNOleUIHook;
  708.     lCustData: Longint;
  709.     dwReserved2: array[1..3] of Longint;
  710.     lpOP: Pointer;
  711.   end;
  712.   {$nonamespace tagOLEUIGNRLPROPSA}
  713.   TOleUIGnrlProps = tagOLEUIGNRLPROPSA;
  714.  
  715. type
  716.   POleUIViewProps = ^TOleUIViewProps;
  717.   tagOLEUIVIEWPROPSA = record
  718.     cbStruct: Longint;
  719.     dwFlags: Longint;
  720.     dwReserved1: array[1..2] of Longint;
  721.     lpfnHook: TFNOleUIHook;
  722.     lCustData: Longint;
  723.     dwReserved2: array[1..3] of Longint;
  724.     lpOP: Pointer;
  725.     nScaleMin: Integer;
  726.     nScaleMax: Integer;
  727.   end;
  728.   {$nonamespace tagOLEUIVIEWPROPSA}
  729.   TOleUIViewProps = tagOLEUIVIEWPROPSA;
  730.  
  731. { Flags for TOleUIViewProps }
  732.  
  733. const
  734.   VPF_SELECTRELATIVE          = $00000001;  { IN: relative to orig }
  735.   VPF_DISABLERELATIVE         = $00000002;  { IN: disable relative to orig }
  736.   VPF_DISABLESCALE            = $00000004;  { IN: disable scale option }
  737.  
  738. type
  739.   POleUILinkProps = ^TOleUILinkProps;
  740.   tagOLEUILINKPROPSA = record
  741.     cbStruct: Longint;
  742.     dwFlags: Longint;
  743.     dwReserved1: array[1..2] of Longint;
  744.     lpfnHook: TFNOleUIHook;
  745.     lCustData: Longint;
  746.     dwReserved2: array[1..3] of Longint;
  747.     lpOP: Pointer;
  748.   end;
  749.   {$nonamespace tagOLEUILINKPROPSA}
  750.   TOleUILinkProps = tagOLEUILINKPROPSA;
  751.  
  752. type
  753.   POleUIObjectProps = ^TOleUIObjectProps;
  754.   tagOLEUIOBJECTPROPSA = record
  755.     cbStruct: Longint;          { Structure Size }
  756.     dwFlags: Longint;           { IN-OUT: global flags for the sheet }
  757.     lpPS: PPropSheetHeader;     { IN: property sheet header }
  758.     dwObject: Longint;          { IN: identifier for the object }
  759.     lpObjInfo: IOleUIObjInfo;   { IN: interface to manipulate object }
  760.     dwLink: Longint;            { IN: identifier for the link }
  761.     lpLinkInfo: IOleUILinkInfo; { IN: interface to manipulate link }
  762.     lpGP: POleUIGnrlProps;      { IN: general page }
  763.     lpVP: POleUIViewProps;      { IN: view page }
  764.     lpLP: POleUILinkProps;      { IN: link page }
  765.   end;
  766.   {$nonamespace tagOLEUIOBJECTPROPSA}
  767.   TOleUIObjectProps = tagOLEUIOBJECTPROPSA;
  768.  
  769. function OleUIObjectProperties(var Info: TOleUIObjectProps): Integer; stdcall;
  770.  
  771. { Flags for OLEUIOBJECTPROPS }
  772.  
  773. const
  774.   OPF_OBJECTISLINK                = $00000001;
  775.   OPF_NOFILLDEFAULT               = $00000002;
  776.   OPF_SHOWHELP                    = $00000004;
  777.   OPF_DISABLECONVERT              = $00000008;
  778.  
  779. { Errors for OleUIObjectProperties }
  780.  
  781. const
  782.   OLEUI_OPERR_SUBPROPNULL           = OLEUI_ERR_STANDARDMAX + 0;
  783.   OLEUI_OPERR_SUBPROPINVALID        = OLEUI_ERR_STANDARDMAX + 1;
  784.   OLEUI_OPERR_PROPSHEETNULL         = OLEUI_ERR_STANDARDMAX + 2;
  785.   OLEUI_OPERR_PROPSHEETINVALID      = OLEUI_ERR_STANDARDMAX + 3;
  786.   OLEUI_OPERR_SUPPROP               = OLEUI_ERR_STANDARDMAX + 4;
  787.   OLEUI_OPERR_PROPSINVALID          = OLEUI_ERR_STANDARDMAX + 5;
  788.   OLEUI_OPERR_PAGESINCORRECT        = OLEUI_ERR_STANDARDMAX + 6;
  789.   OLEUI_OPERR_INVALIDPAGES          = OLEUI_ERR_STANDARDMAX + 7;
  790.   OLEUI_OPERR_NOTSUPPORTED          = OLEUI_ERR_STANDARDMAX + 8;
  791.   OLEUI_OPERR_DLGPROCNOTNULL        = OLEUI_ERR_STANDARDMAX + 9;
  792.   OLEUI_OPERR_LPARAMNOTZERO         = OLEUI_ERR_STANDARDMAX + 10;
  793.   OLEUI_GPERR_STRINGINVALID         = OLEUI_ERR_STANDARDMAX + 11;
  794.   OLEUI_GPERR_CLASSIDINVALID        = OLEUI_ERR_STANDARDMAX + 12;
  795.   OLEUI_GPERR_LPCLSIDEXCLUDEINVALID = OLEUI_ERR_STANDARDMAX + 13;
  796.   OLEUI_GPERR_CBFORMATINVALID       = OLEUI_ERR_STANDARDMAX + 14;
  797.   OLEUI_VPERR_METAPICTINVALID       = OLEUI_ERR_STANDARDMAX + 15;
  798.   OLEUI_VPERR_DVASPECTINVALID       = OLEUI_ERR_STANDARDMAX + 16;
  799.   OLEUI_LPERR_LINKCNTRNULL          = OLEUI_ERR_STANDARDMAX + 17;
  800.   OLEUI_LPERR_LINKCNTRINVALID       = OLEUI_ERR_STANDARDMAX + 18;
  801.   OLEUI_OPERR_PROPERTYSHEET         = OLEUI_ERR_STANDARDMAX + 19;
  802.  
  803. { wParam used by PSM_QUERYSIBLINGS }
  804.  
  805. const
  806.   OLEUI_QUERY_GETCLASSID          = $FF00;  { override class id for icon }
  807.   OLEUI_QUERY_LINKBROKEN          = $FF01;  { after link broken }
  808.  
  809. implementation
  810.  
  811. const
  812.   OleDlgDLL = 'oledlg.dll';
  813.  
  814. function OleUIAddVerbMenu;              external OleDlgDLL name 'OleUIAddVerbMenuA';
  815. function OleUIInsertObject;             external OleDlgDLL name 'OleUIInsertObjectA';
  816. function OleUIPasteSpecial;             external OleDlgDLL name 'OleUIPasteSpecialA';
  817. function OleUIEditLinks;                external OleDlgDLL name 'OleUIEditLinksA';
  818. function OleUIChangeIcon;               external OleDlgDLL name 'OleUIChangeIconA';
  819. function OleUIConvert;                  external OleDlgDLL name 'OleUIConvertA';
  820. function OleUICanConvertOrActivateAs;   external OleDlgDLL name 'OleUICanConvertOrActivateAs';
  821. function OleUIBusy;                     external OleDlgDLL name 'OleUIBusyA';
  822. function OleUIObjectProperties;         external OleDlgDLL name 'OleUIObjectPropertiesA';
  823.  
  824. end.
  825.