通过上一篇文章,已经可以浏览网页了,但有一个问题,就是那最大化对话框后,网页的浏览区域并没有变,如何让浏览区域变化呢?
我参考了两篇文章,一篇是(http://blog.csdn.net/cyloser/article/details/49734559),另一篇是(http://www.heycode.com/a13696.html)。感谢这两篇文章的作者,没有这两篇文章,我估计还在纠结为会么CefSize::Set(…)函数为什么不能改变窗口大小呢!当然如果有人知道如何使用Set()函数,请不吝赐教。
解决方法
我们知道,窗口大小的改变通常会产生WM_SIZE消息。那么首先应该在对话框中添加OnSize函数。此外,要控制浏览器窗口,必须要获得其句柄或指针,如何获得呢?这就是本文主要讲解的内容。
在(一)中搭建CEF用到了cefsimple示例中的五个文件,这五个文件可以实现最基本的功能。为了探究cefsimple如何完成窗口缩放的功能,我尝试在整个cefsimple中搜索WM_SIZE,然而并没有搜到。由于时间问题 ,我没有去分析cefsimple的源码,而是去cefclient项目的去找答案。在cefclient项目,很容易就在cefclient_win.cpp中搜到了,通过代码分析,将主要代码写在下方:
if (!g_handler.get())
break;
CefRefPtr<CefBrowser> browser=g_handler->GetBrowser();
if (browser/*g_handler->GetBrowser()*/)
{
// Retrieve the window handle (parent window with off-screen rendering).
CefWindowHandle hwnd =g_handler->GetBrowser()->GetHost()->GetWindowHandle();
<