0


Go wv(WebView2) GUI框架介绍和使用

说明

wv(webview2) 是Go语言基于LCL和WebView2基础上封装的框架,用于开发Windows GUI软件。

介绍

LCL(Lazarus Component Library) :跨平台原生UI组件库.

wv(WebView2): Microsoft Edge WebView2 控件允许在本机应用中嵌入 web 技术(HTML、CSS 以及 JavaScript)。 WebView2 控件使用 Microsoft Edge 作为绘制引擎,以在本机应用中显示 web 内容

WebView2使用 [WebView4Delphi] 得益于封装(https://github.com/salvadordf/WebView4Delphi) ,并做为LCL中的一个控件使用.

限制

  • 仅支持 Windows
  • Windows 7 需要安装 WebView2 运行时环境
  • Windows 10, 11 不需要安装运行时环境.

依赖

  • Golang >= 1.20
  • Webview2 运行时环境, Windows10/11一搬不需要安装
  • liblcl.dll LCL控件库动态链接库, 绑定库.

环境准备

创建目录并初始化Golang为工作空间

  • mkdir demoworkspace
  • cd demoworkspace
  • go work init

获取&克隆 lcl 和 wv 仓库

  1. go work use lcl
  2. go work use wv

获取 WebView2 和 liblcl.dll

说明

  • 创建任意目录并设置到 ENERGY_HOME 环境变量, 并将两个动态链接库放置到该环境变量目录
  • 或把两个动态链接库放置到Go编译的二进制.exe同一目录

环境总结

  1. 将lcl和wv仓库克隆到本地的Golang工作空间目录
  2. 下载依赖的动态链接库 WebView2 和 liblcl.dll
  3. Golang >= 1.20

创建自己应用

在工作空间目录

  1. demoworkspace

创建自己的Go项目做为GUI应用, 并添加到工作空间

  1. mkdir demo
  2. cd demo
  3. go mod init demo
  4. cd ../go work use demo
示例代码
  1. package main
  2. import("fmt""github.com/energye/lcl/api/libname""github.com/energye/lcl/lcl""github.com/energye/lcl/tools/exec""github.com/energye/lcl/types""github.com/energye/wv/wv""path/filepath")var(
  3. mainForm TMainForm // 主窗口
  4. load wv.IWVLoader // webview2 loader)funcmain(){
  5. wv.Init(nil,nil)
  6. load = wv.GlobalWebView2Loader()
  7. liblcl := libname.LibName
  8. webView2Loader,_:= filepath.Split(liblcl)
  9. webView2Loader = filepath.Join(webView2Loader,"WebView2Loader.dll")
  10. load.SetUserDataFolder(filepath.Join(exec.CurrentDir,"EnergyCache"))
  11. load.SetLoaderDllPath(webView2Loader)if load.StartWebView2(){// 底层库全局异常
  12. lcl.Application.SetOnException(func(sender lcl.IObject, e lcl.IException){
  13. fmt.Println("全局-底层库异常:", e.ToString())})
  14. lcl.Application.Initialize()
  15. lcl.Application.SetMainFormOnTaskBar(true)
  16. lcl.Application.CreateForm(&mainForm)
  17. lcl.Application.Run()}}type TMainForm struct{
  18. lcl.TForm
  19. windowParent wv.IWVWindowParent
  20. browser wv.IWVBrowser
  21. }func(m *TMainForm)FormCreate(sender lcl.IObject){
  22. m.SetCaption("Go wv(Webview2) - demo")// 窗口标题
  23. m.SetBounds(0,0,800,600)// 窗口大小
  24. m.WorkAreaCenter()// 屏幕居中// webview2 window组件
  25. m.windowParent = wv.NewWVWindowParent(m)
  26. m.windowParent.SetParent(m)
  27. m.windowParent.SetAlign(types.AlClient)// webview2 browser组件
  28. m.browser = wv.NewWVBrowser(m)
  29. m.browser.SetDefaultURL("https://www.baidu.com")// 指定一个要加载的地址
  30. m.browser.SetOnAfterCreated(func(sender lcl.IObject){// browser创建完成后刷新 window组件大小
  31. m.windowParent.UpdateSize()})// 设置browser到window parent
  32. m.windowParent.SetBrowser(m.browser)// 窗口显示事件, 创建browser
  33. m.SetOnShow(func(sender lcl.IObject){if load.InitializationError(){}else{if load.Initialized(){
  34. m.browser.CreateBrowser(m.windowParent.Handle(),true)}}})}
Go WebView2效果

在这里插入图片描述

Go WebView2 架构

在这里插入图片描述


本文转载自: https://blog.csdn.net/snxamdf/article/details/141649774
版权归原作者 yanghye 所有, 如有侵权,请联系我们删除。

“Go wv(WebView2) GUI框架介绍和使用”的评论:

还没有评论