
本例子仅限于最新的Window10或11,以及最新的WebView2运行时,具体适用版本我未cha询。因为涉及到的特性和接口都比较新。
一、创建窗口用于放置WebView2控件
【窗口风格】需设置弹出式窗口,【扩展风格】需设置WS_EX_NOREDIRECTIONBITMAP
WS_EX_NOREDIRECTIONBITMAP:0x00200000L
窗口不会呈现到重定向图面。 这适用于没有可见内容的窗口,或者使用表面以外的机制来提供其视觉对象。
这个样式是实现WebView2控件与Win32窗口透明混合渲染的核心,有了它,Windows系统会自己实现最终透明混合效果(意料之外,理论是需要更加复杂的处理)
应用.初始化 ()
主窗口.置开始位置 ( #开始位置_居中屏幕 )
主窗口.事件_创建完毕 (&窗口事件_创建完毕)
主窗口.事件_尺寸被改变 (&窗口事件_尺寸改变)
主窗口.创建W (, , , 黑月坐标 (800, 600), #窗口风格_弹出式窗口, #WS_EX_NOREDIRECTIONBITMAP )
主窗口句柄 = 主窗口.取窗口句柄 ()
窗口控制.创建 ()
应用.运行 (主窗口)
二、创建WebView2控件并加载界面(HTML)
核心点:
1、–enable-features=msWebView2EnableDraggableRegions 启用一个WebView2实验性功能(与后面窗口拖动相关)
1、使用控制器设置默认背景色 (到整数 ({ 0, 0, 0, 0 })) //这里设置网页的默认背景为透明
2、绑定一个COM类(在WebView2模块中叫主机对象,必须继承它),用于窗口交互控制,当然也可以使用WebView2自带的消息通知接口实现(这个比较简单,就不写了)
子程序名 返回值类型 公开 备 注
窗口事件_创建完毕
参数名 类 型 参考 可空 数组 备 注
hWnd 整数型
变量名 类 型 静态 数组 备 注
opt WebView2环境选项
opt.创建 ()
opt.置附加浏览器参数 (“–enable-features=msWebView2EnableDraggableRegions”)
WV2创建环境自选项 (&子程序_创建环境完毕, , , , opt)
子程序名 返回值类型 公开 备 注
子程序_创建环境完毕 整数型
参数名 类 型 参考 可空 数组 备 注
参数_用户数据 整数型
参数_错误代码 整数型
参数_环境指针 整数型
变量名 类 型 静态 数组 备 注
env4 WebView2环境4
集_环境.置指针 (参数_环境指针)
集_环境.创建控制器 (主窗口.取窗口句柄 (), &子程序_创建控制器完毕)
‘ 如果真 (集_环境.转换为 (#IID_WebView2环境4, env4) = 0)
‘ 输出调试文本 (env4.取浏览器版本 ())
返回 (0)
子程序名 返回值类型 公开 备 注
子程序_创建控制器完毕 整数型
参数名 类 型 参考 可空 数组 备 注
参数_用户数据 整数型
参数_错误代码 整数型
参数_控制器指针 整数型
变量名 类 型 静态 数组 备 注
token 长整数型
seting WebView2设置
控制器2 WebView2控制器2
集_控制器.置指针 (参数_控制器指针)
集_控制器.取视图 (集_视图)
集_控制器.转换为 ( #IID_WebView2控制器2, 控制器2)
控制器2.置默认背景色 (到整数 ({ 0, 0, 0, 0 }))
集_控制器.置边界 (0, 0, 主窗口.宽度 (), 主窗口.高度 ())
集_视图.添加主机对象到脚本 (“window”, 窗口控制)
集_视图.导航 (“file:///” + 取运行目录 () + “/test.html”)
返回 (0)
三、界面(HTML)实现
参考资料:
https://github.com/MicrosoftEdge/WebView2Feedback/issues/2243
核心点:
1、app-region: drag; 这是去年新增的WebView2专用的CSS属性,用于标记一个元素实现对窗口的拖动,必须在创建WebView2环境时带上参数(–enable-features=msWebView2EnableDraggableRegions)来启用这个功能。在易语言里面还需要使用 “WebView2设置9.置是否启用非客户区支持 (真)” 才能完全起作用(不过我在C++测试时没启用也能拖动)。


评论(0)