【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 mainimport ("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 mainimport (_ "embed""os""github.com/twgh/xcgui/app""github.com/twgh/xcgui/window""github.com/twgh/xcgui/xcc"
)//go:embed xcgui.dll
var dll []bytefunc 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 mainimport (_ "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 []bytefunc 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()
}
九、后面将持续更新,从易到难,从简单界面到华丽界面,请多多关注
【Go语言写界面】一、使用xcgui完成go语言第一个软件界面相关推荐
- 用c语言写出一个榜单程序,C语言依然位居榜单前列,依然值得程序员学习
原标题:C语言依然位居榜单前列,依然值得程序员学习 关注.星标公众号,不错过精彩内容 如今,市面上编程语言几百种,很多人觉得Python. JAVA这种语言比较火,是不是C语言就不行了呢? 殊不知,C ...
- c语言写的黑白棋游戏代码,C语言编写的黑白棋游戏源代码..doc
C语言编写的黑白棋游戏源代码. C语言编写的黑白棋游戏/*3.3.4 源程序*/ #include "graphics.h" /*图形系统头文件*/ #define LEFT 0x ...
- 用c语言写代码_如何避免用动态语言的思维写Go代码
由于招聘市场上Go工程师的供给量不足,所以在招人的时候我们招了不少愿意转型用Go语言进行开发的PHP工程师,不过虽说换了个语言,在他们代码的时候还是能发现很多PHP的影子.if语句后面非要带括号这种问 ...
- ios是c语言写的,ios操作系统是用什么语言写的
对于苹果手机大家都有所了解,那么对于ios操作的开发语言大家又知道多少呢?小编为大家整理了ios操作系统的开发语言介绍,希望对大家有帮助. ios操作系统的开发语言--Ojective-C Objec ...
- python是c语言写的吗-学习python还是c语言?
并不是大神,只是CS专业的一名小学生.先说结论,强烈推荐先学C. 简单地说,你用半年时间学C语言,学会之后,再去学C++只需三个月,学python这种东西只要一个月,牛逼的人一个星期也能掌握. 可是反 ...
- 用c语言写三个人打鱼问题,用c语言解决三天打鱼,两天晒网的问题要用到什么函数...
#3 我写了个判定某一天在这一年中是第几天的程序,你在mian中稍做修改就可以实现了. #include #include #include struct date {unsigned int yea ...
- 用c语言写的电话簿的程序,用C语言散列表实现电话薄
#用C语言散列表实现电话薄# 标题 #include#include#includetypedef struct node { char num[11],name[15],address[20],ci ...
- c语言写报告抽象数据类型,数据结构(C语言版)第一章 抽象数据类型的表示与实现...
//文件名:Triplet.c //因为C语言没有引用,所以用指针代替引用 //函数的头文件 #include #include //函数结果状态码 #define TRUE 1 #define FA ...
- c语言写红绿灯程序,51单片机用C语言实现交通灯(红绿灯)源程序
51单片机用C语言实现交通灯(红绿灯)源程序 交通灯,红黄绿灯交替亮,怎样实现呢?其实就是根据单片机定时器及倒计时的程序修改. 源程序如下: /* 1.程序目的:使用定时器学习 倒计时 红绿灯原理 主 ...
最新文章
- java开发环境的建立过程_Java开发环境的搭建及第一个Java程序的创建
- 人工智阅读理解能力首超人类,阿里巴巴刷新世界纪录
- Centos7.X通过rpm包安装Docker
- 空字符串字符串不为空_当字符串为空但不为空时
- python连不上树莓派_树莓派respberry中cmake编译链接python2.7库不成功,求教
- vue 监听渲染变化
- 你应该知道的 CSS 基础知识
- 书讯:《架构实战—软件架构设计的过程》
- 财富:鲍尔默时代的微软一直在走下坡路
- vs2019怎么调整字体大小_每年至少十万考生涂错答题卡,是时候讨论一下最新版答题卡怎么用了...
- 容易忘记的linux命令之rpm
- 二叉树的高度_完全二叉树的子节点数
- H5视频播放demo
- 计算机360u盘删除,怎么关闭360U盘小助手
- html5svg在线编辑器,新技术应用——HTML5内联SVG
- 对于网站优化该怎么去做外链?
- web网页端 微信 登录 内嵌 二维码 方法
- 想做自媒体,做什么样的内容呢,怎么做呢--第006期博文
- 单片机设计 万年历与计算器(AT89C51)
- java 祖先_java – 家谱祖先查找算法