Github地址

https://github.com/twgh/xcgui

介绍

  • 本库封装自炫彩界面库,功能丰富(1000多个API接口),简单易用,轻量级,高度DIY自定义,支持一键换肤。
  • 炫彩界面库是由C/C++语言开发:软件运行效率高,不需要第三方库的支持,不依赖MFC,ATL,WINDOWS标准控件等。
  • DirectUI设计思想:在窗口内没有子窗口,界面元素都是逻辑上的区域(无HWND句柄,安全,灵活),所有UI元素都是自主开发(不受系统限制),更加灵活的实现各种程序界面,满足不同用户的需求。
  • 拥有免费的UI设计器:快速开发工具,所见即所得,高度自定义系统(DIY),让UI开发变的更加简单。
  • 支持Direct2D,硬件加速,能更大程度的发挥硬件特性,创建高性能,高质量的2D图形。
  • 有完善的中文官方文档:中文官方文档

获取

go get github.com/twgh/xcgui

可视化UI设计器

使用UI设计器可以快速设计界面,节省大量代码。

设计器使用例子,只有这么多代码:

package mainimport (_ "embed""github.com/twgh/xcgui/app""github.com/twgh/xcgui/window""github.com/twgh/xcgui/xcc"
)//go:embed res/qqmusic.zip
var qqmusic []bytefunc main() {a := app.New(true)// 从内存zip中加载资源文件a.LoadResourceZipMem(qqmusic, "resource.res", "")// 从内存zip中加载布局文件, 创建窗口对象w := window.NewByLayoutZipMem(qqmusic, "main.xml", "", 0, 0)// 调整布局w.AdjustLayout()// 显示窗口w.ShowWindow(xcc.SW_SHOW)a.Run()a.Exit()
}

动态链接库下载

网盘 下载地址
百度网盘 下载
蓝奏云 下载

程序运行时需要把XCGUI.dll放到程序运行目录。

在开发时最好是放到C:\Windows\System32目录,这样就不需要频繁把dll放到不同程序的运行目录了。

简单窗口(纯代码)

package mainimport ("github.com/twgh/xcgui/app""github.com/twgh/xcgui/window""github.com/twgh/xcgui/xcc"
)func main() {// 1.初始化UI库a := app.New(true)// 2.创建窗口w := window.New(0, 0, 430, 300, "", 0, xcc.Window_Style_Simple|xcc.Window_Style_Btn_Close)// 设置窗口边框大小w.SetBorderSize(0, 30, 0, 0)// 设置窗口透明类型w.SetTransparentType(xcc.Window_Transparent_Shadow)// 设置窗口阴影w.SetShadowInfo(8, 254, 10, false, 0)// 3.显示窗口w.ShowWindow(xcc.SW_SHOW)// 4.运行程序a.Run()// 5.释放UI库a.Exit()
}

常量

xcc包里都是常量,像这样使用:xcc.Window_Transparent_Shadow

需要用到xcc包常量的参数注释都是类似下图这样的,复制Window_Transparent_到xcc包里搜索即可看到相关常量注释:

命令介绍

xc包里包含xcgui.dll里所有的API,有一千多个函数,可以直接使用,封装好的类都在其他包里。

在某些情况下,把xc包里的原生函数与封装好的类混合起来使用会更加方便。

炫彩所有的结构体也都在xc包里。

事件

炫彩的全部事件都已经定义好了,都是以Event开头的, 以1结尾的事件是会传进去元素的句柄。

事件回调函数尽量不要使用匿名函数,使用匿名函数意味着您每次都在创建1个新的回调,最终您将会遇到因创建过多回调导致程序崩溃的报错(大概在2000个回调时会遇到),事件回调函数不使用匿名函数即可避免此问题。

一个事件可以注册多个处理函数,执行顺序为先执行最后注册的函数,最后执行第一个注册的函数,当你想拦截当前事件或不想向后传递,只需要将参数*pbHandled=true即可。

封装进度

这些类都是基于xc包里的一千多个函数封装的。

中文名称 包名 类名 是否封装完毕 文档
程序(炫彩全局API) app App 文档
窗口 window Window 文档
框架窗口 window FrameWindow 文档
模态窗口 window ModalWindow 文档
形状对象 widget Shape 文档
圆形形状对象 widget ShapeEllipse 文档
形状对象GIF widget ShapeGif 文档
组框形状对象 widget ShapeGroupBox 文档
直线形状对象 widget ShapeLine 文档
形状对象图片 widget ShapePicture 文档
矩形形状对象 widget ShapeRect 文档
形状对象文本 widget ShapeText 文档
表格 widget Table 文档
按钮 widget Button 文档
下拉组合框 widget ComboBox 文档
编辑框(常规, 富文本, 聊天气泡) widget Edit 文档
代码编辑框 widget Editor 文档
基础元素 widget Element 文档
列表 widget List 文档
列表框 widget ListBox 文档
弹出菜单 widget Menu 文档
进度条 widget ProgressBar 文档
静态文本连接按钮 widget TextLink 文档
布局元素 widget LayoutEle 文档
布局框架 widget LayoutFrame 文档
列表视图 widget ListView 文档
菜单条 widget MenuBar 文档
Pane元素 widget Pane 文档
滚动条 widget ScrollBar 文档
滚动视图 widget ScrollView 文档
滑动条元素 widget SliderBar 文档
标签栏元素 widget TabBar 文档
工具条 widget ToolBar 文档
列表树元素 widget Tree 文档
日期时间 widget DateTime 文档
月历卡片 widget MonthCal 文档
数据适配器-列表视元素 adapter AdapterListView 文档
数据适配器-单列Map-列表头(listHeader) adapter AdapterMap 文档
数据适配器-XList-XListBox adapter AdapterTable 文档
数据适配器-树元素 adapter AdapterTree 文档
背景管理器 bkmanager BkManager 文档
背景对象 bkobj BkObj 文档
字体 font Font 文档
图片操作 imagex Image 文档
SVG矢量图形 svg Svg 文档
列表项模板 tmpl ListItemTemplate 文档
节点 tmpl Node 文档
图形绘制 drawx Draw 文档
动画序列 ani Anima 文档
动画组 ani AnimaGroup 文档
动画项 ani AnimaItem 文档
动画旋转项 ani AnimaRotate 文档
动画缩放项 ani AnimaScale 文档
含有XCGUI所有API和结构体 xc 文档
XCGUI常量 xcc 文档
缓动 ease 文档
资源操作 res 文档
Windows系统api wapi 持续更新 文档
调用wapi封装了对窗口的操作 wnd 持续更新 文档

