#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大小,不需要额外安装任何依赖。

Reply to this note

Please Login to reply.

Discussion

学习了 这么多ui库啊 以前我上班的公司,它Windows端的ui库是自研的,底层的渲染引擎好像用的是skia(或者也是自研的,但和skia很像),上层的各种ui组件都是用c++基于渲染引擎写的,但有些组件(比如文本框这种很难自研的)就用了win32里的api