WIN32 - 同步创建 WebView2 不起作用 - 我的集成 Web 浏览器没有白色矩形



简而言之,我向你解释我的问题。在我的应用程序中,我有一个加载浏览器的按钮。当我点击按钮时,它打开并创建了webBrowser(白色矩形)。

但是,当我通过事件WM_SHOWWINDOW打开我的应用程序的窗口(包含不同的组件:按钮,edittext,…)时,当我尝试创建web浏览器时,我看不到我的web浏览器,除非我在注释中放入所有循环"while">

为什么?你能给我一个解决办法吗?那会很友好的。

我创建了一个类EdgeBrowser与构造函数谁接收我的WIN32组件(HWND组件)的句柄。在构造函数中,我这样做:

EdgeBrowser::EdgeBrowser(HWND hwnd)
{
_hwnd = hwnd;
EdgeBrowser::_beginAsyncOperation = true;
this->CreateWebView();

while (EdgeBrowser::_beginAsyncOperation)
{
Sleep(10);
MSG msg;
for (int nmsg = 0; nmsg < 50; ++nmsg)
{
int rc = PeekMessage(&msg, NULL, 0, 0, PM_REMOVE);
if (rc == 0)
{
break;
}
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
}

在我的CreateWebView"具有不同侦听器的函数:

void EdgeBrowser::CreateWebView 
{
// other code
HRESULT hr = CreateCoreWebView2EnvironmentWithOptions(nullptr, userDataDir.c_str(),nullptr,Microsoft::WRL::Callback<ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler>(this,&EdgeBrowser::OnCreateCoreWebView2EnvironmentCompletedHandler).Get()); 
}
HRESULT EdgeBrowser::OnEnvironmentReadyCompletedHandler(HRESULT result, ICoreWebView2Environment* env)
{
HRESULT createBrowserControlsResult = m_uiEnv->CreateCoreWebView2Controller(this->_thisHandler, Microsoft::WRL::Callback<ICoreWebView2CreateCoreWebView2ControllerCompletedHandler>(this,&EdgeBrowser::OnCreateCoreWebView2ControllerCompletedHandler).Get());

HRESULT createBrowserOptionsResult = m_uiEnv->CreateCoreWebView2Controller(this->_thisHandler,Microsoft::WRL::Callback<ICoreWebView2CreateCoreWebView2ControllerCompletedHandler>( this,&EdgeBrowser::OnCreateCoreWebView2ControllerOptionsCompletedHandler).Get());
}
HRESULT EdgeBrowser::OnCreateCoreWebView2ControllerOptionsCompletedHandler(HRESULT result, ICoreWebView2Controller* host)
{
m_optionsController = host;
HRESULT getOptWebViewResult = m_optionsController->get_CoreWebView2(&m_optionsWebView);

//other code
EdgeBrowser::_beginAsyncOperation = false;
return S_OK;
}

WebView2控件需要在创建它的UI线程上运行一个消息循环(有关WebView2线程的更多信息,请参阅本页)。您可以将WebView2APISample示例应用程序视为基于c++ Win32 HWND的示例应用程序。

最新更新