【Go语言写界面】一、使用xcgui完成go语言第一个软件界面

一、先获取xcgui库

go get github.com/twgh/xcgui

二、到网盘下载xcgui.dll

百度云 , 蓝奏云

网盘里有64位的和32位的dll,一般选择64位的,go编译的程序默认也是64位的。

xcgui.dll需要和编译出来的程序放在一起,但每写一个程序都重复放的话就很麻烦了。

所以在开发时我建议把xcgui.dll放到C:\Windows\System32目录下,这样就不需要每次都把dll和程序放在一起了。

三、开始写代码

刚开始你只需要知道3个包,程序包:app、窗口包:window和常量包:xcc

四、最简单的程序代码

package main

import (
	"github.com/twgh/xcgui/app"
	"github.com/twgh/xcgui/window"
	"github.com/twgh/xcgui/xcc"
)

func main() {
	// 炫彩_初始化, 参数填true是启用D2D硬件加速, 效果更好. 但xp系统不支持d2d, 这时候你就得填false来关闭d2d了
	a := app.New(true)
	// 创建普通窗口, 宽300, 高200, 标题是"xcgui window", xcc.Window_Style_Default是使用默认窗口风格
	w := window.New(0, 0, 300, 200, "xcgui window", 0, xcc.Window_Style_Default)
	// 显示窗口
	w.Show(true)
	// 运行消息循环, 程序会被阻塞在这里不退出, 当炫彩窗口数量为0时退出
	a.Run()
	// 退出界面库释放资源
	a.Exit()
}

五、编译程序

go build -ldflags="-s -w -H windowsgui"

参数解释:-H windowsgui会隐藏黑窗口,-s -w去除了符号表和调试信息,这样可以减小软件体积。

六、界面效果

直接编译后大小为1.61M,使用upx64位压缩后大小变为386K
运行效果

七、把dll编译进程序里,运行时写出

先把xcgui.dll放到项目目录里,然后看下面代码:

package main

import (
	_ "embed"
	"os"

	"github.com/twgh/xcgui/app"
	"github.com/twgh/xcgui/window"
	"github.com/twgh/xcgui/xcc"
)

//go:embed xcgui.dll
var dll []byte

func main() {
	os.WriteFile("xcgui.dll", dll, 0666)
	// 炫彩_初始化, 参数填true是启用D2D硬件加速, 效果更好. 但xp系统不支持d2d, 这时候你就得填false来关闭d2d了
	a := app.New(true)
	// 创建普通窗口, 宽300, 高200, 标题是"xcgui window", xcc.Window_Style_Default是使用默认窗口风格
	w := window.New(0, 0, 300, 200, "xcgui window", 0, xcc.Window_Style_Default)
	// 显示窗口
	w.Show(true)
	// 运行消息循环, 程序会被阻塞在这里不退出, 当炫彩窗口数量为0时退出
	a.Run()
	// 退出界面库释放资源
	a.Exit()
}

八、如果不想让用户看到运行目录有个dll文件,可以把dll释放到系统临时目录里

这样用户就感觉不到dll的存在了,和一个二进制文件也没啥太大区别。

package main

import (
	_ "embed"
	"github.com/twgh/xcgui/app"
	"github.com/twgh/xcgui/window"
	"github.com/twgh/xcgui/xc"
	"github.com/twgh/xcgui/xcc"
)

//go:embed XCGUI.dll
var dll []byte

func main() {
	// 把 xcgui.dll 写出到windows临时目录
	err := xc.WriteDll(dll)
	if err != nil {
		panic(err)
	}
	// 炫彩_初始化, 参数填true是启用D2D硬件加速, 效果更好. 但xp系统不支持d2d, 这时候你就得填false来关闭d2d了
	a := app.New(true)
	// 创建普通窗口, 宽300, 高200, 标题是"xcgui window", xcc.Window_Style_Default是使用默认窗口风格
	w := window.New(0, 0, 300, 200, "xcgui window", 0, xcc.Window_Style_Default)
	// 显示窗口
	w.Show(true)
	// 运行消息循环, 程序会被阻塞在这里不退出, 当炫彩窗口数量为0时退出
	a.Run()
	// 退出界面库释放资源
	a.Exit()
}

九、后面将持续更新,从易到难,从简单界面到华丽界面,请多多关注

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值