關于Cef瀏覽器跟隨視窗大小改變的問題
在你的CefClient中繼承 "CefLifeSpanHandler" 回呼類,多載 "GetLifeSpanHandler" 并回傳 "this" 詳細代碼如下:
virtual CefRefPtr<CefLifeSpanHandler> GetLifeSpanHandler() OVERRIDE {
return this;
}
然后在你的CefClient.h檔案中添加一個命名空間,他的作用是全域變數訪問,詳細代碼如下:
namespace {
// cef 瀏覽器的句柄
CefWindowHandle CefHwnd = NULL;
}
現在是重頭戲,那就是如何取得Cef 瀏覽器的句柄,多載 "CefLifeSpanHandler" 回呼類的函式 "OnAfterCreated" 他的作用是 "創建新的瀏覽器后呼叫" 引數 "CefRefPtr<CefBrowser> browser"是傳入的瀏覽器物件,詳細代碼如下:
virtual void OnAfterCreated(CefRefPtr<CefBrowser> browser) {
// 獲取句柄
::CefHwnd = browser->GetHost()->GetWindowHandle();
}
Cef瀏覽器跟隨視窗大小改變,在你的WndProc中處理訊息 "WM_SIZE" ,并使用MoveWindow,詳細代碼如下:
if (::CefHwnd != NULL) {
RECT WindowUserClientRect;
GetClientRect(hwnd, &WindowUserClientRect);
// 最后一個引數必須為 'false' 否則移動的時候會閃屏
MoveWindow(::CefHwnd, 0, 0, WindowUserClientRect.right,
WindowUserClientRect.bottom, false);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/264579.html
標籤:其他
