3,248
社区成员




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); // 崩溃
}
#import "dsoframer.ocx" rename_namespace("dsoframer") // 导出ocx的接口类,即.tlh文件,生成文件在中间目录
// rename_namespace里面的内容为接口类的命名空间
//#include "dsoframer.tlh" // 不能与#import同时使用,否则会出现重定义
CActiveXUI* pActiveXUI = static_cast<CActiveXUI*>(m_pm.FindControl(_T("ActiveXUI1")));
if( pActiveXUI )
{
// 必须注释掉#import语句,然后添加#include "dsoframer.tlh",否则会出现重定义
// 不注释掉#import语句,则编译通过,但创建AcitveX的时候就会崩溃
//pActiveXUI->CreateControl(__uuidof(dsoframer::__DSOFramer));
CLSID _clsid;
CLSIDFromString(CComBSTR("{00460182-9E5E-11d5-B7C8-B8269041DD57}"), &_clsid);
pActiveXUI->CreateControl(_clsid);
}
CActiveXUI* pActiveXUI = static_cast<CActiveXUI*>(m_pm.FindControl(_T("ActiveXUI1")));
if( pActiveXUI )
{
dsoframer::_FramerControl *pObject = NULL;
HRESULT hr = pActiveXUI->GetControl(IID_IDispatch, (LPVOID*)&pObject);
if (NULL != pObject)
{
pObject->put_Menubar(FALSE);
pObject->LoadOriginalFile("C:\\Users\\User\\Desktop\\test.doc", "doc");
}
}