又看了一天的 Windows UI 相关的文档...

2022-01-30 21:21:43 +08:00
 liuser666

结果还是乱乱乱!!!!!

WPF 和 UWP 傻傻分不清楚,有时候说 UWP 可以用,有时候又说 UWP 不能用, 新的.Net Core 居然不是系统自带。 WinUI3 目前还属于不稳定的状态,windowing 的功能虽然画勾了但是模式依然很固定,api 依然很少。 xaml 技术也不是主流,只能在 Windows 平台用一用。

微软总是什么都想要...绝了绝了绝了,我就想开发个桌面的 app ,太烦了。

7340 次点击
所在节点    Windows
49 条回复
zk8802
2022-01-31 08:12:14 +08:00
PySide6
bankroft
2022-01-31 09:34:40 +08:00
简单一点的可以考虑 flutter
ffire
2022-01-31 09:49:07 +08:00
@bybyte 个人认为这是个误解。开发效率完全取决于对所选平台的熟悉程度。
coolcfan
2022-01-31 10:21:08 +08:00
想试试超级 old school 的可以看下 Lazarus
thtznet
2022-01-31 12:27:59 +08:00
桌面用 Winform\WPF\WinUI 等任何技术, 反正只是一个框,然后框里嵌个 webview2 就可以了,剩下的就是 HTML5 的事情了,一点也不乱。
mcdull619
2022-01-31 13:47:44 +08:00
jsq2627
2022-01-31 14:44:42 +08:00
election / webview2 / sciter
shayuvpn0001
2022-01-31 15:21:35 +08:00
UWP 现在没有任何意义,所谓的跨平台跨来跨去现在只剩下自己的 Windows 和 xbox 之间跨了,除非你想上架 Microsoft Store ,否则 UWP 这种没有前途的东西只是白白浪费时间精力。

开发效率和兼容性综合起来最好的是 Winform ,没有什么花里胡哨的东西,该有的控件都有,多线程和底层支持也很完美,这么多年坑也踩得差不多了,Visual Studio 完美支持,兼容性你选.Net Framework 4.0 连 xp 都能跑,这样很多工控机都能照顾到。

