我多年来一直是基于Unix的网络程序员(Perl和PHP)。就语言本身而言,我也能胜任C和C ++(以及bash和那种类型的系统管理员)。我从来没有遇到过学习一门新语言的问题(几年前我用Java编写过,虽然我可以写它但我不喜欢它作为一种语言)。
我没有任何经验,是用于编写图形Windows应用程序的大量框架。
我想了解一些基于Windows的应用程序的想法。我能做到这一点是Perl / TCL / TK,但出于各种原因我想要一些更“原生”的东西。
通过我现在的公司,我可以访问Microsoft工具(以及用于“开发”的许可证),所以我决定自学一些新东西。
所以,我安装了Visual Studio 2008。我把它解雇了,匆匆忙忙做了“新项目”,然后对我可以开始的各种类型的新项目感到非常困惑。
有人可以帮助我理解不仅仅是有趣的差异,还有任何关于每种类型适合自己的东西的建议吗?
假设我正在走C ++路线(我知道语言因此没有选择C# - 除非这实际上更合适......)我可以使用:
我也知道远离微软我可以使用wxWidgets。 wxWidgets确实吸引我(跨平台等),但这与上面的各种Microsoft选项相比如何?我也知道Qt存在。
答案 0 :(得分:4)
这取决于你想要的'接近金属'。如果要快速编写仅限Windows的应用程序,请选择.Net / C#/ Windows Forms / WPF。如果您决定学习一个不易使用的平台并且拥有15年遗留代码的病房,请选择C ++ / MFC,但是您可以无限制地控制每一个细节(要明确:MFC也是仅限Windows)
MFC是C win32 api的包装器,还有一些包装标准功能的额外好东西。知道win32 api的工作方式很有帮助。为了解这一点,我推荐Charles Petzold的“Programming Windows”(由老朋友称为“Petzold”)。您也可以选择从MFC开始。查看Visual Studio附带的许多示例和教程以及codeproject.com等网站。
.Net / C#更容易使用。它抽象了很多Win32 api,但它仍然是一个包装器 - 所以对于某些东西你需要'下拉一级',就像你以前用Visual Basic一样。恕我直言(我可能会为此修改),C#是新的Visual Basic,除了它不像语言那么难看并且它是静态类型的。公平地说,它也有一些优点,比如不需要奇怪的VB运行时(但它确实需要.Net,所以...)
答案 1 :(得分:0)
对于我来说,C#是Windows开发的首选语言。我来自与你相同的背景,我发现C#非常令人耳目一新。我真的很喜欢这种语言,.NET现在是我的首选平台。此外,通过Mono开发很容易与您的Unix根源保持联系。实际上,.NET是一个很棒的平台,你应该去探索它。
此外,对于Visual Studio,您必须记住,不同的项目基本上只指定默认情况下包含的库类型和构建过程。如果你想继续使用Unix风格的Makefile,你可以使用Mono进行Windows开发。
亚历
答案 2 :(得分:0)
到目前为止,Windows Forms 是最好的。但是,如果您还不知道自己在做什么,那么使用C ++中的Windows窗体会让您更加困惑,因为那时您真的使用的是C ++ / CLI,这可能也是一种完全不同的语言。如果你想走这条路,最好离开C#。
MFC可能与您熟悉的最接近。但是,Windows Forms再次变得更好。
答案 3 :(得分:0)
我真的会选择C#而不是C ++。对于Windows客户端应用程序,它无法被击败。对于像你这样的C / C ++老兄,语法学习曲线会很短。困难在于学习.NET框架,但这是您必须以某种方式产生的成本。
选择C#后,只需选择Windows窗体或WPF应用程序即可。两者都是客户端应用程序类型。如果你选择WPF应用程序,你还必须学习XAML,这是一个相当新的但功能强大的概念。
答案 4 :(得分:0)
我尝试在.Net(Windows Forms)中进行一些C ++编程。虽然有可能它肯定不是一种愉快的体验,主要是因为你有一些额外的关键词,这与standarad C ++不同。但是如果你愿意学习更多的C ++,那么它就是一个选择。
我自己已经开始使用C#开展一个非常有效的项目。如果你有C ++的背景知识,这很容易学习。
我不会再为世界触摸Win32 API了。这太可怕了!
答案 5 :(得分:0)
如果您只想编写图形窗口应用程序,只需坚持使用“Windows窗体应用程序”。它将以空白窗体和包含main()方法的类开始。
“控制台应用程序”项目可能是最简单的,只需使用main()为它创建一个类文件即可。
“类库”项目具有用于创建DLL的脚手架和默认构建设置。
不同类型的项目之间通常没有任何根本差异。他们所做的就是为你设置一些默认包含并生成一些脚手架代码(例如,一个空白的窗口表单)来帮助你入门。
我建议学习C#。如果你了解Java,那对你来说不会有太大的飞跃。 C#的初始版本实际上与Java完全相同,但多年来它们有点不同。
答案 6 :(得分:0)
我认为我的建议与你的目标有很多关系。如果您正在构建自己的应用程序并希望快速将其推向市场,并且它必须是Windows,那么我会像其他人建议的那样使用C#WF。
如果你想让自己更容易就业,那么我会选择C#/ ASP.Net。通过这种方式,您正在学习C#,但是通常也会学习更多关于Web开发的内容,特别是ASP.Net。我认为你会发现Windows Forms比较容易,相对而言,并不值得花费大量时间。
所以,如果我是你,我会构建我的应用程序,以便它的大部分与界面分离。我将首先学习如何使代码在ASP.Net中进行交互,然后我会在Windows窗体中尝试它。如果你能做到这一点,你将学习.Net框架开发的许多非常重要的技能。
答案 7 :(得分:0)
wxWidgets也是跨平台的,具有完全的Unicode支持,并且只是进一步发展。如果您决定尝试一下,请确保您尝试使用wxFormBuilder轻松实现用户界面的WYSIWYG构建器(对话框,窗口,...)。