一、先获取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语言第一个软件界面相关推荐

  1. 用c语言写出一个榜单程序,C语言依然位居榜单前列,依然值得程序员学习

    原标题:C语言依然位居榜单前列,依然值得程序员学习 关注.星标公众号,不错过精彩内容 如今,市面上编程语言几百种,很多人觉得Python. JAVA这种语言比较火,是不是C语言就不行了呢? 殊不知,C ...

  2. c语言写的黑白棋游戏代码,C语言编写的黑白棋游戏源代码..doc

    C语言编写的黑白棋游戏源代码. C语言编写的黑白棋游戏/*3.3.4 源程序*/ #include "graphics.h" /*图形系统头文件*/ #define LEFT 0x ...

  3. 用c语言写代码_如何避免用动态语言的思维写Go代码

    由于招聘市场上Go工程师的供给量不足,所以在招人的时候我们招了不少愿意转型用Go语言进行开发的PHP工程师,不过虽说换了个语言,在他们代码的时候还是能发现很多PHP的影子.if语句后面非要带括号这种问 ...

  4. ios是c语言写的,ios操作系统是用什么语言写的

    对于苹果手机大家都有所了解,那么对于ios操作的开发语言大家又知道多少呢?小编为大家整理了ios操作系统的开发语言介绍,希望对大家有帮助. ios操作系统的开发语言--Ojective-C Objec ...

  5. python是c语言写的吗-学习python还是c语言?

    并不是大神,只是CS专业的一名小学生.先说结论,强烈推荐先学C. 简单地说,你用半年时间学C语言,学会之后,再去学C++只需三个月,学python这种东西只要一个月,牛逼的人一个星期也能掌握. 可是反 ...

  6. 用c语言写三个人打鱼问题,用c语言解决三天打鱼,两天晒网的问题要用到什么函数...

    #3 我写了个判定某一天在这一年中是第几天的程序,你在mian中稍做修改就可以实现了. #include #include #include struct date {unsigned int yea ...

  7. 用c语言写的电话簿的程序,用C语言散列表实现电话薄

    #用C语言散列表实现电话薄# 标题 #include#include#includetypedef struct node { char num[11],name[15],address[20],ci ...

  8. c语言写报告抽象数据类型,数据结构(C语言版)第一章 抽象数据类型的表示与实现...

    //文件名:Triplet.c //因为C语言没有引用,所以用指针代替引用 //函数的头文件 #include #include //函数结果状态码 #define TRUE 1 #define FA ...

  9. c语言写红绿灯程序,51单片机用C语言实现交通灯(红绿灯)源程序

    51单片机用C语言实现交通灯(红绿灯)源程序 交通灯,红黄绿灯交替亮,怎样实现呢?其实就是根据单片机定时器及倒计时的程序修改. 源程序如下: /* 1.程序目的:使用定时器学习 倒计时 红绿灯原理 主 ...

最新文章

  1. java开发环境的建立过程_Java开发环境的搭建及第一个Java程序的创建
  2. 人工智阅读理解能力首超人类,阿里巴巴刷新世界纪录
  3. Centos7.X通过rpm包安装Docker
  4. 空字符串字符串不为空_当字符串为空但不为空时
  5. python连不上树莓派_树莓派respberry中cmake编译链接python2.7库不成功,求教
  6. vue 监听渲染变化
  7. 你应该知道的 CSS 基础知识
  8. 书讯:《架构实战—软件架构设计的过程》
  9. 财富:鲍尔默时代的微软一直在走下坡路
  10. vs2019怎么调整字体大小_每年至少十万考生涂错答题卡,是时候讨论一下最新版答题卡怎么用了...
  11. 容易忘记的linux命令之rpm
  12. 二叉树的高度_完全二叉树的子节点数
  13. H5视频播放demo
  14. 计算机360u盘删除,怎么关闭360U盘小助手
  15. html5svg在线编辑器,新技术应用——HTML5内联SVG
  16. 对于网站优化该怎么去做外链?
  17. web网页端 微信 登录 内嵌 二维码 方法
  18. 想做自媒体,做什么样的内容呢,怎么做呢--第006期博文
  19. 单片机设计 万年历与计算器(AT89C51)
  20. java 祖先_java – 家谱祖先查找算法

热门文章

  1. 注意力机制Attention Mechanism及论文
  2. MATLAB-如何在全图中设置局部放大图
  3. 全栈溯源重新定义APM
  4. 科技文献检索(一)——课程介绍及信息素养
  5. python b站 排行_用python爬虫追踪知乎/B站大V排行!
  6. 前端知识总结之网络基础
  7. Windows10锁屏 Windows聚焦功能不生效解决方案(Windows 10 1909版)
  8. 五分钟成交2亿美金的元宇宙土地拍卖会
  9. 无法修复此计算机蓝屏,怎么修复蓝屏错误-万兴恢复专家
  10. 如何快速查看将C反汇编的代码