值得记忆Windows API“语言”吗?

3

我看过一篇教程,说记忆Windows API模板是不值得的。作为程序员,你是否会记忆模板还是只从向导中创建一个?此外,有人知道学习Windows编程更好的网络资源吗?TheForger's还可以,但更像是参考指南而不是学习来源。


winmain()、winproc()、createwindow()以及其他函数和类。我不确定它们的具体名称。 - TimothyTech
你需要使用Windows API而不是.NET,有特定的原因吗? - Jason Miesionczek
我想创建Windows程序。我的两本C++书都指向我理解的Windows API。 - TimothyTech
1
另外,“记住API”是什么意思?通常学习如何使用API以及了解更常用的函数都是有用的。详细记忆每个单独的函数几乎肯定不值得麻烦。有很好的便捷参考资料可以使用。 - David Thornley
记忆编程接口,这样我就可以从头开始创建它,而不是通过向导调用它。优点是更好地理解它,缺点是可能出现打字错误,并且会受到指责。 - TimothyTech
6个回答

7
在使用隐藏了一些内容的工具之前,了解它们是如何工作的总是有益的。长期使用类向导和模板并没有什么害处,但是如果你理解这些向导和模板为你做了什么以及这些东西的作用,你会发现调试问题变得更加容易。无论是Win32、.NET还是其他任何API,这都是正确的。

特别是在编程.NET时,了解它所执行的操作系统以及某些.NET特性(如事件)如何映射到底层系统(例如Windows消息)是非常有帮助的,因为这可以在调试某些奇怪情况(例如在绘制消息中请求项目计数时.NET ListView控件中的可重入性)时提供真正的帮助。

尽管如此,你并不必须知道这些东西,只是有帮助而已。你肯定不需要记住特定方法的签名——文档总是会帮助你的。总的来说,要记住事物的工作方式,而不是如何调用它们。


2
优秀的观点——记住它的工作原理,而不是特定 API 方法的签名。 - Nate

3
对我来说,记住一个API的唯一方法就是经常使用它。大多数API都有太多需要了解的内容,并且它们变化得如此频繁,以至于无法全部记忆。在互联网不普及的旧时代,所有信息都是从杂志和书籍中获取的。现在只需要从示例代码中剪切和粘贴并进行扩展即可。我仍然使用先前项目的骨架代码进行剪切和粘贴。我的建议是要理解API并知道如何快速获取信息。

2

在我看来,记住CreateWindow函数的参数并不是很难。此外,熟悉你所使用的系统的本地API也非常有用。


2

我认为背诵它并不值得。那就要靠帮助文件和互联网了。

如果您想学习没有.NET、MFC或ATL的“裸”Win32编程(理解这些框架建立的基本组块是很好的),那么我建议逐步学习(从WinMainWndProc等基础知识开始),并构建自己的类框架,以减少您每个新项目中编写的样板代码。

把所有东西都放在源代码控制中,随着您对API的了解和对框架的改进,所有项目都可以受益。


我曾认为MFC只是一个创建API的向导,就像Dreamweaver对HTML一样。因此,编写Win32 API被认为是最单调乏味的Windows编程吗? - TimothyTech
MFC(Microsoft Foundation Classes)是一个API——它是一个完整的类和函数框架,用于编写Windows程序。它建立在另一个API上,即Win32 API,后者是用于编写Windows程序的最底层函数集。MFC将这个API中繁琐或重复的部分封装到类中,就像我在我的答案中建议您做的那样。向导(不同于MFC)并不会“创建API”,它会从模板中为您创建一个最小的Windows程序,其中包含WinMain和对API函数(如CreateWindow)的调用。 - anton.burger
更准确地说,MFC是建立在Win32 API之上的C++包装器。它非常接近底层API的语法,因此有效使用MFC需要对Windows API有很好的了解。话虽如此,当我需要构建本机Windows代码时,我永远不会使用原始API,而是总是使用框架:MFC或WTL。 - lornova
明白了,但是它们需要花钱,对吧?因为我的 MSVCE 似乎没有包含它,而 Dev C++ 又有点笨重和简陋。 - TimothyTech

2
现在没有人会或应该记忆Windows API语法,因为我们有Visual Studio中的智能感知。你需要做的是理解这些API背后的模型以及Windows系统的工作方式。
重点关注以下主题: - 窗口的创建和处理,消息队列 - 图形和字体的处理(GDI) - 标准控件(编辑框,按钮...) - 事件和用户输入(鼠标,键盘) - 进程和线程 - 文件处理和其他类型的I/O
最常见的方法是阅读一些经典书籍(如Charles Petzold's,Jeffrey Ritcher)。
顺便说一下,这适用于任何建立在Windows API之上的框架:MFC,ATL,甚至是带有Windows Forms的.NET。

1
无论您使用向导还是不使用,都应该对正在生成的代码有一个基本的了解,以便您可以确切地了解程序的工作方式。所有内容都在在线MSDN参考文档中得到记录,因此,如果您不理解向导的代码中的某些内容,为什么不查一下呢?
就我个人而言,我会坚持使用模板作为起点,因为在使用Windows API时可能会有很多样板代码。但那只是我的想法...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接