【CStackGUI 导读】用 C 写桌面小工具:界面用画布拖,改界面不用重编译
文章目录一、它是什么一句话 一张图二、为什么又来一个 GUI 方案三、先看边界它不适合什么四、装什么五、五分钟从零到第一个 exe六、它提供什么七、五篇正文讲什么建议按顺序看这是系列的第 0 篇导读。读完它你会知道这套东西解决什么问题、适合谁、五分钟怎么跑起来第一个 exe、一、它是什么一句话 一张图界面用画布拖出来存成一个.cgui文件JSON运行时读它业务逻辑写 C只 include 一个头文件最后链成一个独立的 exe。三个概念记住就够概念是什么谁维护.cgui界面文件JSON控件、位置、事件名、初始值画布或手改文本运行时解析.cgui、创建原生控件、派发事件、自绘外观框架runtime\业务 C你的回调读值、写值、干活你main.c最实在的两条好处改界面不用重新编译—— 挪按钮、改文案改完.cgui直接重跑 exe发人就是发一个 exe 旁边那个.cgui不用装运行库、不用装解释器。整体架构一句话用图说更清楚导出 .cguigcc 编译链接改界面只改 .cgui画布 Designer拖控件、存布局界面文件 .cguiJSON控件/位置/事件/初值运行时 Runtime解析 .cgui、建控件、派发事件业务 C 代码main.c读值、写值、干活独立 exe 旁边一个 .cgui二、为什么又来一个 GUI 方案不是说别的不好而是给自己/给同事写个小工具这个场景有它自己的取舍方案写界面交付给同事备注MFC / WTL代码量最大一个 exe ✅改界面要重新编译Qt有 Designer但从拖完到跑要一圈构建要带 dll 或静态链体积大上手成本高Python tkinter最好写要装解释器/依赖 ❌发人最麻烦Electron / 套网页前端那一套很熟体积大100MB串口这类本地能力要绕CStackGUI画布拖一个 exe 一个 json✅见下节边界它也有明显不擅长的它盯的场景很具体一个人、一台 Windows、一个给自己或小团队用的小工具读串口、批量改文件、连设备看数据、写个小配置工具要能一个 exe 发出去。选型取舍一张图看明白要一个 exe 发出去要华丽动效/跨平台要最快写界面要极致原生要写个小工具给自己/小团队用交付形态CStackGUI画布拖 一个 json ✅Qt / Electron体积大、要带运行时Python tkinter发人要装解释器 ❌MFC / WTL代码量大、改界面要重编译三、先看边界它不适合什么买之前先看不提供什么能省掉很多返工外观是 Win32 原生控件打底按钮、开关、勾选、输入框、滑块、进度条、圆环走 GDI 自绘外观层能吃圆角与配色列表框、树、表格、标签页等系统控件不吃自定义外观Win32 固有限制。窗口尺寸固定没有布局引擎绝对坐标、所见即所得拉伸窗口不会重排。也正因为如此很多行为是直给的拖分隔条只改两块、容器变窄子控件不会跟着缩 —— 后面第 4 篇专门讲。画布是单选没有多选、组合、对齐工具条有网格吸附和邻近参考线。菜单是声明式的能读点了哪一项但没有运行时增删菜单项的 API。控件绑定只镜像值 / 文字 / 勾选三类语义不做格式换算不能把 0~100 映射成 0~5、也不会自动加%要格式化还是写回调。网页浏览控件是实验性的走系统 WebBrowser 控件IE 内核。如果你的需求是复杂自适应布局 / 跨平台 / 华丽动效这套东西会让你难受 —— 换方案更省事。四、装什么需要版本什么时候需要MinGW-w64 gcc8实测 16.2编译 exe 时。默认找C:\mingw64\bingcc --version能跑就行Node.js22.12 / 24只在你想改画布本身、重新打包画布时只想用它写工具的话只要一个 gcc。画布是现成的仓库里已打包好designer\release\CStackGUI.exe双击就能用。五、五分钟从零到第一个 exe:: ① 编译在仓库根 build-app.bat lesson01_basics :: ② 跑双击也行 examples\lesson01_basics\lesson01_basics.exe :: ③ 不开窗自检把每个绑定的事件合成调一次专门用来发现事件名写错了 examples\lesson01_basics\lesson01_basics.exe --selftest examples\lesson01_basics\lesson01_basics.cgui③ 会给你一份体检报告长这样结果:控件30个,触发回调10次,未登记0个,事件不支持0个,绑定出错0个 selftest OK最后两个0才是重点没有名字对不上的回调也没有给这个控件绑了它不支持的事件。产物就在示例自己的目录里结构很简单examples\lesson01_basics\ lesson01_basics.exe-双击就能跑界面文件就在旁边不用安装 lesson01_basics.cgui-界面用画布打开改改完不用重新编译 main.c-业务你要读、要改的就是这个文件 lib\-运行时库副本试一下第 1 条好处用画布打开那个.cgui或者直接当文本改把某个控件的text改掉不用编译直接重跑 exe —— 界面就变了。从零到第一个 exe 的完整链路要不要装 MinGW-w64 gccgcc --version 能跑就行仓库根执行build-app.bat lesson01_basics生成产物lesson01_basics.exe .cgui要不要体检--selftest 跑一遍事件名写没写错、绑定对不对看报告未登记 0、不支持 0直接双击 exe 跑起来用画布改 .cgui 的 text不用编译重跑 exe 就变六、它提供什么控件 42 种按钮、图标钮、标签、链接、开关、输入框单行/多行/数值框、富文本、复选框、单选钮、下拉框、列表框、标签页、树、表格、进度条、圆环、滑块、仪表盘、状态灯、评分、分页、徽章、标签片、菜单栏、菜单按钮、工具栏、分组框、容器块、卡片、分割线、分隔条、图片、外形框、时钟、画板、颜色选择、状态栏、终端日志视图、图表、网页浏览……事件 13 种click/dblclick/change/submit/select/release/expand/collapse/tick/check/gotfocus/lostfocus另加窗口级的close。事件是按控件特性分配的标签、进度条、状态栏一个事件都没有只有树有展开/折叠。业务侧不用碰 Windows APIcstackgui.h里带了一套基础能力 —— 读写文件、INI 配置、路径处理、文本编码转换UTF-8 ↔ GBK、剪贴板、用默认程序打开文件/网址、启动外部程序、读写注册表、写日志。串口与网口也在同一层cg_serial_*枚举/打开/收发、cg_net_*TCP 客户端与服务端、UDP 数据报。串口与 TCP 由运行时在读线程里搬进环形缓冲业务在时钟回调里取。能打包交付仓库里有打包脚本画布 预编译运行时库 示例 编译脚本 使用者说明打包前会真编译真跑一遍示例自检。它提供的能力分层从下往上看运行时层框架层cstackgui.h业务层你写main.c 回调读值、写值、干活控件 42 种 事件 13 种基础能力文件/INI/路径/编码/剪贴板/注册表/日志串口 cg_serial_* / 网口 cg_net_*解析 .cgui、建原生控件、派发事件、自绘外观七、五篇正文讲什么建议按顺序看篇主题一屏摆齐的控件01 基础与容器能点的、能显示的、能装东西的按钮、图标钮、标签、链接、开关、徽章、标签片、分组框、容器块、卡片、分割线、状态栏02 输入与选择一个表单要用的全部输入控件输入框单行/多行/数值框、复选、单选、下拉、列表、富文本、日期、月历03 数值与指示]把数字显示出来滑块、进度条、圆环、仪表盘、状态灯、评分、分页含一行 C 都不用写的控件绑定04 数据与日志组织、刷新、看得见标签页、树、表格、终端、图表、分隔条、时钟05 命令与图形菜单、画板、媒体菜单栏、工具栏、菜单按钮、画板、外形框、图片、取色器、网页06 实战记事本一个组装好的真实工具菜单分发、脏标记、状态栏刷新、配置持久化、关闭前拦截学习顺序建议先把 01~05 都编译、运行、各改一处东西跑通每篇 10 分钟然后打开examples\gallery控件陈列室当字典翻最后照着 06 的结构写自己的第一个工具用画布画界面 → 导出 C 骨架 → 填回调。下一篇入门 01基础与容器12 类基础控件 三种容器以及那条最容易搞混的“容器里的坐标是相对的”。五篇正文的学习路径按顺序走01 基础与容器能点的、能显示的、能装东西的02 输入与选择表单要用的全部输入控件03 数值与指示把数字显示出来04 数据与日志组织、刷新、看得见05 命令与图形菜单、画板、媒体06 实战记事本组装一个真实工具自己的第一个工具画布画界面 → 导出 C 骨架 → 填回调

