工具软件   办公软件   操作系统   网络安全   设计在线   程序开发   教程宝典   软件下载   软件论坛
您的位置:软件 > 开发者网络 > 开发工具 > 移动开发 > 正文
浅析Windows CE下浏览器源码
[文章信息]
作者:付林林
时间:2004-11-20
出处:天极网
责任编辑:方舟
[文章导读]
CE也为此提供了两种IE浏览器的源码。一种IESAMPLE、另一种IESIMPLE。他们的存放路径在%_WINCEROOT%\Public\IE\Oak下
advertisement
热点推荐
· 真没想到VB也可以这样用之指针技术
· 禁止QQ登录的方法
· 给你的XML文件做个数字签名
· ImageReady制作“焰火”小动画
· Java加密和数字签名编程快速入门
[正文]
  有很多网友来信都问关于开发浏览器的问题。能够理解,现在大多数基于CE的产品都具有上网浏览的功能。CE也为此提供了两种IE浏览器的源码。一种IESAMPLE、另一种IESIMPLE。他们的存放路径在%_WINCEROOT%\Public\IE\Oak下。区别在于IESAMPLE就是CE下IE的标准版本的源码,有工具栏、状态栏、地址栏,还有Internet选项、收藏夹等等。和PC Windows的IE几乎一样。而IESIMPLE是mini版本,只有基本的IWebBrowser控件,用户界面上只有全屏显示的网页,默认用快捷键来操作。我早先对IESIMPLE的源码进行了分析,因为我对OLE知之甚少,所以在分析过程中并不能100%的掌握源码,好在这并不影响我对IESIMPLE整体的分析。相信网友看过了这两篇文章(还有一篇关于配置)后如果要基于IESIMPLE的源码开发自己的浏览器就容易多了。之所以选择IESIMPLE,是因为它的源码相对要精简的多,只有实现主要功能的代码,没有收藏夹一类的代码,在此基础上加入我们希望的功能和界面要容易些。再有IESIMPLE和IESAMPLE的主要代码基本相同。下面的图展示了IESIMPLE的基本流程,关于IE的配置将在下一篇文章中讲解。


          点击放大

  IESIMPLE只有两个.h文件和一个.cpp文件。mainwnd.h中声明了类CMainWnd,在类CMainWnd的众多成员变量中,_hWnd保存CMainWnd窗口句柄,_pBrowser保存接口IWebBrowser2的指针,_hWndBrowser保存Browser窗口句柄,_rcWnd保存CMainWnd的窗口尺寸。这几个变量总在代码中出现,故在此提出。下面讲解上面的图中提到的每个函数的功能:

  WinMain函数先到注册表的特定位置中找到创建CMainWnd窗口的线程的栈的大小。如果这个值适当,那么在创建线程的时候就采用这个栈的值。接着注册CMainWnd窗口类,之后调用PeekMessage创建消息队列,接着调用HandleNewWindows2函数,在这个函数执行结束后进入while循环,循环体的内容是等待函数,因为每个线程在结束前都使事件对象ghExitEvent处于有信号状态,所以当所有创建的线程都结束时,主线程也就退出while循环后结束。对于HandleNewWindows2函数,在整个IESIMPLE运行过程中,它至少被执行一次。每当在新窗口中打开网页时,它就被执行一次。HandleNewWindow2函数先创建一个CMainWnd对象,然后递增记录线程数的全局变量,之后创建一个新的线程,线程函数为NewWindow。对于NewWindow函数,它先初始化COM库,然后调用CMainWnd的Create成员函数。之后调用GetMessage函数收集消息并处理。当窗口退出时作结束处理工作。对于Create成员函数,它调用CreateWindowEx函数创建窗口和进度条窗口,之后调用CreateBrowser函数创建浏览器窗口,最后调用HandleCommand( ID_FULLSCREEN, 0 )全屏显示网页内容。对于CreateBrowser函数,它首先调用GetProxyOption函数得到Internet连接代理选项,之后调用CoCreateInstance函数创建WebBrowser对象,之后调用SetClientSit设置WebBrowser的客户端,接着激活IWebBrowser控件,之后保存接口IWebBrowser2的指针和保存参与WebBrowser本地激活的窗口句柄。

  其它的函数HandleCommand处理用户命令,这些命令如向前、向后、主页、刷新、停止等。对命令的执行实际上是调用IWebBrowser2的接口函数。MainWndProc函数是CMainWnd的消息处理函数。OpenURLDlgProc函数是“打开”对话框的消息处理函数。还有两个函数在下一篇文章中讲解。

  付林林:

  2001年计算机专业毕业。从毕业起一直从事软件开发工作。目前从事 Windows CE 下操作系统内核定制和应用程序开发。在实际工作中积累了CE下开发的一些经验。希望和 CE 下开发者交流、探讨,更希望你们能不吝赐教。我的EMail:windowsce@tom.com

  进入作者专栏

  

发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
相关内容焦点新闻
  • Windows CE下的串口通信编程
  • 初识 Embedded Visual C++
  • 民营家电商排队造手机 设备商全面杀入
  • 英特尔澄清杨旭任职传闻 官方没宣布此消息
  • 国资委河北密制联通拆分方案
  • 垃圾邮件害人害企害国 清除垃圾邮件不手软
  • 中兴携手阿尔卡特 全球逐鹿CDMA
  • 用友总裁王文京:誓将ERP变成“大众消费”
  • 香港消费者委员会:数码相机最贵未必最好
  • 外电称中兴正评估西门子手机业务 或能并购
  • Advertisement

    天极无线


    奇妙科幻|美好风光|清风车影|漫画卡通|星座生肖|明星写真|动物世界
    老鼠爱大米
    挥着翅膀的女孩
    女人味
    栀子花开
    白月光
    刚刚好
    江南
    快乐崇拜
    亲爱的你怎么不在我身边
    小薇
    2002年的第一场雪
    有多少爱可以重来
    我的地盘
    七里香
    情人
     
    老鼠爱大米 老板电话
    冲动的惩罚 七里香
    我不是黄蓉 女生撒娇
    盛夏的果实 坚持到底
    孤单北半球 眉飞色舞
    挪威的森林 可爱女人
    最浪漫的事 老板电话

    CSEEK搜索