打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
非托管MFC调用 C# Activex控件或用户控件
问题解决了,结贴散分,把我写的代码贴上也,19楼的方法我有空去试一下,多谢大家的积极帮忙
HRESULT CreateAxControl(HWND hWnd,const wchar_t * ProgId,IUnknown ** ppControlUnknown,IUnknown ** ppContainerUnknown)
{
//struct __declspec(uuid("46CE6130-1011-4B4D-9DCF-A32FBB5EA206")) aa;
HRESULT hr;//The return codes used by COM interfaces.
CLSID cls;//uuid如uuid("46CE6130-1011-4B4D-9DCF-A32FBB5EA206")
IOleObject * pObject = NULL;//从IUnknown接口IOleObject接口继承,IOleObject也有这些类型的成员,站点对象负责管理链接或嵌入到文档中的服务器对象,服务器对象所必须实现的接口为IOleObject。
CControlContainer * pContainer = NULL;
hr = CLSIDFromProgID(ProgId,&cls);//根据proid获取CLSID
if (FAILED(hr)) goto exit1;
//参数CLSID:创建的Com对象的类标识符,LPUNKNOWN:指向接口IUnknown的指针,DWORD:运行可执行代码的上下文,REFIID:创建的Com对象的接口标识符,LPVOID:用来接收指向Com对象接口地址的指针变量
hr = CoCreateInstance(cls,NULL,CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER|CLSCTX_LOCAL_SERVER,IID_IOleObject,(void**)&pObject);//创建一个Com对象

//pObject->QueryInterface(uuidof(aa),)
if (FAILED(hr)) goto exit1;

pContainer = new CControlContainer(hWnd);//创建一个控件容器 
hr = pObject->SetClientSite(pContainer);//设置容器位置,设置OLE包容器的站点对象
if (FAILED(hr)) goto exit1;
hr = pObject->DoVerb(OLEIVERB_SHOW,0,pContainer,0,hWnd,0);//请求一个对象执行操作以响应用户的动作,激活嵌入对象,并可通过使用不同的动词让嵌入对象执行相应的动作
if (FAILED(hr)) goto exit1;

pObject->QueryInterface(IID_IUnknown,(void**)ppControlUnknown);//通过此函数来查询某个组件是否支持某个特定的接口,若支持QueryInterface将返回一个指向这些接口的指针,不支持返回值将是一个失败结果
pContainer->QueryInterface(IID_IUnknown,(void**)ppContainerUnknown);
hr = S_OK;
exit1:
if (pObject) pObject->Release();
if (pContainer) pContainer->Release();
return hr;
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Activex感知网页关闭事件
浏览器控件教学:使用流加载和保存HTML内容 - 斌子网站
王升的共享空间: COM/ATL
SDK绘制不规则控件
Duilib
MFC中如何将焦点设置到指定控件上
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服