#Windows下的GUI开发#
开发Windows GUI应用真是让人头疼,先梳理一下需求:
- 仅支持Windows
- 允许商业用途
- 易于样式化,包括暗模式
- 结果是一个无依赖或最小依赖的单一.exe文件,大小不超过40MB
- 编写GUI部分不应比实际功能花费更多时间
然而目前市面上的常见库体验并不好:
1. WinUI 3:支持现代Windows组件和样式化,但分发时依赖繁多,难以实现单一可执行文件。
2. Win32 / MFC:高可移植性,但样式化困难,需要大量自定义绘制代码。
3. Qt:功能强大,易于样式化,但动态链接依赖大,静态链接需开源或购买商业许可证。
4. wxWidgets:学习曲线平缓,可静态链接成小文件,但样式化受限。
5. hikogui:新兴库,使用Vulkan后台,样式化方便,但编译复杂且稳定性差。
6. Sciter:类似Electron,支持HTML/CSS写GUI,但渲染效果一般,某些元素无法自定义。
7. WinForms / WPF:建议使用其他前端技术并加载C++功能模块,理论上可实现单一可执行文件,但依然有些复杂。
经过多方尝试,发现Dear ImGui最适合简单的应用。虽然设计复杂UI时有些局限,但符合大部分需求。ImGui是即时模式UI,需要使用DirectX进行渲染,但其结果只有500KB大小,不需要额外安装任何依赖。
