标准接口:IOleObject

在OLE包容器程序中,以站点对象负责管理链接或嵌入到文档中的服务器对象。这就需要在包容器的站点对象和服务器对象中分别实现相应的必要接口,以完成相互的通信。对于任何一个站点对象,其必须提供的接口是IOleClientSite,服务器对象必须实现的接口为IOleObject。

成员函数:
SetClientSite(IOleClientSite *pClientSite);    //设置OLE包容器的站点对象
GetClientSite(IOleClientSite **ppClientSite);  //获取OLE包容器的站点对象
SetHostNames(LPCOLESTR szContainerApp, LPCOLESTR szContainerObj);  //允许嵌入对象能够在其窗口标题上显示包容器程序名
Close(DWORD dwSaveOption);  //终止嵌入对象的激活状态
SetMoniker(DWORD dwWhichMoniker, IMoniker *pmk);
GetMoniker(DWORD dwAssign, DWORD dwWhichMoniker, IMoniker **ppmk);
InitFromData(IDataObject *pDataObject, BOOL fCreation, DWORD dwReserved);
GetClipboardData(DWORD dwReserved, IDataObject **ppDataObject);
DoVerb(LONG iVerb, LPMSG lpmsg, IOleClientSite *pActiveSite, LONG lindex, HWND hwndParent, LPCRECT lprcPosRect);//激活嵌入对象,并可通过使用不同的动词让嵌入对象执行相应的动作
EnumVerbs(IEnumOLEVERB **ppEnumOleVerb);  //装入上下文菜单
Update();
IsUpToDate();
GetUserClassID(CLSID *pClsid);
GetUserType(DWORD dwFormOfType, LPOLESTR *pszUserType);
SetExtent(DWORD dwDrawAspect, SIZEL *psizel);  //设置控件可使用的空间(控件在屏幕上使用的区域范围)
GetExtent(DWORD dwDrawAspect, SIZEL *psizel);  //获取控件可使用的空间
Advise(IAdviseSink *pAdvSink, DWORD *pdwConnection);
Unadvise(DWORD dwConnection);
EnumAdvise(IEnumSTATDATA **ppenumAdvise);
GetMiscStatus(DWORD dwAspect, DWORD *pdwStatus);  //返回OLEMISC状态位
SetColorScheme(LOGPALETTE *pLogpal);

IOleObject接口通常与IDataObject 和IPersistStorage等接口共同使用,虽然该接口提供了21种方法,但只有DoVerb()、SetHostNames()和Close()这三个方法是必须被实现的。调用IOleObject接口提供的方法将能够使包容器程序与嵌入对象进行通信。任何包容器程序都必须调用DoVerb()方法以激活嵌入对象,并可通过使用不同的动词让嵌入对象执行相应的动作。SetHostNames()方法则允许嵌入对象能够在其窗口标题上显示包容器程序名。包容器程序调用Close()方法,可以终止嵌入对象的激活状态

转自:http://shingpha.blog.sohu.com/109400120.html

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