home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1997 May / Pcwk0597.iso / borland / cb / setup / cbuilder / data.z / OLECTL.PAS < prev    next >
Pascal/Delphi Source File  |  1997-02-28  |  29KB  |  817 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 OleCtl;
  12.  
  13. interface
  14.  
  15. uses Windows, Messages, Ole2;
  16.  
  17. const
  18.  
  19. { OLE control status codes }
  20.  
  21.   CTL_E_ILLEGALFUNCTIONCALL       = $800A0000 + 5;
  22.   CTL_E_OVERFLOW                  = $800A0000 + 6;
  23.   CTL_E_OUTOFMEMORY               = $800A0000 + 7;
  24.   CTL_E_DIVISIONBYZERO            = $800A0000 + 11;
  25.   CTL_E_OUTOFSTRINGSPACE          = $800A0000 + 14;
  26.   CTL_E_OUTOFSTACKSPACE           = $800A0000 + 28;
  27.   CTL_E_BADFILENAMEORNUMBER       = $800A0000 + 52;
  28.   CTL_E_FILENOTFOUND              = $800A0000 + 53;
  29.   CTL_E_BADFILEMODE               = $800A0000 + 54;
  30.   CTL_E_FILEALREADYOPEN           = $800A0000 + 55;
  31.   CTL_E_DEVICEIOERROR             = $800A0000 + 57;
  32.   CTL_E_FILEALREADYEXISTS         = $800A0000 + 58;
  33.   CTL_E_BADRECORDLENGTH           = $800A0000 + 59;
  34.   CTL_E_DISKFULL                  = $800A0000 + 61;
  35.   CTL_E_BADRECORDNUMBER           = $800A0000 + 63;
  36.   CTL_E_BADFILENAME               = $800A0000 + 64;
  37.   CTL_E_TOOMANYFILES              = $800A0000 + 67;
  38.   CTL_E_DEVICEUNAVAILABLE         = $800A0000 + 68;
  39.   CTL_E_PERMISSIONDENIED          = $800A0000 + 70;
  40.   CTL_E_DISKNOTREADY              = $800A0000 + 71;
  41.   CTL_E_PATHFILEACCESSERROR       = $800A0000 + 75;
  42.   CTL_E_PATHNOTFOUND              = $800A0000 + 76;
  43.   CTL_E_INVALIDPATTERNSTRING      = $800A0000 + 93;
  44.   CTL_E_INVALIDUSEOFNULL          = $800A0000 + 94;
  45.   CTL_E_INVALIDFILEFORMAT         = $800A0000 + 321;
  46.   CTL_E_INVALIDPROPERTYVALUE      = $800A0000 + 380;
  47.   CTL_E_INVALIDPROPERTYARRAYINDEX = $800A0000 + 381;
  48.   CTL_E_SETNOTSUPPORTEDATRUNTIME  = $800A0000 + 382;
  49.   CTL_E_SETNOTSUPPORTED           = $800A0000 + 383;
  50.   CTL_E_NEEDPROPERTYARRAYINDEX    = $800A0000 + 385;
  51.   CTL_E_SETNOTPERMITTED           = $800A0000 + 387;
  52.   CTL_E_GETNOTSUPPORTEDATRUNTIME  = $800A0000 + 393;
  53.   CTL_E_GETNOTSUPPORTED           = $800A0000 + 394;
  54.   CTL_E_PROPERTYNOTFOUND          = $800A0000 + 422;
  55.   CTL_E_INVALIDCLIPBOARDFORMAT    = $800A0000 + 460;
  56.   CTL_E_INVALIDPICTURE            = $800A0000 + 481;
  57.   CTL_E_PRINTERERROR              = $800A0000 + 482;
  58.   CTL_E_CANTSAVEFILETOTEMP        = $800A0000 + 735;
  59.   CTL_E_SEARCHTEXTNOTFOUND        = $800A0000 + 744;
  60.   CTL_E_REPLACEMENTSTOOLONG       = $800A0000 + 746;
  61.  
  62.   CTL_E_CUSTOM_FIRST = $800A0000 + 600;
  63.  
  64. { IClassFactory2 status codes }
  65.  
  66.   CLASS_E_NOTLICENSED = CLASSFACTORY_E_FIRST + 2;
  67.  
  68. { IConnectionPoint status codes }
  69.  
  70.   CONNECT_E_FIRST = $80040200;
  71.   CONNECT_E_LAST  = $8004020F;
  72.   CONNECT_S_FIRST = $00040200;
  73.   CONNECT_S_LAST  = $0004020F;
  74.  
  75.   CONNECT_E_NOCONNECTION  = CONNECT_E_FIRST + 0;
  76.   CONNECT_E_ADVISELIMIT   = CONNECT_E_FIRST + 1;
  77.   CONNECT_E_CANNOTCONNECT = CONNECT_E_FIRST + 2;
  78.   CONNECT_E_OVERRIDDEN    = CONNECT_E_FIRST + 3;
  79.  
  80. { DllRegisterServer/DllUnregisterServer status codes }
  81.  
  82.   SELFREG_E_FIRST = $80040200;
  83.   SELFREG_E_LAST  = $80040200;
  84.   SELFREG_S_FIRST = $00040200;
  85.   SELFREG_S_LAST  = $00040200;
  86.  
  87.   SELFREG_E_TYPELIB = SELFREG_E_FIRST + 0;
  88.   SELFREG_E_CLASS   = SELFREG_E_FIRST + 1;
  89.  
  90. { IPerPropertyBrowsing status codes }
  91.  
  92.   PERPROP_E_FIRST = $80040200;
  93.   PERPROP_E_LAST  = $8004020F;
  94.   PERPROP_S_FIRST = $00040200;
  95.   PERPROP_S_LAST  = $0004020F;
  96.  
  97.   PERPROP_E_NOPAGEAVAILABLE = PERPROP_E_FIRST + 0;
  98.  
  99. { Additional OLEMISC constants }
  100.  
  101.   OLEMISC_INVISIBLEATRUNTIME = $00000400;
  102.   OLEMISC_ALWAYSRUN          = $00000800;
  103.   OLEMISC_ACTSLIKEBUTTON     = $00001000;
  104.   OLEMISC_ACTSLIKELABEL      = $00002000;
  105.   OLEMISC_NOUIACTIVATE       = $00004000;
  106.   OLEMISC_ALIGNABLE          = $00008000;
  107.   OLEMISC_SIMPLEFRAME        = $00010000;
  108.   OLEMISC_SETCLIENTSITEFIRST = $00020000;
  109.   OLEMISC_IMEMODE            = $00040000;
  110.  
  111. { Additional OLEIVERB constants }
  112.  
  113.   OLEIVERB_PROPERTIES = -7;
  114.  
  115. { Additional variant type tags for property sets }
  116.  
  117.   VT_STREAMED_PROPSET = 73;  { Stream contains a property set }
  118.   VT_STORED_PROPSET   = 74;  { Storage contains a property set }
  119.   VT_BLOB_PROPSET     = 75;  { Blob contains a property set }
  120.  
  121. { Variant type tags that are just aliases for others }
  122.  
  123.   VT_COLOR          = VT_I4;
  124.   VT_XPOS_PIXELS    = VT_I4;
  125.   VT_YPOS_PIXELS    = VT_I4;
  126.   VT_XSIZE_PIXELS   = VT_I4;
  127.   VT_YSIZE_PIXELS   = VT_I4;
  128.   VT_XPOS_HIMETRIC  = VT_I4;
  129.   VT_YPOS_HIMETRIC  = VT_I4;
  130.   VT_XSIZE_HIMETRIC = VT_I4;
  131.   VT_YSIZE_HIMETRIC = VT_I4;
  132.   VT_TRISTATE       = VT_I2;
  133.   VT_OPTEXCLUSIVE   = VT_BOOL;
  134.   VT_FONT           = VT_DISPATCH;
  135.   VT_PICTURE        = VT_DISPATCH;
  136.   VT_HANDLE         = VT_I4;
  137.  
  138. { Reflected window message IDs }
  139.  
  140.   OCM__BASE = WM_USER + $1C00;
  141.  
  142.   OCM_COMMAND           = OCM__BASE + WM_COMMAND;
  143.   OCM_CTLCOLORBTN       = OCM__BASE + WM_CTLCOLORBTN;
  144.   OCM_CTLCOLOREDIT      = OCM__BASE + WM_CTLCOLOREDIT;
  145.   OCM_CTLCOLORDLG       = OCM__BASE + WM_CTLCOLORDLG;
  146.   OCM_CTLCOLORLISTBOX   = OCM__BASE + WM_CTLCOLORLISTBOX;
  147.   OCM_CTLCOLORMSGBOX    = OCM__BASE + WM_CTLCOLORMSGBOX;
  148.   OCM_CTLCOLORSCROLLBAR = OCM__BASE + WM_CTLCOLORSCROLLBAR;
  149.   OCM_CTLCOLORSTATIC    = OCM__BASE + WM_CTLCOLORSTATIC;
  150.   OCM_DRAWITEM          = OCM__BASE + WM_DRAWITEM;
  151.   OCM_MEASUREITEM       = OCM__BASE + WM_MEASUREITEM;
  152.   OCM_DELETEITEM        = OCM__BASE + WM_DELETEITEM;
  153.   OCM_VKEYTOITEM        = OCM__BASE + WM_VKEYTOITEM;
  154.   OCM_CHARTOITEM        = OCM__BASE + WM_CHARTOITEM;
  155.   OCM_COMPAREITEM       = OCM__BASE + WM_COMPAREITEM;
  156.   OCM_HSCROLL           = OCM__BASE + WM_HSCROLL;
  157.   OCM_VSCROLL           = OCM__BASE + WM_VSCROLL;
  158.   OCM_PARENTNOTIFY      = OCM__BASE + WM_PARENTNOTIFY;
  159.  
  160. { TControlInfo.dwFlags masks }
  161.  
  162.   CTRLINFO_EATS_RETURN = 1;  { Control doesn't send Return to container }
  163.   CTRLINFO_EATS_ESCAPE = 2;  { Control doesn't send Escape to container }
  164.  
  165. { IOleControlSite.TransformCoords flags }
  166.  
  167.   XFORMCOORDS_POSITION            = 1;
  168.   XFORMCOORDS_SIZE                = 2;
  169.   XFORMCOORDS_HIMETRICTOCONTAINER = 4;
  170.   XFORMCOORDS_CONTAINERTOHIMETRIC = 8;
  171.  
  172. { IPropertyPageSite.OnStatusChange flags }
  173.  
  174.   PROPPAGESTATUS_DIRTY    = 1;  { Values in page have changed }
  175.   PROPPAGESTATUS_VALIDATE = 2;  { Appropriate time to validate/apply }
  176.  
  177. { Picture attributes }
  178.  
  179.   PICTURE_SCALABLE    = 1;
  180.   PICTURE_TRANSPARENT = 2;
  181.  
  182. { TPictDesc.picType values }
  183.  
  184.   PICTYPE_UNINITIALIZED = -1;
  185.   PICTYPE_NONE          = 0;
  186.   PICTYPE_BITMAP        = 1;
  187.   PICTYPE_METAFILE      = 2;
  188.   PICTYPE_ICON          = 3;
  189.   PICTYPE_ENHMETAFILE   = 4;
  190.  
  191. { Standard dispatch ID constants }
  192.  
  193.   DISPID_AUTOSIZE      = -500;
  194.   DISPID_BACKCOLOR     = -501;
  195.   DISPID_BACKSTYLE     = -502;
  196.   DISPID_BORDERCOLOR   = -503;
  197.   DISPID_BORDERSTYLE   = -504;
  198.   DISPID_BORDERWIDTH   = -505;
  199.   DISPID_DRAWMODE      = -507;
  200.   DISPID_DRAWSTYLE     = -508;
  201.   DISPID_DRAWWIDTH     = -509;
  202.   DISPID_FILLCOLOR     = -510;
  203.   DISPID_FILLSTYLE     = -511;
  204.   DISPID_FONT          = -512;
  205.   DISPID_FORECOLOR     = -513;
  206.   DISPID_ENABLED       = -514;
  207.   DISPID_HWND          = -515;
  208.   DISPID_TABSTOP       = -516;
  209.   DISPID_TEXT          = -517;
  210.   DISPID_CAPTION       = -518;
  211.   DISPID_BORDERVISIBLE = -519;
  212.  
  213.   DISPID_REFRESH  = -550;
  214.   DISPID_DOCLICK  = -551;
  215.   DISPID_ABOUTBOX = -552;
  216.  
  217.   DISPID_CLICK      = -600;
  218.   DISPID_DBLCLICK   = -601;
  219.   DISPID_KEYDOWN    = -602;
  220.   DISPID_KEYPRESS   = -603;
  221.   DISPID_KEYUP      = -604;
  222.   DISPID_MOUSEDOWN  = -605;
  223.   DISPID_MOUSEMOVE  = -606;
  224.   DISPID_MOUSEUP    = -607;
  225.   DISPID_ERROREVENT = -608;
  226.  
  227.   DISPID_AMBIENT_BACKCOLOR         = -701;
  228.   DISPID_AMBIENT_DISPLAYNAME       = -702;
  229.   DISPID_AMBIENT_FONT              = -703;
  230.   DISPID_AMBIENT_FORECOLOR         = -704;
  231.   DISPID_AMBIENT_LOCALEID          = -705;
  232.   DISPID_AMBIENT_MESSAGEREFLECT    = -706;
  233.   DISPID_AMBIENT_SCALEUNITS        = -707;
  234.   DISPID_AMBIENT_TEXTALIGN         = -708;
  235.   DISPID_AMBIENT_USERMODE          = -709;
  236.   DISPID_AMBIENT_UIDEAD            = -710;
  237.   DISPID_AMBIENT_SHOWGRABHANDLES   = -711;
  238.   DISPID_AMBIENT_SHOWHATCHING      = -712;
  239.   DISPID_AMBIENT_DISPLAYASDEFAULT  = -713;
  240.   DISPID_AMBIENT_SUPPORTSMNEMONICS = -714;
  241.   DISPID_AMBIENT_AUTOCLIP          = -715;
  242.  
  243. { Dispatch ID constants for fonts }
  244.  
  245.   DISPID_FONT_NAME    = 0;
  246.   DISPID_FONT_SIZE    = 2;
  247.   DISPID_FONT_BOLD    = 3;
  248.   DISPID_FONT_ITALIC  = 4;
  249.   DISPID_FONT_UNDER   = 5;
  250.   DISPID_FONT_STRIKE  = 6;
  251.   DISPID_FONT_WEIGHT  = 7;
  252.   DISPID_FONT_CHARSET = 8;
  253.  
  254. { Dispatch ID constants for pictures }
  255.  
  256.   DISPID_PICT_HANDLE = 0;
  257.   DISPID_PICT_HPAL   = 2;
  258.   DISPID_PICT_TYPE   = 3;
  259.   DISPID_PICT_WIDTH  = 4;
  260.   DISPID_PICT_HEIGHT = 5;
  261.   DISPID_PICT_RENDER = 6;
  262.  
  263. type
  264.  
  265.   PTextMetricOle = PTextMetricW;
  266.   TTextMetricOle = TTextMetricW;
  267.  
  268.   TOleColor = Longint;
  269.  
  270.   OLE_XPOS_PIXELS  = Longint;
  271.   {$nonamespace OLE_XPOS_PIXELS}
  272.   OLE_YPOS_PIXELS  = Longint;
  273.   {$nonamespace OLE_YPOS_PIXELS}
  274.   OLE_XSIZE_PIXELS = Longint;
  275.   {$nonamespace OLE_XSIZE_PIXELS}
  276.   OLE_YSIZE_PIXELS = Longint;
  277.   {$nonamespace OLE_YSIZE_PIXELS}
  278.  
  279.   OLE_XPOS_HIMETRIC  = Longint;
  280.   {$nonamespace OLE_XPOS_HIMETRIC}
  281.   OLE_YPOS_HIMETRIC  = Longint;
  282.   {$nonamespace OLE_YPOS_HIMETRIC}
  283.   OLE_XSIZE_HIMETRIC = Longint;
  284.   {$nonamespace OLE_XSIZE_HIMETRIC}
  285.   OLE_YSIZE_HIMETRIC = Longint;
  286.   {$nonamespace OLE_YSIZE_HIMETRIC}
  287.  
  288.   OLE_XPOS_CONTAINER  = Single;
  289.   {$nonamespace OLE_XPOS_CONTAINER}
  290.   OLE_YPOS_CONTAINER  = Single;
  291.   {$nonamespace OLE_YPOS_CONTAINER}
  292.   OLE_XSIZE_CONTAINER = Single;
  293.   {$nonamespace OLE_XSIZE_CONTAINER}
  294.   OLE_YSIZE_CONTAINER = Single;
  295.   {$nonamespace OLE_YSIZE_CONTAINER}
  296.  
  297.   OLE_TRISTATE = (triUnchecked, triChecked, triGray);
  298.  
  299.   OLE_OPTEXCLUSIVE = Bool;
  300.   {$nonamespace OLE_OPTEXCLUSIVE}
  301.  
  302.   OLE_CANCELBOOL = Bool;
  303.   {$nonamespace OLE_CANCELBOOL}
  304.  
  305.   OLE_ENABLEDEFAULTBOOL = Bool;
  306.   {$nonamespace OLE_ENABLEDEFAULTBOOL}
  307.  
  308.   OLE_HANDLE = Longint;
  309.   {$nonamespace OLE_HANDLE}
  310.  
  311. { Registration function types }
  312.  
  313.   TDLLRegisterServer = function: HResult stdcall;
  314.   TDLLUnregisterServer = function: HResult stdcall;
  315.  
  316. { TPointF structure }
  317.  
  318.   PPointF = ^TPointF;
  319.   tagPOINTF = record
  320.     x: Single;
  321.     y: Single;
  322.   end;
  323.   {$nonamespace tagPOINTF}
  324.   TPointF = tagPOINTF;
  325.  
  326. { TControlInfo structure }
  327.  
  328.   PControlInfo = ^TControlInfo;
  329.   tagCONTROLINFO = record
  330.     cb: Longint;
  331.     hAccel: HAccel;
  332.     cAccel: Word;
  333.     dwFlags: Longint;
  334.   end;
  335.   {$nonamespace tagCONTROLINFO}
  336.   TControlInfo = tagCONTROLINFO;
  337.  
  338. { Forward declarations }
  339.  
  340.   IOleControl = class;
  341.   IOleControlSite = class;
  342.   ISimpleFrameSite = class;
  343.   IPersistStreamInit = class;
  344.   IPropertyNotifySink = class;
  345.   IProvideClassInfo = class;
  346.   IConnectionPointContainer = class;
  347.   IEnumConnectionPoints = class;
  348.   IConnectionPoint = class;
  349.   IEnumConnections = class;
  350.   IClassFactory2 = class;
  351.   ISpecifyPropertyPages = class;
  352.   IPerPropertyBrowsing = class;
  353.   IPropertyPageSite = class;
  354.   IPropertyPage = class;
  355.   IPropertyPage2 = class;
  356.   IFont = class;
  357.   IFontDisp = class;
  358.   IPicture = class;
  359.   IPictureDisp = class;
  360.  
  361. { IOleControl interface }
  362.  
  363.   IOleControl = class(IUnknown)
  364.   public
  365.     function GetControlInfo(var ci: TControlInfo): HResult; virtual; stdcall; abstract;
  366.     function OnMnemonic(msg: PMsg): HResult; virtual; stdcall; abstract;
  367.     function OnAmbientPropertyChange(dispid: TDispID): HResult; virtual; stdcall; abstract;
  368.     function FreezeEvents(bFreeze: BOOL): HResult; virtual; stdcall; abstract;
  369.   end;
  370.  
  371. { IOleControlSite interface }
  372.  
  373.   IOleControlSite = class(IUnknown)
  374.   public
  375.     function OnControlInfoChanged: HResult; virtual; stdcall; abstract;
  376.     function LockInPlaceActive(fLock: BOOL): HResult; virtual; stdcall; abstract;
  377.     function GetExtendedControl(var disp: IDispatch): HResult; virtual; stdcall; abstract;
  378.     function TransformCoords(var ptlHimetric: TPoint; var ptfContainer: TPointF;
  379.       flags: Longint): HResult; virtual; stdcall; abstract;
  380.     function TranslateAccelerator(msg: PMsg; grfModifiers: Longint): HResult;
  381.        virtual; stdcall; abstract;
  382.     function OnFocus(fGotFocus: BOOL): HResult; virtual; stdcall; abstract;
  383.     function ShowPropertyFrame: HResult; virtual; stdcall; abstract;
  384.   end;
  385.  
  386. { ISimpleFrameSite interface }
  387.  
  388.   ISimpleFrameSite = class(IUnknown)
  389.   public
  390.     function PreMessageFilter(wnd: HWnd; msg, wp, lp: Integer;
  391.       var res: Integer; var Cookie: Longint): HResult;
  392.       virtual; stdcall; abstract;
  393.     function PostMessageFilter(wnd: HWnd; msg, wp, lp: Integer;
  394.       var res: Integer; Cookie: Longint): HResult;
  395.       virtual; stdcall; abstract;
  396.   end;
  397.  
  398. { IPersistStreamInit interface }
  399.  
  400.   IPersistStreamInit = class(IPersistStream)
  401.   public
  402.     function InitNew: HResult; virtual; stdcall; abstract;
  403.   end;
  404.  
  405. { IPropertyNotifySink interface }
  406.  
  407.   IPropertyNotifySink = class(IUnknown)
  408.   public
  409.     function OnChanged(dispid: TDispID): HResult; virtual; stdcall; abstract;
  410.     function OnRequestEdit(dispid: TDispID): HResult; virtual; stdcall; abstract;
  411.   end;
  412.  
  413. { IProvideClassInfo interface }
  414.  
  415.   IProvideClassInfo = class(IUnknown)
  416.   public
  417.     function GetClassInfo(var ti: ITypeInfo): HResult; virtual; stdcall; abstract;
  418.   end;
  419.  
  420. { IConnectionPointContainer interface }
  421.  
  422.   IConnectionPointContainer = class(IUnknown)
  423.   public
  424.     function EnumConnectionPoints(var Enum: IEnumConnectionPoints): HResult;
  425.       virtual; stdcall; abstract;
  426.     function FindConnectionPoint(const iid: TIID;
  427.       var cp: IConnectionPoint): HResult; virtual; stdcall; abstract;
  428.   end;
  429.  
  430. { IEnumConnectionPoints interface }
  431.  
  432.   IEnumConnectionPoints = class(IUnknown)
  433.   public
  434.     function Next(celt: Longint; var elt;
  435.       pceltFetched: PLongint): HResult; virtual; stdcall; abstract;
  436.     function Skip(celt: Longint): HResult; virtual; stdcall; abstract;
  437.     function Reset: HResult; virtual; stdcall; abstract;
  438.     function Clone(var Enum: IEnumConnectionPoints): HResult;
  439.       virtual; stdcall; abstract;
  440.   end;
  441.  
  442. { IConnectionPoint interface }
  443.  
  444.   IConnectionPoint = class(IUnknown)
  445.   public
  446.     function GetConnectionInterface(var iid: TIID): HResult; virtual; stdcall; abstract;
  447.     function GetConnectionPointContainer(var cpc: IConnectionPointContainer): HResult;
  448.       virtual; stdcall; abstract;
  449.     function Advise(unkSink: IUnknown; var dwCookie: Longint): HResult; virtual; stdcall; abstract;
  450.     function Unadvise(dwCookie: Longint): HResult; virtual; stdcall; abstract;
  451.     function EnumConnections(var Enum: IEnumConnections): HResult; virtual; stdcall; abstract;
  452.   end;
  453.  
  454. { TConnectData structure }
  455.  
  456.   PConnectData = ^TConnectData;
  457.   tagCONNECTDATA = record
  458.     pUnk: IUnknown;
  459.     dwCookie: Longint;
  460.   end;
  461.   {$nonamespace tagCONNECTDATA}
  462.   TConnectData = tagCONNECTDATA;
  463.  
  464. { IEnumConnections interface }
  465.  
  466.   IEnumConnections = class(IUnknown)
  467.   public
  468.     function Next(celt: Longint; var elt;
  469.       pceltFetched: PLongint): HResult; virtual; stdcall; abstract;
  470.     function Skip(celt: Longint): HResult; virtual; stdcall; abstract;
  471.     function Reset: HResult; virtual; stdcall; abstract;
  472.     function Clone(var Enum: IEnumConnections): HResult; virtual; stdcall; abstract;
  473.   end;
  474.  
  475. { TLicInfo structure }
  476.  
  477.   PLicInfo = ^TLicInfo;
  478.   tagLICINFO = record
  479.     cbLicInfo: Longint;
  480.     fRuntimeKeyAvail: BOOL;
  481.     fLicVerified: BOOL;
  482.   end;
  483.   {$nonamespace tagLICINFO}
  484.   TLicInfo = tagLICINFO;
  485.  
  486. { IClassFactory2 interface }
  487.  
  488.   IClassFactory2 = class(IClassFactory)
  489.     function GetLicInfo(var licInfo: TLicInfo): HResult; virtual; stdcall; abstract;
  490.     function RequestLicKey(dwResrved: Longint; var bstrKey: TBStr): HResult;
  491.       virtual; stdcall; abstract;
  492.     function CreateInstanceLic(unkOuter: IUnknown; unkReserved: IUnknown;
  493.       const iid: TIID; bstrKey: TBStr; var vObject): HResult; virtual; stdcall; abstract;
  494.   end;
  495.  
  496. { TCAUUID structure - a counted array of TGUID }
  497.  
  498.   PGUIDList = ^TGUIDList;
  499.   TGUIDList = array[0..65535] of TGUID;
  500.  
  501.   PCAGUID = ^TCAGUID;
  502.   TCAGUID = record
  503.     cElems: Longint;
  504.     pElems: PGUIDList;
  505.   end;
  506.  
  507. { TCAPOleStr structure - a counted array of POleStr }
  508.  
  509.   PCAPOleStr = ^TCAPOleStr;
  510.   TCAPOleStr = record
  511.     cElems: Longint;
  512.     pElems: POleStrList;
  513.   end;
  514.  
  515. { TCALongint - a counted array of Longint }
  516.  
  517.   PLongintList = ^TLongintList;
  518.   TLongintList = array[0..65535] of Longint;
  519.  
  520.   PCALongint = ^TCALongint;
  521.   TCALongint = record
  522.     cElems: Longint;
  523.     pElems: PLongintList;
  524.   end;
  525.  
  526. { TOCPFIParams - parameters for OleCreatePropertyFrameIndirect }
  527.  
  528.   POCPFIParams = ^TOCPFIParams;
  529.   tagOCPFIPARAMS = record
  530.     cbStructSize: Longint;
  531.     hWndOwner: HWnd;
  532.     x: Integer;
  533.     y: Integer;
  534.     lpszCaption: POleStr;
  535.     cObjects: Longint;
  536.     pObjects: Pointer;
  537.     cPages: Longint;
  538.     pPages: Pointer;
  539.     lcid: TLCID;
  540.     dispidInitialProperty: TDispID;
  541.   end;
  542.   {$nonamespace tagOCPFIPARAMS}
  543.   TOCPFIParams = tagOCPFIPARAMS;
  544.  
  545. { TPropPageInfo structure - information about a property page }
  546.  
  547.   PPropPageInfo = ^TPropPageInfo;
  548.   tagPROPPAGEINFO = record
  549.     cb: Longint;
  550.     pszTitle: POleStr;
  551.     size: TSize;
  552.     pszDocString: POleStr;
  553.     pszHelpFile: POleStr;
  554.     dwHelpContext: Longint;
  555.   end;
  556.   {$nonamespace tagPROPPAGEINFO}
  557.   TPropPageInfo = tagPROPPAGEINFO;
  558.  
  559. { ISpecifyPropertyPages interface }
  560.  
  561.   ISpecifyPropertyPages = class(IUnknown)
  562.   public
  563.     function GetPages(var pages: TCAGUID): HResult; virtual; stdcall; abstract;
  564.   end;
  565.  
  566. { IPerPropertyBrowsing interface }
  567.  
  568.   IPerPropertyBrowsing = class(IUnknown)
  569.   public
  570.     function GetDisplayString(dispid: TDispID; var bstr: TBStr): HResult;
  571.       virtual; stdcall; abstract;
  572.     function MapPropertyToPage(dispid: TDispID; var clsid: TCLSID): HResult;
  573.       virtual; stdcall; abstract;
  574.     function GetPredefinedStrings(dispid: TDispID; var caStringsOut: TCAPOleStr;
  575.       var caCookiesOut: TCALongint): HResult; virtual; stdcall; abstract;
  576.     function GetPredefinedValue(dispid: TDispID; dwCookie: Longint;
  577.       var varOut: Variant): HResult; virtual; stdcall; abstract;
  578.   end;
  579.  
  580. { IPropertyPageSite interface }
  581.  
  582.   IPropertyPageSite = class(IUnknown)
  583.   public
  584.     function OnStatusChange(flags: Longint): HResult; virtual; stdcall; abstract;
  585.     function GetLocaleID(var localeID: TLCID): HResult; virtual; stdcall; abstract;
  586.     function GetPageContainer(var unk: IUnknown): HResult; virtual; stdcall; abstract;
  587.     function TranslateAccelerator(msg: PMsg): HResult; virtual; stdcall; abstract;
  588.   end;
  589.  
  590. { IPropertyPage interface }
  591.  
  592.   IPropertyPage = class(IUnknown)
  593.   public
  594.     function SetPageSite(pageSite: IPropertyPageSite): HResult; virtual; stdcall; abstract;
  595.     function Activate(hwndParent: HWnd; const rc: TRect; bModal: BOOL): HResult;
  596.       virtual; stdcall; abstract;
  597.     function Deactivate: HResult; virtual; stdcall; abstract;
  598.     function GetPageInfo(var pageInfo: TPropPageInfo): HResult; virtual; stdcall; abstract;
  599.     function SetObjects(cObjects: Longint; unk: IUnknown): HResult; virtual; stdcall; abstract;
  600.     function Show(nCmdShow: Integer): HResult; virtual; stdcall; abstract;
  601.     function Move(const rect: TRect): HResult; virtual; stdcall; abstract;
  602.     function IsPageDirty: HResult; virtual; stdcall; abstract;
  603.     function Apply: HResult; virtual; stdcall; abstract;
  604.     function Help(pszHelpDir: POleStr): HResult; virtual; stdcall; abstract;
  605.     function TranslateAccelerator(msg: PMsg): HResult; virtual; stdcall; abstract;
  606.   end;
  607.  
  608. { IPropertyPage2 interface }
  609.  
  610.   IPropertyPage2 = class(IPropertyPage)
  611.   public
  612.     function EditProperty(dispid: TDispID): HResult; virtual; stdcall; abstract;
  613.   end;
  614.  
  615. { IFont interface }
  616.  
  617.   IFont = class(IUnknown)
  618.   public
  619.     function get_Name(var name: TBStr): HResult; virtual; stdcall; abstract;
  620.     function put_Name(name: TBStr): HResult; virtual; stdcall; abstract;
  621.     function get_Size(var size: TCurrency): HResult; virtual; stdcall; abstract;
  622.     function put_Size(size: TCurrency): HResult; virtual; stdcall; abstract;
  623.     function get_Bold(var bold: BOOL): HResult; virtual; stdcall; abstract;
  624.     function put_Bold(bold: BOOL): HResult; virtual; stdcall; abstract;
  625.     function get_Italic(var italic: BOOL): HResult; virtual; stdcall; abstract;
  626.     function put_Italic(italic: BOOL): HResult; virtual; stdcall; abstract;
  627.     function get_Underline(var underline: BOOL): HResult; virtual; stdcall; abstract;
  628.     function put_Underline(underline: BOOL): HResult; virtual; stdcall; abstract;
  629.     function get_Strikethrough(var strikethrough: BOOL): HResult; virtual; stdcall; abstract;
  630.     function put_Strikethrough(strikethrough: BOOL): HResult; virtual; stdcall; abstract;
  631.     function get_Weight(var weight: Smallint): HResult; virtual; stdcall; abstract;
  632.     function put_Weight(weight: Smallint): HResult; virtual; stdcall; abstract;
  633.     function get_Charset(var charset: Smallint): HResult; virtual; stdcall; abstract;
  634.     function put_Charset(charset: Smallint): HResult; virtual; stdcall; abstract;
  635.     function get_hFont(var font: HFont): HResult; virtual; stdcall; abstract;
  636.     function Clone(var font: IFont): HResult; virtual; stdcall; abstract;
  637.     function IsEqual(fontOther: IFont): HResult; virtual; stdcall; abstract;
  638.     function SetRatio(cyLogical, cyHimetric: Longint): HResult; virtual; stdcall; abstract;
  639.     function QueryTextMetrics(var tm: TTextMetricOle): HResult; virtual; stdcall; abstract;
  640.     function AddRefHfont(font: HFont): HResult; virtual; stdcall; abstract;
  641.     function ReleaseHfont(font: HFont): HResult; virtual; stdcall; abstract;
  642.   end;
  643.  
  644. { IFontDisp interface }
  645.  
  646.   IFontDisp = class(IDispatch);
  647.  
  648. { TFontDesc structure }
  649.  
  650.   PFontDesc = ^TFontDesc;
  651.   tagFONTDESC = record
  652.     cbSizeofstruct: Integer;
  653.     lpstrName: POleStr;
  654.     cySize: Comp;
  655.     sWeight: Smallint;
  656.     sCharset: Smallint;
  657.     fItalic: BOOL;
  658.     fUnderline: BOOL;
  659.     fStrikethrough: BOOL;
  660.   end;
  661.   {$nonamespace tagFONTDESC}
  662.   TFontDesc = tagFONTDESC;
  663.  
  664. { IPicture interface }
  665.  
  666.   IPicture = class(IUnknown)
  667.   public
  668.     function get_Handle(var handle: OLE_HANDLE): HResult;  virtual; stdcall; abstract;
  669.     function get_hPal(var handle: OLE_HANDLE): HResult; virtual; stdcall; abstract;
  670.     function get_Type(var typ: Smallint): HResult; virtual; stdcall; abstract;
  671.     function get_Width(var width: OLE_XSIZE_HIMETRIC): HResult; virtual; stdcall; abstract;
  672.     function get_Height(var height: OLE_YSIZE_HIMETRIC): HResult; virtual; stdcall; abstract;
  673.     function Render(dc: HDC; x, y, cx, cy: Longint;
  674.       xSrc: OLE_XPOS_HIMETRIC; ySrc: OLE_YPOS_HIMETRIC;
  675.       cxSrc: OLE_XSIZE_HIMETRIC; cySrc: OLE_YSIZE_HIMETRIC;
  676.       const rcWBounds: TRect): HResult; virtual; stdcall; abstract;
  677.     function set_hPal(hpal: OLE_HANDLE): HResult; virtual; stdcall; abstract;
  678.     function get_CurDC(var dcOut: HDC): HResult; virtual; stdcall; abstract;
  679.     function SelectPicture(dcIn: HDC; var hdcOut: HDC;
  680.       var bmpOut: OLE_HANDLE): HResult; virtual; stdcall; abstract;
  681.     function get_KeepOriginalFormat(var fkeep: BOOL): HResult; virtual; stdcall; abstract;
  682.     function put_KeepOriginalFormat(fkeep: BOOL): HResult; virtual; stdcall; abstract;
  683.     function PictureChanged: HResult; virtual; stdcall; abstract;
  684.     function SaveAsFile(stream: IStream; fSaveMemCopy: BOOL;
  685.       var cbSize: Longint): HResult; virtual; stdcall; abstract;
  686.     function get_Attributes(dwAttr: Longint): HResult; virtual; stdcall; abstract;
  687.   end;
  688.  
  689. { IPictureDisp interface }
  690.  
  691.   IPictureDisp = class(IDispatch);
  692.  
  693. { TPictDesc structure }
  694.  
  695.   PPictDesc = ^TPictDesc;
  696.   tagPICTDESC = record
  697.     cbSizeofstruct: Integer;
  698.     picType: Integer;
  699.     case Integer of
  700.       PICTYPE_BITMAP: (
  701.         hbitmap: THandle;       { Bitmap }
  702.         hpal: THandle);         { Accompanying palette }
  703.       PICTYPE_METAFILE: (
  704.         hMeta: THandle;         { Metafile }
  705.         xExt, yExt: Integer);   { Extent }
  706.       PICTYPE_ICON: (
  707.         hIcon: THandle);        { Icon }
  708.   end;
  709.   {$nonamespace tagPICTDESC}
  710.   TPictDesc = tagPICTDESC;
  711.  
  712. const
  713.  
  714. { Standard interface IDs }
  715.  
  716.   IID_IPropertyNotifySink: TGUID = (
  717.     D1:$9BFBBC02;D2:$EFF1;D3:$101A;D4:($84,$ED,$00,$AA,$00,$34,$1D,$07));
  718.   IID_IClassFactory2: TGUID = (
  719.     D1:$B196B28F;D2:$BAB4;D3:$101A;D4:($B6,$9C,$00,$AA,$00,$34,$1D,$07));
  720.   IID_IProvideClassInfo: TGUID = (
  721.     D1:$B196B283;D2:$BAB4;D3:$101A;D4:($B6,$9C,$00,$AA,$00,$34,$1D,$07));
  722.   IID_IConnectionPointContainer: TGUID = (
  723.     D1:$B196B284;D2:$BAB4;D3:$101A;D4:($B6,$9C,$00,$AA,$00,$34,$1D,$07));
  724.   IID_IEnumConnectionPoints: TGUID = (
  725.     D1:$B196B285;D2:$BAB4;D3:$101A;D4:($B6,$9C,$00,$AA,$00,$34,$1D,$07));
  726.   IID_IConnectionPoint: TGUID = (
  727.     D1:$B196B286;D2:$BAB4;D3:$101A;D4:($B6,$9C,$00,$AA,$00,$34,$1D,$07));
  728.   IID_IEnumConnections: TGUID = (
  729.     D1:$B196B287;D2:$BAB4;D3:$101A;D4:($B6,$9C,$00,$AA,$00,$34,$1D,$07));
  730.   IID_IOleControl: TGUID = (
  731.     D1:$B196B288;D2:$BAB4;D3:$101A;D4:($B6,$9C,$00,$AA,$00,$34,$1D,$07));
  732.   IID_IOleControlSite: TGUID = (
  733.     D1:$B196B289;D2:$BAB4;D3:$101A;D4:($B6,$9C,$00,$AA,$00,$34,$1D,$07));
  734.   IID_ISimpleFrameSite: TGUID = (
  735.     D1:$742B0E01;D2:$14E6;D3:$101B;D4:($91,$4E,$00,$AA,$00,$30,$0C,$AB));
  736.   IID_IPersistStreamInit: TGUID = (
  737.     D1:$7FD52380;D2:$4E07;D3:$101B;D4:($AE,$2D,$08,$00,$2B,$2E,$C7,$13));
  738.   IID_IPropertyFrame: TGUID = (
  739.     D1:$B196B28A;D2:$BAB4;D3:$101A;D4:($B6,$9C,$00,$AA,$00,$34,$1D,$07));
  740.   IID_ISpecifyPropertyPages: TGUID = (
  741.     D1:$B196B28B;D2:$BAB4;D3:$101A;D4:($B6,$9C,$00,$AA,$00,$34,$1D,$07));
  742.   IID_IPerPropertyBrowsing: TGUID = (
  743.     D1:$376BD3AA;D2:$3845;D3:$101B;D4:($84,$ED,$08,$00,$2B,$2E,$C7,$13));
  744.   IID_IPropertyPageSite: TGUID = (
  745.     D1:$B196B28C;D2:$BAB4;D3:$101A;D4:($B6,$9C,$00,$AA,$00,$34,$1D,$07));
  746.   IID_IPropertyPage: TGUID = (
  747.     D1:$B196B28D;D2:$BAB4;D3:$101A;D4:($B6,$9C,$00,$AA,$00,$34,$1D,$07));
  748.   IID_IPropertyPage2: TGUID = (
  749.     D1:$01E44665;D2:$24AC;D3:$101B;D4:($84,$ED,$08,$00,$2B,$2E,$C7,$13));
  750.   IID_IFont: TGUID = (
  751.     D1:$BEF6E002;D2:$A874;D3:$101A;D4:($8B,$BA,$00,$AA,$00,$30,$0C,$AB));
  752.   IID_IFontDisp: TGUID = (
  753.     D1:$BEF6E003;D2:$A874;D3:$101A;D4:($8B,$BA,$00,$AA,$00,$30,$0C,$AB));
  754.   IID_IPicture: TGUID = (
  755.     D1:$7BF80980;D2:$BF32;D3:$101A;D4:($8B,$BB,$00,$AA,$00,$30,$0C,$AB));
  756.   IID_IPictureDisp: TGUID = (
  757.     D1:$7Bf80981;D2:$BF32;D3:$101A;D4:($8B,$BB,$00,$AA,$00,$30,$0C,$AB));
  758.  
  759. { Standard class IDs }
  760.  
  761.   CLSID_CFontPropPage: TGUID = (
  762.     D1:$2542f180;D2:$3532;D3:$1069;D4:($a2,$cd,$00,$aa,$00,$34,$b5,$0b));
  763.   CLSID_CColorPropPage: TGUID = (
  764.     D1:$ddf5a600;D2:$b9c0;D3:$101a;D4:($af,$1a,$00,$aa,$00,$34,$b5,$0b));
  765.   CLSID_CPicturePropPage: TGUID = (
  766.     D1:$fc7af71d;D2:$fc74;D3:$101a;D4:($84,$ed,$08,$00,$2b,$2e,$c7,$13));
  767.   CLSID_PersistPropset: TGUID = (
  768.     D1:$fb8f0821;D2:$0164;D3:$101b;D4:($84,$ed,$08,$00,$2b,$2e,$c7,$13));
  769.   CLSID_ConvertVBX: TGUID = (
  770.     D1:$fb8f0822;D2:$0164;D3:$101b;D4:($84,$ed,$08,$00,$2b,$2e,$c7,$13));
  771.   CLSID_StdFont: TGUID = (
  772.     D1:$fb8f0823;D2:$0164;D3:$101b;D4:($84,$ed,$08,$00,$2b,$2e,$c7,$13));
  773.   CLSID_StdPicture: TGUID = (
  774.     D1:$fb8f0824;D2:$0164;D3:$101b;D4:($84,$ed,$08,$00,$2b,$2e,$c7,$13));
  775.  
  776. { Property frame APIs }
  777.  
  778. function OleCreatePropertyFrame(hwndOwner: HWnd; x, y: Integer;
  779.   lpszCaption: POleStr; cObjects: Integer; pObjects: Pointer;
  780.   cPages: Integer; pPageCLSIDs: Pointer; lcid: TLCID; dwReserved: Longint;
  781.   pvReserved: Pointer): HResult; stdcall;
  782.  
  783. function OleCreatePropertyFrameIndirect(var Params: TOCPFIParams): HResult; stdcall;
  784.  
  785. { Standard type APIs }
  786.  
  787. function OleTranslateColor(clr: TOleColor; hpal: HPalette;
  788.  var colorref: TColorRef): HResult; stdcall;
  789.  
  790. function OleCreateFontIndirect(var FontDesc: TFontDesc; const iid: TIID;
  791.   var vObject): HResult; stdcall;
  792.  
  793. function OleCreatePictureIndirect(var PictDesc: TPictDesc; const iid: TIID;
  794.   fOwn: BOOL; var vObject): HResult; stdcall;
  795.  
  796. function OleLoadPicture(stream: IStream; lSize: Longint; fRunmode: BOOL;
  797.   const iid: TIID; var vObject): HResult; stdcall;
  798.  
  799. function OleIconToCursor(hinstExe: THandle; hIcon: THandle): HCursor; stdcall;
  800.  
  801. implementation
  802.  
  803. const
  804.   olepro32 = 'olepro32.dll';
  805.  
  806. { Externals from olepro32.dll }
  807.  
  808. function OleCreatePropertyFrame;            external olepro32 name 'OleCreatePropertyFrame';
  809. function OleCreatePropertyFrameIndirect;    external olepro32 name 'OleCreatePropertyFrameIndirect';
  810. function OleTranslateColor;                 external olepro32 name 'OleTranslateColor';
  811. function OleCreateFontIndirect;             external olepro32 name 'OleCreateFontIndirect';
  812. function OleCreatePictureIndirect;          external olepro32 name 'OleCreatePictureIndirect';
  813. function OleLoadPicture;                    external olepro32 name 'OleLoadPicture';
  814. function OleIconToCursor;                   external olepro32 name 'OleIconToCursor';
  815.  
  816. end.
  817.