导言:
-
本人(海东喵)
学过一堆 第三方
的 桌面GUI库
,但是那些库不是 BUG一堆
,就是 功能有很大的欠缺
。
- 今天我要推荐给大家的这款是以
Windows API
做的 GUI库
,他的 性能
和 功能都很完美
,目前没有太大的缺陷
!
- 我研究了将近
3个月
了,发现功能上很接近 C# winform
了,所以开始写教程分享给想学GUI的同学。
前置安装:
go get github.com/akavel/rsrc
go get github.com/lxn/win
go get github.com/lxn/walk
代码实例:
package main
import (
"syscall"
"github.com/lxn/walk"
"github.com/lxn/win"
)
func main() {
window, _ := walk.NewMainWindow()
// 设置窗体标题
window.SetTitle(`你好世界!`)
// 设置窗体的宽高
window.SetWidth(400)
window.SetHeight(400)
// 设置窗体生成在屏幕的正中间
// 窗体横坐标 = ( 屏幕宽度 - 窗体宽度 ) / 2
// 窗体纵坐标 = ( 屏幕高度 - 窗体高度 ) / 2
window.SetX((int(win.GetSystemMetrics(0)) - window.Width()) / 2)
window.SetY((int(win.GetSystemMetrics(1)) - window.Height()) / 2)
// 设置窗体为显示状态(默认:隐藏状态)
window.Show()
// 运行窗体
window.Run()
}
创建清单文件 main.manifest
文件说明:
-
main.manifest
是 应用程序配置元数据
的 清单文件
(不懂可以绕过,不用去理解也行)
-
main.manifest
保存在 main.go
的 同级目录下
直接复制 “文件内容” 即可,没特殊情况不用修改
文件内容:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.0.0.0" processorArchitecture="*" name="SomeFunkyNameHere" type="win32"/>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"/>
</dependentAssembly>
</dependency>
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2, PerMonitor</dpiAwareness>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">True</dpiAware>
</windowsSettings>
</application>
</assembly>
生成 / 编译:
第一步:将 main.manifest
生成为 main.syso
-
这个步骤只需要运行一次,
调试/编译
只需一直执行
第二步
- 生成的
main.syso
是 可以拿到别的 GUI 项目中使用的
- 除非你想修改
main.manifest
或者 图标文件
才要重新生成一次
-
在当前窗口下
打开 cmd
,运行如下命令:
rsrc -manifest main.manifest -o main.syso
第二步:编译成独立的 exe 文件
- 不管
调试
还是 正式编译
,都必须通过 双击 exe 文件运行
,无法使用 go run main.go
直接运行
- 调试:
go build
go build -ldflags="-H windowsgui -w -s"
运行结果:
网友评论