WS_CHILD, rectClient, this, AFX_IDW_PANE_FIRST))
{
DestroyWindow();
return FALSE;
}
LPUNKNOWN lpUnk = m_wndBrowser.GetControlUnknown();
HRESULT hr = lpUnk->QueryInterface(IID_IWebBrowser2, (void**) &m_pBrowserApp);
if (!SUCCEEDED(hr))
{
m_pBrowserApp = NULL;
m_wndBrowser.DestroyWindow();
DestroyWindow();
return FALSE;
}
return TRUE;
}
三、一个示例程序
本示例MyBrowser具体演示以上讨论的技术,它显示一个包含在MyBrowser.exe中的HTML页面,并通过IDocHostUIHandler接口关闭控件的上下文菜单和快捷键,运行界面如下图1:
【图1】
程序在Visual C++ 6.0企业版中调试通过,以下列出具体步骤:
创建MFC EXE工程MyBrowser,选项依次为:单文档界面(步骤1)、不需要数据库支持(步骤2)需要ActiveX控件支持(步骤3)、不需要复合文档支持(步骤3)、步骤4采用缺省值、步骤5采用缺省值、将视图基类改为CHtmlView(步骤6);
加入HTML文件及相关资源(如HTML文件“DEFAULT.HTM”);
加入类CCustomWebBrowserSite和CCustomOccManager,文件为CustomWebBrowserSite.h和CustomWebBrowser.cpp;
修改MyBrowser.cpp文件,在消息映射声明之前加入:
#include < ..srcoccimpl.h >
#include "CustomWebBrowserSite.h"
修改CMyBrowserApp::InitInstance(),用清单6替换AfxEnableControlContainer();
用类向导创建CHtmlView的派生类CHtmlViewEx,覆盖Create()和LoadFromResource(),文件为HtmlViewEx.h和HtmlViewEx.cpp;
修改CMyBrowserView声明,在类声明之前加入#include "HtmlViewEx.h",使CMyBrowserView从CHtmlViewEx继承;
修改CMyBrowserView:: OnInitialUpdate(),在这里运行初始界面,如:
CHtmlView::LoadFromResource(_T("DEFAULT.HTM"))。
关键词:在MFC应用中深入定制WebBrowser控件(转)