作者:陈兴武<主页>
简介:
这个浏览器是用vc6.0编写的,界面类似IE,但它是一个多文档程序,为了方便在各个窗口之间切换,我特意在工具条上加了一个窗口列表,你可以在此毫不犹豫地快速切换窗口、也可以双击使窗口最大化。工具条采用IE风格,仅加入了最常用按钮。一些菜单功能没有实现,不过你可以用右键菜单中的功能来完成。
示例图象如下:
缺憾:
暂不具备添加、整理收藏夹功能;IE配置功能;不能截获在空窗口(target=_blank)中打开的超连接。如果可以解决这几个问题,记得告诉我啊!
设计过程:
1。框架
用vc6产生一个多文档应用框架,将视用CHtmlView派生,CHtmlView是从CFormView中派生而来的,所以CHtmlView可能是一个form视中放了一个浏览器控件而生成的。
2。地址栏
开始编写时首要解决的问题是:怎样做一个地址栏。最早的想法是用一个对话条,上面放一个静态标签,一个组合框来实现,不过经过实践,你会发现这行不通,因为不能捕获回车键。那么在对话条上放一个缺省按钮,这样当回车被按下时,是不是可以被捕获呢?不幸的是MAINFRAME没有动态数据交换DDX。最后当我看到MSDN中的浏览器例子时,这个问题就被解决了,那就是用CReBar和CComboBoxEx组合框扩展(以前从没见过)。将创建好的组合框加入到rebar中就行了。
3。工具条
工具条的各种特性在我的另一篇文章中已经详细的讲解了,只有自定义工具条这一难题还没解决(VB做的工具条自动可以自定义)。在这里我利用了MSDN例子程序里的冷热工具条的图形列表,在资源里的工具条IDR_MAINFRAME中我 随便画了几个图标(凑够数目就行),然后设置每个按钮的ID和微帮助文本。在工具条创建完毕之后就用冷热图形列表将原来的按钮覆盖掉了。加入标签文本,设置收藏和字体的下拉风格。这样工具条就做好了。
4。窗口列表
窗口列表是为了使得窗口切换方便而加入的。同样它被加入到rebar中。窗口的增加、删除由两个变量控制,一个tab控件和一个视管理对象。这个实现方法在网上可以找到,就是那个在状态条上加几个MDI子窗口的tab的例子,不过我把它放在了rebar上,具体方法可以研究一下我写的源程序。视管理对象主要在视构造、初始更新、析构时做些工作。
5。 收藏夹菜单
完全从msdn例子程序中copy/paste的。这就是代码重用的好处。
6。地址栏的常用地址列表
在IE的地址输入框被拉下时,有许多以前保存的地址,它在注册表中存放,主键是HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\TypedURLs,最多共记24条url1--url24。用一个循环将24个串读出并加入地址框的下拉列表中即可。
有任何问题,可以向我提问。my emil: ch.friday@371.net