VC++ Webbrowser2控件的缩放功能

来源:互联网 发布:ica 负熵最大算法 编辑:程序博客网 时间:2024/05/21 09:33

最近一直忙着做毕业设计,博客好久没有更新啦。。 今晚心情愉悦,就把之前用Webbrowser控件的几个简单功能写一下吧。

关于Webbrowser控件我自己了解就是嵌入在各种客户端软件中的浏览器控件啦,各种编程语言都有带的控件,比较常用,不过微软包装的很好,很难去深入。

下面我介绍一下:如何浏览网页和缩放网页啦。

第一步、当然是在资源视图对话框界面中,在工具箱中右击选择选择项,然后到COM组件中添加Microsoft Web Browser控件。这样工具箱中就有了Webbrowser控件啦。

第二步、在类视图中右击项目名称选择添加类,一个ActiveX控件中的MFC类,然后还是选择Microsoft Web Browser控件,这样就添加的CWebBrowser2类就和Microsoft Web Browser控件对应了。

第三步、这时我们还需要在添加一个和Webbrowser控件相关联的成员变量,以便于我们操作控件,就是在资源视图对话框中选中Webbrowser控件,右击添加变量,勾选空间变量,其他怎么设置应该都懂得。比如变量名字定为m_web。

第四步、m_web.Navigate("www.baidu.com", NULL, NULL, NULL, NULL); //浏览指定网页。

m_web.GoForward();//前进

m_web.m_web;//后退

m_web.Refresh();//刷新

第五步、这里我重点介绍一下Webbrowser控件的缩放方法:

我的用处是在打开网页后自动缩放到指定的比例,这里需要注意必须保证网页加载全部结束后,才能执行缩放命令,否则如果在m_web.Navigate命令后立马执行缩放命令就会出现错误。所以在这里需要给控件添加一个加载完毕事件,待网页加载完毕后在事件中执行缩放命令即可。具体方法是在资源视图对话框中选中Webbrowser控件,右击添加事件处理程序,消息类型选择Document Complete,具体添加代码如下红色字体:

BEGIN_EVENTSINK_MAP(CwebDlg, CDialog)
ON_EVENT(CwebDlg, IDC_EXPLORER1, 259, CwebDlg::DocumentCompleteExplorer1, VTS_DISPATCH VTS_PVARIANT)
END_EVENTSINK_MAP()
void CwebDlg::DocumentCompleteExplorer1(LPDISPATCH pDisp, VARIANT* URL)
{
// TODO: 在此处添加消息处理程序代码
int zoom = 30;
CComVariant varZoom((int)zoom);  // nZoom是要设置的缩放比例
m_web.ExecWB(OLECMDID_OPTICAL_ZOOM, OLECMDEXECOPT_DODEFAULT, &varZoom, NULL); 

}

第六步、这样就大功告成了,大家亦可使用两个按钮,控制缩放变量的值,实现步进放大缩小功能。最后提一下这是VS2008测试环境,VC6中ExecWB中的参数可能需要适当变化,具体我也记不得啦,自己google啦。

原创粉丝点击