【聚杰网移动开发】浅析Windows CE下浏览器源码

点击放大
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
进入作者专栏




