WebView2教程(基于C++)【三】加载本地页面

本文介绍了如何在Windows平台的WebView2环境中注册自定义协议,并通过设置虚拟主机映射将https://wv2js/开头的请求指向本地文件夹。同时,提及了配置文件(config.json)的处理和输出目录的设置。
摘要由CSDN通过智能技术生成

我们在第一篇文章中,初始化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配置文件也被设置成复制到输出目录了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值