VC6中使用CHtmlView在对话框控制中显示HTML文件
2008-11-13 19:32:52 来源:WEB开发网在VisualStudio6.0中出现了一个新类CHtmlView,利用这个类,我们可以实现在对话框的控制中显示HTML文件。要想使用CHtmlView类,对它的定义和实现就必须有全面深入的理解。
我们不妨拿CHtmlView和CListView做一个比较,通过比较这两个类,我们会发现一些有趣的差别。首先,MFC中CListView有一个对应的CListCtrl类,而CHtmlView却没有一个CHtmlCtrl类与之对应;其次,CListView的使用依赖于MFC的文档/视结构,而CHtmlView的实现是基于COM的。通过IWebBrowser2接口来实现,而且IWebBrowser2与MFC文档/视图结构之间没有任何关系。为了实现在对话框的控制中显示HTML文件,我们也可以为CHtmlView创建一个对应的类CHtmlCtrl。以下是类CHtmlCtrl程序源代码:
创建一个静态控制(也可以是其他控制),这个控制的ID及大小位置与界面上的控制相同。
BOOLCHtmlCtrl::CreateFromStatic(UINTnID,CWnd*pParent)
{
CStaticwndStatic;
if(!wndStatic.SubclassDlgItem(nID,pParent))
returnFALSE;
//获取静态控制的矩形区域并转换为父窗口的客户区坐标
CRectrc;
wndStatic.GetWindowRect(&rc);
pParent->ScreenToClient(&rc);
wndStatic.DestroyWindow();
//创建HTML控制(CHtmlView)
return;
Create(NULL,//类名
NULL,//标题
(WS_CHILD|WS_VISIBLE),//风格
rc,//矩形区域
pParent,//父窗口
nID,//控制ID
NULL);//框架/文档
}
为了避免主控程序将CHtmlView对象看作是文档/视图框架,需要重载,CView::OnMouseActivate和CView::OnDestroy。此外,当用户在控制中单击时,OnMouseActivate要负责响应(WM_MOUSEACTIVATE)。
更多精彩
赞助商链接