MFC下CEF3的消息循環

研究cef3的simple代碼都知道,整個工程是基於win32實現的,在主文件中有一句

CefRunMessageLoop();			//啓動CEF消息循環

這其實就是一個死循環,直到收到退出命令才退出循環,而退出命令是在

CefQuitMessageLoop();			//關閉CEF消息循環

中實現的。

然而MFC自帶消息循環,所以CEF3嵌入到MFC中根本就不需要使用自帶的消息循環,但是如果一定要使用怎麼辦?也就是

settings.multi_threaded_message_loop=false;			//不使用外部的消息循環	

如果直接在mfc代碼中加入CefRunMessageLoop(),會導致程序執行到此函數就卡住,不再往下執行。

解決辦法是在MFC對話框程序中的CXXApp.cpp文件中,重寫PumpMessage函數,在函數體中實現調用CEF3的消息處理函數,代碼如下

auto ret = CWinApp::PumpMessage();
CefDoMessageLoopWork();
return ret;

不過官方不建議這樣做,個人測試了下,這樣做沒有問題,但是很多事件在網頁上是不會相應的,比如在輸入框中輸入數據後,點擊回車是沒有反應的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章