转自gaozan198912的博客
http://blog.csdn.net/gaozan198912/article/details/8572002
源码下载地址 http://download.csdn.net/detail/gaozan198912/5054818
—————————————————————————————————————————————————
辛辛苦苦编译的好的WebKit(较新版本R12****以后的,内涵MiniBrowser工程的)该如何使用呢!?把WebKit工程里的MiniBrowser给剥了,提取里面的BrowserView,然后嵌入到MFC程序中
具体步骤
1)新建MFC工程,不要选择基于对话框的工程,对话框工程会过滤掉WM_KEY****相关的消息,后果就是你在百度的搜索栏里没办法输入英文字母,剪切粘贴等操作没有影响
2)把MiniBrowser工程中的BrowserView.h,BrowserView.cpp直接拷贝到你的工程目录下,添加到你的工程中,这两个文件要做适当的修改,
1、 #include "BrowserWindow.h" 删掉
2、void BrowserView::create(RECT webViewRect, BrowserWindow* parentWindow) 改成 void BrowserView::create(RECT webViewRect, CWnd* parentWindow)
3、 void BrowserView::create(RECT webViewRect, BrowserWindow* parentWindow) 这个函数中的
m_webView = WKViewCreate(webViewRect, context, 0, parentWindow->window()); 改成 m_webView = WKViewCreate(webViewRect, context, 0, parentWindow->m_hWnd);
4、createNewPage 这个函数直接返回0,当有新窗口打开后会触发该函数,不过为修改过的MiniBrowser也没办法创建新窗口
5、 showPage 直接返回空
6、重载APP类的Run函数,修改成
- MSG message;
- while (BOOL result = ::GetMessage(&message, 0, 0, 0))
- {
- ::DispatchMessage(&message);
- }
- return 0;
可以不修改,可以试一下,输入一个字符T会变成两个,向上面那么改快捷键就没了,以后再加上吧
3)文件修改的差不多了,然后就是引入把BrowserView当做单文档View的一个成员变量browserWindow,重载View 的Create函数,在里面创建BrowserView的窗口
- browserWindow.create(CRect(0,0,800,600)/*cliengrect*/, this);
- browserWindow.goToURL(L"http://localhost/test.html");
如果想做的完善点就在View调整大小的时候也调整BrowserView的大小
4)源码基本都OK了,修改工程属性,否则会各种头文件找不到,各种函数找不到,修改方法,哈哈,照着MiniBrowser修改就行了,主要修改C/C++的头文件和连接器的库路径和引入库 ,查看MiniBrowser工程属性的C/C++的命令行,里面的“ /I ”都是要包含的头文件,你懂得。连接器的命令行的“ /LIBPATH ” 添加到连接器-常规-附加库目录中,后面就是一大堆的*.lib ,放在连接器-输入-附加依赖项中 ,整个丢过去,空格隔开就行
5)好了,准备工作基本都差不多了,然后就直接编译行了,如果编译通过了运行就会出问题,缺少动态链接库DLL,安装Safari,在它的安装目录中的Apple Application Support目录下有你要的DLL,把你编译时在Release-Bin目录下的这个三个文件JavaScriptCore.dll,WebKit.dll,WebKit2WebProcess.exe拷贝过去(这里之所以有个exe文件,从WebKit2开始就从架构那层开始支持多进程了,百度有说),其他的缺啥都去Apple Application Support目录下找就行了,如果不出意外一个机遇WebKit内核的浏览器就诞生了,这里用的是Webkit2的API,可能苹果还没完成开发呢,可能会有各种各样的问题吧
注:MiniBrowser是WebKit2 API的实力,还有WinLauncher是WebKit API,建议参考Winlauncher那个例子改
—————————————————————————————————————————————————