3,055
社区成员
发帖
与我相关
我的任务
分享
/************************************************************************
* 创建Webbrowser控件
* ppUnkContainer 容器对象
* ppUnkControl webbrowser对象
************************************************************************/
LRESULT CEasyNaviView::CreateEnWebControl(IUnknown** ppUnkContainer, IUnknown** ppUnkControl)
{
ATLASSERT(::IsWindow(m_hWnd));
HRESULT hr;
CComPtr<IUnknown> spUnkContainer; // 保存容器对象
CComPtr<IUnknown> spUnkControl; // 保存webbrowser对象
hr = CMyAxHostWindow::_CreatorClass::CreateInstance(NULL, IID_IUnknown, (void**)&spUnkContainer);
if (SUCCEEDED(hr))
{
CComPtr<IAxWinHostWindow> pAxWindow; // 容器对象实现IAxWinHostWindow,用来取回IAxWinHostWindow
spUnkContainer->QueryInterface(IID_IAxWinHostWindow, (void**)&pAxWindow);
CComBSTR bstr ; // 临时字符串变量
bstr = L"Shell.Explorer" ;
hr = pAxWindow->CreateControlEx( bstr, m_hWnd, NULL, &spUnkControl, IID_NULL, NULL);
}
if (ppUnkContainer != NULL)
{
if (SUCCEEDED(hr))
{
*ppUnkContainer = spUnkContainer.p;
spUnkContainer.p = NULL;
}
else
*ppUnkContainer = NULL;
}
if (ppUnkControl != NULL)
{
if (SUCCEEDED(hr))
{
*ppUnkControl = SUCCEEDED(hr) ? spUnkControl.p : NULL;
spUnkControl.p = NULL;
}
else
*ppUnkControl = NULL;
}
return hr;
}
//void EnNavigate() ;
void EnNavigate(LPCTSTR lpszURL)
{
if (m_spWebBrowser2)
{
CComVariant varURL (lpszURL) ;
CComVariant var ;//(Config.m_bBrowserTrace ? navNoHistory : NULL ) ;
m_spWebBrowser2->Navigate2( &varURL, &var, 0, 0, NULL);
}
}
void CEasyNaviView::EnVisit()
{
CRect rect ;
GetClientRect(&rect) ;
CString strEasyNavi = CMyPro::GetFilePath(_T("html\\navigator\\default.html")) ;
CComPtr<IUnknown> spUnk ;
CComPtr<IUnknown> spContainer ;
// if (CreateControlEx(L"Shell.Explorer", NULL, &spContainer, &spUnk ) == S_OK && spUnk)
if (CEasyNaviView::CreateEnWebControl(&spContainer, &spUnk) == S_OK && spUnk)
{
spUnk->QueryInterface( IID_IWebBrowser2, (void **)&m_spWebBrowser2) ;
}
EnNavigate(strEasyNavi) ;
}