请 windows 开发大佬指点下, 我想学习一种微软支持的开发桌面 exe 程序得方式

2023-10-07 10:49:01 +08:00
 iorilu

说实在的, 虽然折腾不少框架, 库啥的

但这么多年却没有正经学过微软的任何语言或框架, 原因就不讨论了

但我现在想做正统的 windows 本地桌面程序开发, 想请 windows 开发经验多的人指点下, 省的走弯路, 省点时间

我虽然没搞过, 但大概也知道, 就算微软支持的东西也很多, 比如 winform ,wpf , 语言也一大堆 我说下我的目的和要求

希望得到具体点的意见 比如用啥语言 , 用啥框架, 怎么搭环境等

定好了直接开干。

6320 次点击
所在节点    程序员
74 条回复
idealhs
2023-10-07 15:49:23 +08:00
@ysc3839 #19
Winform 和 WPF 将在未来一直支持最新的.NET SDK ,将能够使用所有.NET 的新技术。而开源后的全新.NET 的前景以及微软的支持力度是有目共睹的。MFC 则并非如此,MFC 只是 win32 api 的封装,并且 MFC 的开发难度以及效率,功能完全无法与 Winform 和 WPF 相提并论。
MFC 当然可以基于语言的新版本开发,你不应该将新版本语言的好处与新版本.NET 的好处混淆,至少最基本的 GUI 开发方面,处理异步没有比.NET 更好的方式。
WPF 基于 DX9 渲染我不认为有任何问题,没有人会在 WPF 项目中写 3D ,如果你有图形需求你不应该在 GUI 框架中寻找解决方案。
至于维护模式,第一你不要估计,第二微软会维护很久,就像你热爱的 MFC 一样。
webszy
2023-10-07 15:51:19 +08:00
@ye4tar 支持,这个比 wpf 简单多了
gbw1992
2023-10-07 15:51:23 +08:00
开发语言使用 c#
开发环境 visual studio
开发体验 wpf > winfrom
控件框架的话 winfrom 我 n 年前使用过 DevExpress(收费) 体验还行,开发前注意对常用控件进行样式封装
wpf 控件框架 有一个 HandyControl
还有注意 wpf 和 winfrom 不跨平台
如果有跨平台需求用楼上推荐的 AvaloniaUI
ShadowPower
2023-10-07 15:52:55 +08:00
满足这些要求的只能是 WPF+C#了

如果哪天突然想要跨平台了,移植到 AvaloniaUI 也比其他框架方便
ysc3839
2023-10-07 16:03:03 +08:00
@idealhs 我并不热爱 MFC ,请不要给我扣帽子,我讨厌 MFC 。
.NET 的新技术难道不是“新版本语言的好处”吗?
WPF 只支持 D3D9 本身就是问题,即使它使用了新版本的语言,但仍然使用旧的操作系统功能,那就无法获得最佳性能以及最新特性。这和 MFC 类似,MFC 能使用最新的 C++,但仍然只能使用老旧的系统功能。
ysc3839
2023-10-07 16:05:03 +08:00
@idealhs 至于异步问题,个人认为 C++20 的 coroutine 也很好用。我没有详细调查过 C#的异步,不便评价。
StubbornHuang
2023-10-07 16:18:09 +08:00
试下 Duilib ?
albertofwb
2023-10-07 16:20:58 +08:00
@StubbornHuang Duilib 基于 C++ 的

符合你要求的只有 WinForm
Shadowsocks Nutstore 以及一众餐饮 酒店 网吧管理软件都是 winform
manasheep
2023-10-07 16:21:37 +08:00
就 C# WPF 就行,用最新的.Net 版本
dq19871123
2023-10-07 16:21:50 +08:00
目前来看只有 WPF 了
di1012
2023-10-07 16:35:40 +08:00
idealhs
2023-10-07 16:39:23 +08:00
@ysc3839 #25 C++版本再高只影响语法,不影响 MFC 调用的 win32 底层实现。同理 C#版本高也不影响任何实现,但是.NET 的升级会直接影响实现增加功能提升性能。至于 Windows GUI 开发不讨论异步,那么还有什么其他更加值得讨论的呢?
tyzandhr
2023-10-07 16:43:33 +08:00
写 Windows 怎么可能不碰 win32 呢?
ych8398527
2023-10-07 16:48:11 +08:00
WPF 。一周上手 两周精通
YassoWithSpeaker
2023-10-07 17:20:12 +08:00
犹豫不决,java 解决,上 swing ,jfx
ysc3839
2023-10-07 17:50:55 +08:00
@idealhs
“.NET 的升级会直接影响实现增加功能提升性能”
提升性能很正常,C++编译器升级也能提升性能。但增加功能是怎么回事? .NET 升级后 WPF 的功能就自动增多了?
“至于 Windows GUI 开发不讨论异步”
我有说过不讨论吗?我说 C++20 的 coroutine 很好用,但是 C#我没详细调查过,不便评价,这就叫不讨论了?明明我在讨论 C++的异步。
ShadowPower
2023-10-07 18:08:16 +08:00
@tyzandhr 大多数情况下可以只碰.net 上的封装,不至于直接接触 Win32 API
ikas
2023-10-07 20:33:32 +08:00
现在根本不用考虑其他的,直接使用 windows app sdk 即可
--
微软官方现在只有 winui2 与 winui3 在桌面端是持续维护的
winui2 或者说是内置于系统的 xaml ui 框架,微软已经不再推荐 app 开发直接使用(windows 内置的应用,还有系统界面基本都是 winui2)
windows app sdk 是独立于系统的一套 api,可以无缝使用 winrt,win32,winui3
---

当然现在 winui3 配合 c++是速度最快的,而.net 还不支持原生编译,启动比较慢

以下是基于 winui3 的一些 app
https://github.com/Paving-Base/APK-Installer
https://github.com/files-community/Files
https://github.com/Richasy/Bili.Copilot
...
kkwa56188
2023-10-07 20:48:40 +08:00
我想学做一道菜, 虽然中餐有很多菜, 比如这个那个的, 我要说下我的目的和要求:
目标是要正统的中餐, 不为学习
不用预制材料
只用中国传统方法
用材简单, 依赖少, 最好只要按菜谱材料, 非中餐地区也直接可以做
不考虑使用刀叉用餐的问题 (当然我知道勺子也可以吃, 但不清楚是否容易)
希望制作方法能一直流传/流行
Aloento
2023-10-07 20:55:23 +08:00
@kkwa56188 #39 西红柿炒鸡蛋,水煮白菜,请

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

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

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

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

© 2021 V2EX