【Golang】Go语言Windows GUI库XCGUI,DirectUI设计思想,高度自定义界面,支持Direct2D硬件加速相关推荐

  1. C语言windows.h库的常用函数(三)

    SetCursorPos函数 用途 SetCursorPos函数是windows.h库中用来设置指针位置的函数,使用该函数鼠标指针将会直接跳至指定坐标位置 参数 SetCursorPos函数拥有x和y ...

  2. 【C 语言】动态库封装与设计 ( Windows 动态库简介 | Visual Studio 调用动态库 )

    文章目录 一.Windows 动态库简介 二.Visual Studio 调用动态库 一.Windows 动态库简介 在 C:\Windows\System32 目录中 , 存放着 Windows 中 ...

  3. Go语言IUP GUI库的安装笔记

    为什么80%的码农都做不了架构师?>>>    步骤a 前往https://github.com/grd/iup 查看说明,看到Quick installation guide fo ...

  4. C语言windows.h库的常用函数(二)

    GetCursorPos函数 在上一篇中的WindowFromPoint函数的示例代码中就已经用到了GetCursorPos函数,这是一个用于获取鼠标指针位置的函数. #include<stdi ...

  5. C语言windows.h库的常用函数(一)

    1:FindWindow函数 该函数可以通过窗口类名或者窗口标题名来查找特定窗口句柄,返回值是窗口的句柄(在Windows中,句柄是一个系统内部数据结构的引用.例如当你操作一个窗口,或说是一个Delp ...

  6. C语言windows.h库的常用函数(四)

    CopyFile函数 用途 CopyFile函数可以用来复制文件到指定目录. 参数 CopyFile("文件源目录","文件目标目录",TRUE or FALS ...

  7. 热身:go语言windows gui界面开发之walk 改错

    如果其他文章发现服务跑不起来,出现闪退,可以参考本文,请看到最后. 编译和环境问题点我解决 第一步 直接上代码 package mainimport ("syscall"" ...

  8. 教程二:go语言windows gui界面开发之walk 控件学习第一节

    常用控件集合 本章介绍并学习路线中弹窗之前(包含弹窗)的所有控件 一.认识控件 本章将要学习的控件列表如下图所示,逐一讲解使用方法: 二.预备知识 2.1 控件结构体中通用字段 AssignTo :绑 ...

  9. 【C 语言】动态库封装与设计 ( 动态库调用环境搭建 | 创建应用 | 拷贝动态库相关文件到源码路径 | 导入头文件 | 配置动态库引用 | 调用动态库中的函数 )

    文章目录 一.在 Visual Studio 2019 中创建 " 控制台应用 " 程序 二.拷贝 xxx.lib.xxx.dll.xxx.h 到源码路径 三.导入 xxx.h 头 ...

最新文章

  1. android交叉编译libxml2,Openwrt 交叉编译libxml2(示例代码)
  2. Go语言逆向技术:恢复函数名称算法
  3. python爬虫解析数据_Python爬虫入门知识:解析数据篇
  4. for循环中的setTimeout()
  5. 计算机组成原理总结及知识网图
  6. java EasyUI导出当前页和导出模板
  7. 酒店管理系统-可行性研究报告
  8. php用for循环输出九九乘法表,php循环之打印九九乘法表
  9. Java第32课——求数组元素最大值
  10. 【2021软件创新实验室暑假集训】总结篇
  11. lldb连接debugserver报错failed to get reply to handshake packet
  12. 华为路由器时区以及时间配置
  13. 查询2021高考成绩位次,2021年江苏高考位次表及高考个人成绩排名查询
  14. 【小区物业管理系统——开题报告 分享(仅供参考呀)】
  15. 20162316刘诚昊 Java Queue的测试
  16. 查询最后一次消费记录
  17. 联想拯救者刃7000K 2022 评测
  18. 【设计模式】设计模式的七大原则
  19. 给你的AppImage创建桌面快捷方式
  20. android studio多媒体播放器,Android支持全屏、小窗口的视频播放器

热门文章

  1. 小程序开发教程,适合小白哦
  2. 当“国风综艺”遇上“数字金融”,看国有大行解锁营销新范式
  3. Java小程序 个人缴税
  4. 容器部署在物理机还是虚拟机上?
  5. 谨以此文纪念我的大学四年
  6. 请教个问题,我想把数据中名字的重复值删掉,只保留年纪大的怎么整呢?
  7. 一文掌握语义分割PSPNet——证件照制作、抠图(算法原理、Pytorch实现)
  8. E - Help Hanzo(LightOJ 1197)
  9. 【连载】听程序员部落酋长畅谈关于软件的人和事-节选3
  10. CSS基础(二)--盒模型与浮动