相关新闻

还在为AI率降不下来烦恼?降重降ai网站实测来了:8款降AI率神器实测记录,改完还是你自己写的味道!

还在为AI率降不下来烦恼?降重降ai网站实测来了:8款降AI率神器实测记录,改完还是你自己写的味道!

还在为AI率降不下来烦恼?降重降ai网站实测来了:8款降AI率神器实测记录,改完还是你自己写的味道! 同一个宿舍推荐的网站,为什么到你手里就不管用 应用心理学的学妹在宿舍群里问降重降ai网站哪个能用,四个人…

2026/9/24 18:02:51 阅读更多 →
云桌面哪家好:企业桌面云采购的评价体系

云桌面哪家好:企业桌面云采购的评价体系

在政企数字化、办公国产化、远程协同常态化的大背景下,云桌面已经从早期的辅助办公工具,变成企业终端标准化、数据安全治理的核心基础设施。不同于传统本地电脑,云桌面将计算、存储、数据全部部署在云端,本地终端仅承担显示与输入…

2026/9/24 18:02:51 阅读更多 →
MathWorks 将智能体 AI 引入 Matlab

MathWorks 将智能体 AI 引入 Matlab

MathWorks 正在通过开源工具扩展 Matlab,使 AI 智能体能够通过模型上下文协议 (MCP) 执行和优化工程工作流程。此举将基于智能体的 AI 与确定性计算相结合,为更精确、更可追溯的开发流程奠定了基础。图片来源:Mathworks这一切得益于全新的开源…

2026/9/24 18:02:51 阅读更多 →

最新新闻

VoiceStudio本地语音AI的三大安全边界解析

VoiceStudio本地语音AI的三大安全边界解析

1. 项目概述:为什么“本地语音AI”不是免死金牌最近在好几个技术群里看到有人兴奋地转发“VoiceStudio本地离线语音处理”的截图,配文是“终于不用联网也能做TTS和ASR了!”“隐私安全彻底闭环!”——我点开看了三遍界面&#xff0…

2026/9/24 18:51:28 阅读更多 →
ROS托管服务与原生Terraform选型对比:状态管理、执行环境与权限审计

ROS托管服务与原生Terraform选型对比:状态管理、执行环境与权限审计

1. 从一个真实的选择困境说起 如果你正在管理云上基础设施,大概率绕不开 Terraform。这东西用起来确实顺手,声明式配置、状态管理、多云支持,一套 HCL 走天下。但问题也随之而来:Terraform 是开源工具,状态文件得自己存…

2026/9/24 18:51:28 阅读更多 →
基于OpenCV的车牌识别系统实战:从定位、分割到识别全流程解析

基于OpenCV的车牌识别系统实战:从定位、分割到识别全流程解析

简介:面向毕业设计与智能视觉入门的一款车牌识别系统完整源码包,基于Python与OpenCV实现,并引入HyperLPR提升识别准确率,适合高校学生、开发者用于课程设计、毕设演示或二次开发。资源覆盖多场景识别能力:支持本地图片…

2026/9/24 18:51:28 阅读更多 →
Java二手图书交易平台毕业设计全攻略:从技术选型到答辩避坑

Java二手图书交易平台毕业设计全攻略:从技术选型到答辩避坑

简介:面向计算机相关专业毕业生的二手图书交易平台毕业设计项目,以Java为后端实现,附带完整论文、源码、数据库脚本与说明文档,既能用于课题设计与系统开发,也能支撑论文撰写和答辩准备。资源包共205个文件&#xff0c…

2026/9/24 18:51:28 阅读更多 →
WPF布局控件全解析:从Grid到Canvas的实战指南

WPF布局控件全解析:从Grid到Canvas的实战指南

1. 为什么WPF布局控件值得单独写一篇做WPF开发的人,不管你是刚入门还是写了几年,一定绕不开一个最基础也是最核心的话题——布局控件。我见过太多新手上来就拖一个Canvas,把所有控件用绝对坐标钉死在界面上,结果窗口一拉伸&#x…

2026/9/24 18:51:28 阅读更多 →
YOLOv5剪枝与量化实战:非结构化剪枝+QAT+ONNX INT8三步闭环

YOLOv5剪枝与量化实战:非结构化剪枝+QAT+ONNX INT8三步闭环

简介:本资源是一套面向深度学习工程师与边缘部署开发者的YOLOv5模型轻量化实战方案,聚焦剪枝与量化两大核心压缩技术,解决在移动端、嵌入式设备或低算力GPU上高效部署目标检测模型的痛点。压缩包共208个文件,涵盖59个Python脚本&a…

2026/9/24 18:50:28 阅读更多 →

日新闻

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:19 阅读更多 →
单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:19 阅读更多 →
C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/24 0:00:19 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →