duilib中如何调用ocx里面的方法

simple simple 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
如题,duilib中用了DSOFramer的ocx控件,已经显示出来了,但不知道如何去调用ocx里面的方法?
看到网上其他是这样子用的

CActiveXUI* pActiveXUI = static_cast<CActiveXUI*>(m_PaintManager.FindControl(_T("ActiveXDemo1")));
if (pActiveXUI)
{
IWebBrowser2* pWebBrowser = NULL;

pActiveXUI->SetDelayCreate(false); // 相当于界面设计器里的DelayCreate属性改为FALSE,在duilib自带的FlashDemo里可以看到此属性为TRUE
pActiveXUI->CreateControl(CLSID_WebBrowser); // 相当于界面设计器里的Clsid属性里填入{8856F961-340A-11D0-A96B-00C04FD705A2},建议用CLSID_WebBrowser,如果想看相应的值,请见<ExDisp.h>
pActiveXUI->GetControl(IID_IWebBrowser2, (void**)&pWebBrowser);

if (pWebBrowser != NULL)
{
//pWebBrowser->Navigate(L"https://code.google.com/p/duilib/",NULL,NULL,NULL,NULL);
pWebBrowser->Navigate(L"http://www.baidu.com/", NULL, NULL, NULL, NULL); // 由于谷歌时不时被墙,所以换成反应快的网站
pWebBrowser->Release();
}
}


我的用法是这样的,

CActiveXUI* pActiveXUI = static_cast<CActiveXUI*>(m_pm.FindControl(_T("ActiveXUI1")));
if( pActiveXUI )
{
CFramercontrol1 dsoFramer;
pActiveXUI->CreateControl(dsoFramer.GetClsid());
}


CFramercontrol1 *pFramer = NULL;
CActiveXUI* pActiveXUI = static_cast<CActiveXUI*>(m_pm.FindControl(_T("ActiveXUI1")));
if( pActiveXUI )
{
CFramercontrol1 dsoFramer;
IDispatch *pDispatch = NULL;
//pActiveXUI->GetControl(MIDL_INTERFACE("00460182-9E5E-11d5-B7C8-B8269041DD57"), (LPVOID*)&pFramer);
//pActiveXUI->GetControl(IID_IOleObject, (LPVOID*)&pFramer);
pActiveXUI->GetControl(IID_IDispatch, (LPVOID*)&pDispatch);
//pActiveXUI->GetControl(IID_IAsyncOperation, (LPVOID*)&pFramer);
//pFramer = reinterpret_cast<CFramercontrol1*>(pDispatch);
}
if (NULL != pFramer)
{
pFramer->put_Menubar(FALSE); // 崩溃
}
...全文

相关推荐

评论 3
收藏 已收藏
分享
返回顶部
simple
ATL 3,248 成员 48,530 内容