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

2024-01-04 17:52:37 +08:00
 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 ,尺寸小、单文件、无依赖都可以做到。
24934 次点击
所在节点    程序员
123 条回复
KgM4gLtF0shViDH3
2024-01-04 18:15:11 +08:00
aardio ?
Foxkeh
2024-01-04 18:16:50 +08:00
aardio
ShadowPower
2024-01-04 18:18:01 +08:00
如果会 Pascal 语言,也许可以试试 lazarus
对于小工具够用了
morgan1freeman
2024-01-04 18:19:11 +08:00
@Hellert delphi 还没死么,我 07 年上初中的时候,还用 delphi 写过 u 盘,inf 病毒的 查杀工具,当时很多老师的 u 盘插到教室的电脑 然后被病毒 g 了,我就弄了个 upan 查杀工具,当时还有 exe 伪装成 excel 图片,让人误点的,我帮教室里面的电脑 安装好几次的系统
limiter
2024-01-04 18:19:31 +08:00
怎么没看到 javafx
morgan1freeman
2024-01-04 18:24:17 +08:00
https://www.2ccc.com/ 这个网站 居然还没倒闭,牛逼
IsaacYoung
2024-01-04 18:25:22 +08:00
react-windows
Rorysky
2024-01-04 18:26:17 +08:00
选人多的

qt
electron
flutter
feirisu
2024-01-04 18:28:53 +08:00
@churchill ImGui 看起来不错,有待研究一下!
WayneXxx
2024-01-04 18:30:11 +08:00
golang + govcl ,轻量无依赖,打包完压缩后就几 M ,不依赖 Runtime, 开发简单的页面完全够了
yolee599
2024-01-04 18:32:37 +08:00
我提一个:
lvgl
ysc3839
2024-01-04 18:39:44 +08:00
C++ + Xaml Island ,相关依赖库都在系统中,可以做到小体积,不过至少需要 Win10 1809 才能用。
ysc3839
2024-01-04 18:40:51 +08:00
@ysc3839 不过要弄成单文件的话得进行一些 hack ,可以参考 https://github.com/ysc3839/SingleExeXamlIsland
ShadowPower
2024-01-04 18:41:57 +08:00
我刚想到一个另类一些的:
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
2024-01-04 18:46:28 +08:00
既要又要还要更要,本来最符合的 Qt 被你直接 Pass 了
ktqFDx9m2Bvfq3y4
2024-01-04 18:50:26 +08:00
你不跨平台追求独立打包有什么意义吗。
calvinHxx
2024-01-04 18:51:16 +08:00
qt 可以解决你所有的问题 可惜你不熟
ysc3839
2024-01-04 18:52:29 +08:00
@shijingshijing Qt 的体积也比较大。

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

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

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

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

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

© 2021 V2EX