get_CoreWebView2(webview.GetAddressOf());
if (!webview)
{
ShowErrorMessage(hWnd, L"Failed to get WebView2 instance.");
return E_FAIL;
}
// Configure WebView settings
ComPtr// Handle WebView2 controller creation
HRESULT OnControllerCreated( //
HWND hWnd, //
HRESULT result, //
ICoreWebView2Controller *controller //
)
{
if (!controller)
{
OutputDebugString(L"Controller is null");
}
if (!controller || FAILED(result))
{
ShowErrorMessage(hWnd, L"Failed to create WebView2 controller.");
return E_FAIL;
}
webviewController = controller;
webviewController->get_CoreWebView2(webview.GetAddressOf());
if (!webview)
{
ShowErrorMessage(hWnd, L"Failed to get WebView2 instance.");
return E_FAIL;
}
// Configure WebView settings
ComPtr<ICoreWebView2Settings> settings;
if (SUCCEEDED(webview->get_Settings(&settings)))
{
settings->put_IsScriptEnabled(TRUE);
settings->put_AreDefaultScriptDialogsEnabled(TRUE);
settings->put_IsWebMessageEnabled(TRUE);
settings->put_AreHostObjectsAllowed(TRUE);
/* Disable context menu */
settings->put_AreDefaultContextMenusEnabled(FALSE);
}
// Configure virtual host path
// if (SUCCEEDED(webview->QueryInterface(IID_PPV_ARGS(&webview3))))
// {
// webview3->SetVirtualHostNameToFolderMapping( //
// L"appassets", //
// ::LocalAssetsPath.c_str(), //
// COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND_DENY_CORS //
// ); //
// }
// Set transparent background
if (SUCCEEDED(
controller->QueryInterface(IID_PPV_ARGS(&webviewController2))))
{
COREWEBVIEW2_COLOR backgroundColor = {0, 0, 0, 0};
webviewController2->put_DefaultBackgroundColor(backgroundColor);
}
// Adjust to window size
RECT bounds;
GetClientRect(hWnd, &bounds);
webviewController->put_Bounds(bounds);
// Navigate to HTML
HRESULT hr = webview->NavigateToString(HTMLString.c_str());
if (FAILED(hr))
{
ShowErrorMessage(hWnd, L"Failed to navigate to string.");
}
// webview->OpenDevToolsWindow();
return S_OK;
}