稍微追求一点花里胡哨的就是 WPF ,后面的什么 UWP ,WinUI 根本不用看,一是框架本身后续微软的支持问题,二是论投入产出 Electron/QT 都比这些好,如果你是微软铁粉,当我(曾经的微软铁粉)上面这堆话没说。
uni
2022-01-31 18:32:02 +08:00
嫌 electron 太大,那就试试 tauri 吧
azur
2022-01-31 19:29:22 +08:00
mark ,准备研究下 winui3
orafy
2022-01-31 19:32:03 +08:00
这几个里面任意一个都可以
crayygy
2022-01-31 20:33:29 +08:00
QT 的 QML 感觉挺不错,但是也有一些坑(哪个平台哪个框架没点儿坑呢)
MS 好像有在弄 WinUI3 https://docs.microsoft.com/en-us/windows/apps/winui/winui3/
之前了解过一些,但还没正式 release ,所以目前只能观望,有做 Windows UI 的需求还是 QT or Win32/WPF 吧
crayygy
2022-01-31 20:34:57 +08:00
BTW Flutter 也可以跨平台的,也许可以考虑一下
placeholder
2022-02-01 10:49:13 +08:00
仅 pc 端且仅考虑 win 平台的话且不需要太多高等级的 api 的话,其实可以看看微软的 uwp 文档,相对布局加默认控件加 csharp 一把梭就得了(手动狗头)
zeal7s
2022-02-01 10:59:50 +08:00
考虑一下 React Native Windows ,也是微软维护的
FrankHB
2022-02-01 13:53:18 +08:00
Electron 唯一的缺点显然不只是太大了。一些其它问题最终用户也能感知到。
区别无非是用户够多,坑能相互活埋,不太会有拎不清楚常规开发需求的维护者主动跳出来暴露智商,例如: https://github.com/dart-lang/language/issues/490
事实上,WPF 一样有类似的问题,但实现的优化质量好得多,以至于不少开发者自动忽略了。但是其它多数实现不大有这个余裕。
FrankHB
2022-02-01 14:21:31 +08:00
@shayuvpn0001 WinForms 永远干不翻最大的设计上的坑:依赖 HWND 。
所以一旦遇到控件这个层次上不能解决的问题(比如说,自己实现不能通过组合现有控件完全实现的新控件),问题就很可能陡然恶心起来:很可能用户就得把 Win32 UI 的花里胡哨的屎味咖喱过一遍,还比原生 Win32 破事更多(因为涉及互操作)。
Win32 的屎味咖喱也是为什么传统的搞 Win32 UI 的受不了纷纷跳出来搞新的一套所谓的 DirectUI 。
讲道理,原生的 HWND 其实确实是希望用户按传统意义的方式扩展的。这特别体现在任何一个像样的 Win32 控件都是桌面隐喻的所谓“窗口”( Windows 这个名字也指的是这个)上,而不是现在大多数最终用户理解的窗体和对话框。
但是 Win32 API 用 C 提供,不管对用户使用还是维护者扩展都有天坑(用户看不到 HWND 实现,微软也没可能让用户彻底看到),加上一些底层设计问题(如滥用低效的异步窗口消息、WndProc 的签名扩展性差甚至要用户折腾 thunk )和 Windows API 固有的更新周期导致跨操作系统版本体验碎片化(比如分层子窗口只在 Windows 8 后支持)导致这种方式最终是无药可救的。
在扩展 HWND 无望的情况下,Windowless 是自然选项了。如果把扩展 HWND 实现这样的权利看作是用户(桌面系统开发者)的自由,那么所有健全的 GUI 天生都是所谓的 DirectUI (所以这词虽然是微软开发者发明的,但也挺 low 的),而基于 HWND 封装的方案(包括 MFC 和 WinForms )只是残废版而已。
WinForms 这种咖喱味的屎在常规 Win32 用户的面前解决了旧的 Win32 C API 的一些屎味和随着操作系统版本分发导致的部分表面问题,但没办法解决根本问题(而且 .NET Framework 的分发周期早年一样挺欠揍的)。对原有 Win32 的就是只想搓出来个能看的 GUI 的最传统的用户,API 和工具易用性提升的开发效率已经足够可观,所以才能忍受;但对原本就受不了 HWND 又没法找到现成方案的用户再说,最终需要 hack Win32 的问题也是忍无可忍的。(所以现在还流行的就包括大部分倒腾工控机的,因为这些用户大多对干掉后者的屎味感知不大。)
(题外话,任意不是靠模拟来实现的“原生”GUI 风格的解决方案,不管是什么平台的,一样很可能有这里的残废屎味;至少遇到 Windows 就很可能放纵了;其实还有少数比 Win32 还烂的,比如各种 CAD 之类的私有界面扩展 API ……不过不提也罢。)
WPF 甩掉了 HWND 的包袱,才算是一个相对“完整”的 GUI 解决方案;而且相对 Win32 过渡到 WinForms ,工具的改进使过渡的体验更加平滑,这才是 WPF 的基本盘。至于 MVVM 和 XAML ,其实不像一些用户理解的那么适合传统桌面开发,既是加分项又是减分项(不过最传统的一些用户有些就只是待在 WinForms 觉得够用挺好,也就不会有什么有效反馈了)。当然,光说完成度,WPF 就够打翻 UWP 和现在的 WinUI 的了。
crackhopper
2022-02-01 15:23:14 +08:00
@fy qt 基本是 LGPL 。粗略的说,动态链接即可(我看 FSF 里也声明不限制 inheritence dependency)。不过严格理解 LGPL 协议的话,要提供用户能升级 Qt 的方案,这样就需要暴露一些代码(依赖 Qt 的)。稳妥起见,可以把业务数据层的代码做成动态库再在 Qt 里用;但我个人觉得大部分人不会考虑太多,动态链接就完了,也不会开源。目前来看风险不大。
levelworm
2022-02-02 23:08:19 +08:00
@ffire 同意,qt 和 win32 都还行啊。
levelworm
2022-02-02 23:10:45 +08:00
@FrankHB 啊? dart 的那个人我记得蛮牛逼的呀,哪里说错了吗?求问。

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

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

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

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

© 2021 V2EX