Windows 下开发小应用 GUI,真的很难选方案

147 天前
 feirisu
今天想做一个简单的小 exe ,需要调用不少原生 Windows API ,想要尺寸小一些,不要有依赖,最好单文件。
其次,UI 不想要 Win32 原生控件。

没想到在 2024 年的今天,这个看似简单的问题是如此难找到一个完美符合要求的。

1.c++ win32 原生,CreateWindow 后面要设 Font 、所有事件自己从处理循环里接。
2.c++ MFC ,想要 UI 好看,Pass 。
3.c#的 WPF ,是很方便,也有很多 UI 库,但是目前不能 AOT (正式版本),独立打包直接去到 100+M ,Pass 。
4.c#的 Form ,UI 不好看,打包也很大,可以 AOT 但是基本是空程序才行,稍微复杂点因为 AOT 隐式启用裁剪,复杂点的代码就会启动不了。
5.c#的 Avalonia ,UI 还行,和 Form 一样 AOT 后有可能启动不了,独立打包 60-80M 也有点大,独立的也还另外带 3 个 DLL ,最难受的是启动很慢,需要 2-3 秒左右的时间才出窗口。
6.QT ,不熟 Pass 。
7.MAUI(WINUI),都不想提。
8.electron ,一堆文件,太重了。
9.flutter ,需要很多原生代码,还是得自己写 c++,两头折腾,尺寸倒是比 c#的那几个小不少。
10.易语言,会,但真的不想用。

微软真的是不干人事,老老实实把 WPF 的 AOT 做好,不知道能造福多少客户端开发。

想来想去,不如控制台得了,除了没 GUI ,尺寸小、单文件、无依赖都可以做到。
13363 次点击
所在节点    程序员
122 条回复
bestkayle
147 天前
aardio ?
Foxkeh
147 天前
aardio
ShadowPower
147 天前
如果会 Pascal 语言,也许可以试试 lazarus
对于小工具够用了
morgan1freeman
147 天前
@Hellert delphi 还没死么,我 07 年上初中的时候,还用 delphi 写过 u 盘,inf 病毒的 查杀工具,当时很多老师的 u 盘插到教室的电脑 然后被病毒 g 了,我就弄了个 upan 查杀工具,当时还有 exe 伪装成 excel 图片,让人误点的,我帮教室里面的电脑 安装好几次的系统
limiter
147 天前
怎么没看到 javafx
morgan1freeman
147 天前
https://www.2ccc.com/ 这个网站 居然还没倒闭,牛逼
IsaacYoung
147 天前
react-windows
Rorysky
147 天前
选人多的

qt
electron
flutter
feirisu
147 天前
@churchill ImGui 看起来不错,有待研究一下!
xiwh
147 天前
golang + govcl ,轻量无依赖,打包完压缩后就几 M ,不依赖 Runtime, 开发简单的页面完全够了
yolee599
147 天前
我提一个:
lvgl
ysc3839
147 天前
C++ + Xaml Island ,相关依赖库都在系统中,可以做到小体积,不过至少需要 Win10 1809 才能用。
ysc3839
147 天前
@ysc3839 不过要弄成单文件的话得进行一些 hack ,可以参考 https://github.com/ysc3839/SingleExeXamlIsland
ShadowPower
147 天前
我刚想到一个另类一些的:
Godot

这玩意真的可以用来写软件,有一些例子:
https://github.com/Orama-Interactive/Pixelorama
https://github.com/RodZill4/material-maker
https://github.com/MewPurPur/GodSVG
https://github.com/mbrlabs/Lorien

用 GDScript 写逻辑,开发效率也相当高。

另外看了帖子回复,我觉得有个需要注意的坑:
大多数用 GPU 绘图的 GUI 库,往往字体渲染都有很多坑。

ImGUI 就有坑,比如不能渲染阿拉伯语……
shijingshijing
147 天前
既要又要还要更要,本来最符合的 Qt 被你直接 Pass 了
Chad0000
147 天前
你不跨平台追求独立打包有什么意义吗。
calvinHxx
147 天前
qt 可以解决你所有的问题 可惜你不熟
ysc3839
147 天前
@shijingshijing Qt 的体积也比较大。

其实要体积小的话,要不然就只能界面难看,要不然操作系统有自带依赖。那可选项就只有传统 Win32 控件、Xaml Island 、Edge WebView2 、.NET Framework 。传统 Win32 控件太难看。.NET WPF 自带的主题也不太好看,用第三方主题又会增加体积,不过看增加的大小,也许可以接受。WebView2 要好看也得用第三方 css 库,不过一般都能做得很小。所以最符合的基本就只有 Xaml Island 了。
XiLingHost
147 天前
试试 egui 或者 slint
GeekGao
147 天前
界面如果不是很复杂,QT 学习起来该是比较舒适的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1005903

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX