一个多进程多Tab浏览器的构思及实现

一个偶然的机会,开始了我的浏览器设计,这是设计后的结果。

如果你想找到我,就去菜单中的关于里面找。



说一说这个浏览器的设计吧,主要参照了3款浏览器,一个WTL自带的浏览器,还有两个都是咱们CSDN上的,其中一个是Raptor浏览器,这个借鉴了非常大,还有一个找不到了,非常感谢他们。


整个架构基本上就是ATL+WTL,采用多进程,主进程只是界面进程,子进程是浏览器进程,负责页面导航。

这样设计就有个难度,当你在一个页面中点击一个超链接,这个事件是在子进程中发生的,你要通知到主进程,主进程要先创建一个Tab页,在去创建

一整个子进程,这个新创建的浏览器子进程负责导航到新的页面。


这个浏览器还使用了异步可插协议实现新建标签页,使用双层窗口实现阴影边框,

实际上你看不到阴影边框,因为他的透明度是1,界面上我将谷歌浏览器的一些图片拿来使用。

所以界面上的一些按钮那是我画上去的,这样做你知道处理鼠标消息会有多难吗,我要计算好多的坐标。

实际上界面参照了金山界面库的实现方法,但是我并没有使用金山界面库,原因很简单,对于我来讲我只有Tab控件和Button需要重绘。

不必要为此引入一个界面库。

我的菜单也是自绘的,他实际上就是一个窗口里有一排的Button,这个想法真是酷毙了。

还有就是加速键的处理也有个难度,因为加速键是主进程处理的,所以当焦点在子进程中的时候,需要将鼠标和键盘消息全部转发到主进程。

这样主进程才会感知到减速键。


就说这么多吧,至于这个浏览器怎么样,你可以去这里下载http://download.csdn.net/detail/qq112358hai198771/9713696,自己体验。

猜你喜欢

转载自blog.csdn.net/qq112358hai198771/article/details/53699289