如何开始Windows开发?

时间:2020-03-06 14:21:18  来源:igfitidea点击:

我多年来一直是基于Unix的Web程序员(Perl和PHP)。就语言本身而言,我还可以胜任C和C ++(以及bash和类似sysadmin之类的工作)。我从来没有遇到过学习新语言的问题(几年前我迷上Java了,虽然我可以编写它,但我只是不喜欢它作为一种语言)。

我没有任何经验,是存在大量用于编写图形Windows应用程序的框架。

对于要使用的基于Windows的应用程序,我有一些想法。我可以使用Perl / TCL / TK来完成此操作,但是出于各种原因,我想要一些"本机"的东西。

通过我目前的公司,我可以使用Microsoft工具(以及用于"开发"的许可证),因此我决定自学一些新知识。

因此,我已经安装了Visual Studio 2008. 我将其启动,喜欢" New Project",然后对我可以启动的各种新项目类型感到完全困惑。

有人可以帮助我不仅了解基本差异,而且对每种类型适合自己的东西有任何建议吗?

假设我要走C ++路线(我知道这种语言,因此不选择Cunless,这实际上更可取...),我可以使用:

  • Windows表格
  • MFC应用
  • Win32的

我也知道远离Microsoft我可以使用wxWidgets。 wxWidgets确实吸引了我(跨平台等),但是与上面的各种Microsoft选项相比,它又如何呢?我也知道Qt存在。

解决方案

对于我来说,是Windows开发的首选语言。我和我们来自同一背景,发现令人耳目一新。我真的很喜欢这种语言,.NET现在是我的首选平台。此外,通过Mono开发很容易与Unix根源保持联系。确实,.NET是一个不错的平台,我们应该对其进行探索。

另外,在谈到Visual Studio时,我们必须记住,不同的项目基本上只指定要包括的库类型(默认情况下)以及生成过程。如果我们希望使用Unix风格的Makefile,则可以使用Mono进行Windows开发。

亚历克斯

Windows窗体是迄今为止最好的。但是,如果我们还不知道自己在做什么,那么使用C ++的Windows窗体只会使我们更加困惑,因为那样的话,我们实际上是在使用C ++ / CLI,它可能也是完全不同的语言。最好去Cif,然后再走那条路。

MFC可能与我们所熟悉的最接近。但是,同样,Windows Forms更好。

我真的会选择Cin而不是C ++。对于Windows客户端应用程序,它是无与伦比的。对于像我们这样的C / C ++花花公子,语法学习曲线会很短。困难将是学习.NET框架,但这就是我们必须以某种方式产生的成本。

选择C#后,只需选择Windows窗体或者WPF应用程序。两者都是客户端应用程序类型。如果选择WPF应用程序,则还必须学习XAML,这是一个相当新的但功能强大的概念。

我尝试在.Net(Windows窗体)中进行一些C ++编程。尽管有可能这当然不是令人愉快的体验,主要是因为我们有一些额外的关键字,而这些关键字与标准C ++不同。但是,如果我们愿意学习更多C ++,则可以选择。

我本人已经开始使用C进行项目,该项目效果很好。如果我们具有C ++的背景知识,这很容易学习。

我永远不会再碰Win32 API。真是太糟糕了!

这取决于我们想要达到的"接近金属"的程度。如果要快速编写仅Windows应用程序,请选择.Net / C#/ Windows Forms / WPF。如果我们决定学习一个不易使用的平台,并且拥有15年的旧代码编写经验,但可以对每个小细节进行无限控制,请选择C ++ / MFC。 。

MFC是C win32 api的包装,外加一些打包了标准功能的额外功能。了解win32 api的工作原理对我们很有帮助。要了解这一点,我建议使用Charles Petzold的" Programming Windows"(被老朋友称为" The Petzold")。我们也可以选择从MFC开始。看一下Visual Studio附带的许多示例和教程,以及诸如codeproject.com之类的网站。

.Net / Cis易于使用。它抽象了许多Win32 api,但是它仍然是包装器,因此对于某些事情,我们需要"降低级别",就像我们以前使用Visual Basic时那样。恕我直言(我可能会因此而被贬低),使用新的Visual Basic,只是它不像一种语言那么丑陋并且是静态类型的。公平地说,它也有一些优点,例如不需要奇怪的VB运行时(但是它确实需要.Net,所以...)

如果我们只想编写图形化Windows应用程序,则只需坚持使用" Windows Form Application"。它将以空白的Windows窗体和包含main()方法的类开始。

"控制台应用程序"项目可能是最简单的项目,它只是使用main()为我们创建一个类文件,仅此而已。

"类库"项目具有用于创建DLL的脚手架和默认的构建设置。

通常,不同类型的项目之间没有任何根本区别。他们所做的只是为我们设置了一些默认包含的内容,并生成了一些脚手架代码(例如,空白的Windows窗体)来入门。

我确实建议学习C#。如果我们知道Java,那么对我们来说不会有太大的飞跃。 Cwas的最初版本实际上设计为与Java完全一样,但是多年来,它们却有所不同。

我认为我的建议与目标有很大关系。如果我们要构建自己的应用程序并希望将其快速推向市场,并且必须是Windows,那么我会按照其他人的建议使用CWF。

如果我们希望提高自己的就业能力,那么我将使用C#/ ASP.Net。这样,我们不仅可以学习C语言,而且还可以了解有关Web开发人员的更多信息,尤其是ASP.Net。我认为我们会发现Windows窗体相对来说要容易得多,并且不值得花很多时间在上面。

因此,如果我们是我,我将构建我的应用程序,以使大多数应用程序与界面分离。我将首先学习如何使该代码在ASP.Net中进行交互,然后在Windows Forms中进行尝试。如果可以的话,我们将学到很多有关.Net框架开发的非常重要的技能。

恕我直言,wxWidgets比任何一个都要好。例如,我知道许多人将其项目从MFC转换为wx。 wxWidgets具有MFC的所有功能(在早期的wx版本中,很多类都是MFC类的克隆),以及更多。它不仅是一个GUI库,而且还具有用于执行各种常见任务的包装程序,例如读取/写入XML文件,Windows注册表,操纵各种图形类型和图像数据,在字符集之间进行转换的类等。 wxCode网站上的许多添加类可以轻松增强应用程序。

wxWidgets也是跨平台的,具有完整的Unicode支持,并且只会进一步发展。如果我们决定尝试一下,请确保尝试使用wxFormBuilder,以便轻松,所见即所得的用户界面生成器(对话框,窗口等)。