我们在第一篇文章中,初始化WebView2环境变量的时候注册了一个自定义协议
Microsoft::WRL::ComPtr<ICoreWebView2EnvironmentOptions4> options4;
HRESULT oeResult = options.As(&options4);
const WCHAR* allowed_origins[1] = { L"*" };
auto defaultRegistration = Microsoft::WRL::Make<CoreWebView2CustomSchemeRegistration>(L"wv2js");
defaultRegistration->put_HasAuthorityComponent(TRUE);
defaultRegistration->put_TreatAsSecure(TRUE);
defaultRegistration->SetAllowedOrigins(1, allowed_origins);
ICoreWebView2CustomSchemeRegistration* registrations[1] = { defaultRegistration.Get() };
options4->SetCustomSchemeRegistrations(1, static_cast<ICoreWebView2CustomSchemeRegistration**>(registrations));
这样我们就可以用:https://wv2js这个域名加载我们的自定义页面了,
但要想使用这个域名加载本地页面,还需要做个请求映射,如下代码所示:
auto url = convertToWideChar(wvs[index]["url"].GetString());
if (url.starts_with(L"https://wv2js/")) {
auto webview3 = webview.try_query<ICoreWebView2_3>();
webview3->SetVirtualHostNameToFolderMapping(L"wv2js", L"ui", COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND_ALLOW);
}
这段代码我们判断配置文件中WebView的默认地址是不是以https://wv2js/开头,如果是,则把这个请求映射到本地路径./ui下。
这段代码要添加到第二篇文章的pageCtrlCallBack方法中
现在我们在龚成中添加这么个静态页面,如下图所示:
需要注意的是,你应该调整以下,这个文件的属性,让它在编译时复制到输出目录
现在启动程序,你将得到一个自定义页面的窗口:
最终输出目录产出的文件是这样的:
体积1M不到。
如你所见,config.json配置文件也被设置成复制到输出目录了。