home *** CD-ROM | disk | FTP | other *** search
/ PC World Plus! (NZ) 2001 June / HDC50.iso / Runimage / Delphi50 / Source / Rtl / Win / OLEDLG.PAS < prev    next >
Pascal/Delphi Source File  |  1999-08-11  |  46KB  |  1,120 lines

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