关于EAWebKit的相关信息,是从(http://blog.csdn.net/achellies/article/details/6550050)这个网址了解到的,在此文中讲到利用一个开源的界面库DuiLib和duibrowser做为EAWebit的graphic和backend,由于原文没有讲到如何移植到Wince,本着偶一贯的作风:自己动手丰衣足食,开始移植工作。
移植工作分为三个部分,按先后是DuiLib、EAWebKit、duibrowser,分别说明如下:
一、DuiLib
此工程目前在googlecode上可下载,duibrowser是基于r205进行的。由于本人曾经研究过DuiLib,也做过移植工作,因此轻车熟路很快就移植好了,主要是涉及到Wince没有的系统消息以及GDI函数,另外就是不支持richedit和activex。
二、EAWebKit
这个是工作量最大的,涉及到Wince没有的CRT函数、文件及目录操作函数的增加,另外一个重要的修改就是max和min这两个宏定义的使用:原代码使用的是std::max和std::min,这个在Wince下也是没有的。
三、duibrowser
这个主要是把引用到DuiLib和EAWebKit的头文件,如果在上两步有修改需要同步过来;另外就是增加Wince没有的函数等一些小修改了。
经过这三步移植后,在Wince6的800*480模拟器上运行一直有0xC0000005的异常错误出现,经过分析原来是资源文件main.xml使用的分辨率是800*600,而应用分配的缓存是按屏幕分辨率的,造成webview生成的数据拷贝到应用缓存的时候溢出。修改main.xml或模拟器分辨率让两者保持一致即可。经过调整终于可以运行了。
针对每一步的代码修改生成了一个patch文件(http://download.csdn.net/detail/alien75/6475541),工程文件设置修改可以参考duibrowser中的文档“WinCE Porting Guide.txt”。