WebView2 ResFile 示例 - 从 VB6 资源文件加载 HTML
概述
演示如何将 HTML 内容嵌入 VB6 资源文件 (.RES),运行时通过 NavigateToString 加载到 WebView2 中。适用于单文件分发,不依赖外部 HTML 文件。
项目结构
下载源码 [ 注意:重新到bin目录注册 DLL 文件 ]
代码请到 VBMAN2 项目 demos/webview2/resFile 目录获取。
resFile/
├── Form1.frm # 主窗体,包含资源加载逻辑
├── vbman2_webview2.RES # VB6 资源文件(含嵌入的 INDEX.HTML)
├── vbman2_webview2.vbp # VB6 项目文件(含 ResFile32 引用)
└── vbman2_webview2.vbw # VB6 工作区文件核心代码解析
1. 延迟初始化(Form1.frm)
vb
Dim WithEvents wv As cWebView2Host
Private Sub Form_Load()
Set wv = New cWebView2Host
wv.Initialize Me.hWnd ' 只传一个参数,不立即导航
End Sub只传入窗口句柄,不传入 URL,延迟导航到 wv_Ready 事件中执行。
2. 在 Ready 事件中从资源加载
vb
Private Sub wv_Ready()
wv.NavigateToString VBMAN2.Res(LoadResData("INDEX.HTML", "WWW")).ReturnString()
End Sub3. 标题同步
vb
Private Sub wv_DocumentTitleChanged()
Me.Caption = wv.DocumentTitle
End Sub功能说明
VB6 资源文件嵌入
- HTML 存储在 .RES 文件的 "WWW" 自定义资源类型中
- 资源 ID 为 "INDEX.HTML"
- 编译后嵌入 EXE,无需外部文件
NavigateToString
- 将 HTML 字符串直接加载到 WebView2
- 内容以
about:blank为基础 URL - 不支持相对路径引用外部资源
VBMAN2.Res 辅助函数
LoadResData("INDEX.HTML", "WWW")加载原始字节数据VBMAN2.Res()转换编码.ReturnString()转为字符串
延迟导航模式
- Initialize 不传 URL
- 在 wv_Ready 事件中导航
- 确保 WebView2 就绪后再加载内容
技术要点
LoadResData 是 VB6 内置函数,用于加载自定义资源类型。返回 Byte 数组
VBMAN2.Res().ReturnString() 是 VBMAN2 库提供的辅助方法,处理字节到字符串的编码转换(处理 UTF-8 等)
NavigateToString 的限制:
- 基础 URL 为
about:blank - 不能使用相对路径引用外部 CSS/JS/图片
- 所有资源必须内联(base64 图片、内联 CSS/JS)
- 基础 URL 为
资源文件编辑:使用 VB6 资源编辑器添加自定义资源,资源类型为 "WWW",ID 为 "INDEX.HTML"
应用场景
- 单文件 EXE 分发(所有 HTML/CSS/JS 嵌入资源)
- 关于对话框/帮助页面
- 简单的 HTML 报告显示
- 不依赖外部文件的离线应用
扩展建议
- 对于包含外部资源引用的 HTML,可结合 SetVirtualHostNameToFolderMapping 实现资源映射
- 可以嵌入多份 HTML 资源,根据条件动态切换显示
- 资源中的 HTML 可以通过 JS 与 VB6 交互(postMessage / BindUI)