0

我是一名初学者 C 和 C# 程序员,主要为 Windows 平台(XP 及以上)开发。我的程序是带有 GUI 的非常小的工具,所以我目前正在使用 WinAPI 来编写它们。我喜欢 WinAPI 让我几乎可以完全控制我的程序,而且我花了很多时间来学习它。我问自己我的 WinAPI 知识是否值得我花时间学习它(我的意思是,如果我以后能够使用这些知识,因为我是一名未来的开发人员),但我找不到答案。

我会使用 .NET 框架,但 Windows XP 用户将被迫安装巨大的 .NET 框架包,只是为了运行一些小工具。我真的不喜欢那样。

那么,在某些领域,WinAPI 至少是不错的选择吗?现在不要花时间学习它并坚持使用 .NET 会更好吗?

4

5 回答 5

2

知识很少是无用的。学习 Windows API 可能并不直接适用于许多工作(例如,与 MFC 或 .NET 知识相关),但了解 API 级别的工作方式很有价值。

如果您正在寻找适销对路的技能,.NET 和 MFC 知识肯定比原始 Windows API 更受欢迎,因此开发这些技能可能会给您带来更广泛的潜在雇主。但是,你也有更多的竞争。

Windows API 知识不太常见,这意味着这些工作的竞争较少,但雇主也较少。

对于第一份编程工作,如果你随波逐流,就更容易被录用——培养最需要的技能。一旦你有工作,你可以利用你的空闲时间做你觉得有趣的事情。

这就是我多年前所做的。我找到了一份为银行编写 COBOL 的工作,晚上在我的个人计算机上编写汇编语言、C 和 Pascal 程序。这需要时间,但最终我找到了一份我真正想做的工作。

于 2011-04-23T20:01:06.723 回答
1

是的。.net 中的所有 windows 东西只是 windows API 的包装器。如果您知道自己在 Win32 和 GDI 中做什么,那么您会发现很多 .net GUI 的东西都非常熟悉且容易上手。更好的是,与许多“纯”.net 程序员不同,您将对引擎盖下实际发生的事情有更好的了解,这有时会非常方便。

不用担心 Windows XP——微软自己现在只支持 SP3,而且或多或少只支持严重的安全漏洞。从那时起已经有两个更新的操作系统,所以支持 Win7 并告诉 XP 用户他们需要一些先决条件来运行您的应用程序是合理的。如果您能找到尚未安装 .net 的 WInXP 用户,那就是。如果这让您感到内疚,一个可以提供帮助的方法是针对 .net 2.0 以节省用户必须升级到 .net 3.5 或 4.0 的时间。

所以,不,我不认为学习 Win32 API 是浪费时间。

但是,另一方面,.net 中还有更多内容,可以节省您编写应用程序的大量时间和精力。在 Win32 中需要您自己完成大量工作或集成不同的 3rd 方库的许多事情可以通过 .net 中的几行代码来实现 - 这可以相当解放。

于 2011-04-23T20:00:04.877 回答
1

首先,让我问你一个问题:

为什么您认为在编写 GUI 应用程序时需要完全控制一切?我不明白这一点?Windows 用户希望 GUI 应用程序看起来像 Windows GUI 应用程序。那时不需要完全控制。

恕我直言,没有理由自己做所有事情,而不是使用现有的框架,如 MFC 或 .Net。如果您愿意,您仍然可以控制,但大多数时候您不必这样做。

最重要的是:与自己做所有事情相比,您可以在很短的时间内完成所有事情。

于 2011-04-23T20:00:56.287 回答
1

使用更高级的 C#/.NET 工具对于减少大多数应用程序的开发时间非常有用,但作为所有高级工具,您会牺牲低级控制。因此,取决于速度是否比精度更重要或更不重要,WinAPI 或 .NET 工具中的控制将更适合您的需求。话虽如此,应该注意的是,.NET 可以通过使用 P/Invoke 功能来调用 WinAPI C 库。您可以使用P/Invoke wiki向您展示调用 WinAPI 调用的正确方法,但请记住,在某些情况下,这可能很麻烦。不管它值多少钱,我都喜欢使用 C# 语言。

于 2011-04-23T20:01:19.347 回答
1

天使,我不同意他上面的说法。.NET 显然是 Windows 开发的当前步骤,如果 Windows XP 机器有足够的内存和性能来运行 XP SP3,它可以很好地安装在 Windows XP 上,而 XP 在这一点上是一个古董。如果您刚刚开始,为什么要从古代开始?

按照程序员的标准,我很古老。这是我专业编程的第 30 年,很久以前主要是从汇编程序开始的。自 DOS 1.1 以来,我一直在 Microsoft 环境中工作,很多年前,即使是基本的 C 环境也完全是垃圾。首先是汇编程序,然后我开始在 Borland 的 Turbo Pascal 中大量工作,然后 Borland 的带有 OWL 的 C++ 成为热门话题,然后微软将 Vistual Studio 变成了一流的并推出了 WFC 和 COM。

我的大部分工作一直是系统开发和通信,所以我什至没有探索过 Windows API 世界的大部分常规“用户应用程序开发”部分,并且一直非常积极地参与核心 Win32 C API。一组很棒的 AP​​I,但 .NET 中的 C# 要容易得多,而且您可以更快地完成更多软件,何必呢?

没有人可以掌握所有的 Microsoft API。这简直是​​压倒性的。还不如从最新的开始!对于程序员来说,我是一个顽固的老家伙,我不会轻易放弃我多年的 C 和 C++ 编程,直接使用 Win32 API,但微软在 .NET 和 C# JIT 编译器方面做得非常出色,以至于我2002年搬过来。

对我来说一件大事是,一个程序员,无论如何都是高级程序员,不能再只是一个“Windows 程序员”,世界已经转向像 .NET 和 Java 这样的面向对象平台。C# 和 Java 几乎是同一个东西,所以为什么不两者都学。这些是未来的平台。C# 代码在 Linux 上的 Mono 上运行,而 Java 几乎可以在任何东西上运行,并且是移动设备开发的领先环境。

你为什么要限制自己在你的编程环境中,以避免不得不在一个已经被供应商淘汰的 10 年历史的操作系统上安装一些库?考虑到如今拥有多核、千兆字节 RAM 和 TB 级存储空间的数以百万计的赫兹处理器要花费数百美元,我认为放弃 XP 中“卡住”的少数保留物不值得你浪费时间。

于 2011-04-23T20:15:49.200 回答