Win32 API的演变


11

Windows 32 API是否随着时间的推移发生了很大变化?1998年查尔斯·佩佐尔德(Charles Petzold)的书“ Programming Windows,第5版”是否仍包含相关信息,或者其中大部分已过时/过时?

Windows 32 API的最新新增功能(如果有)有哪些突出示例?

Answers:


4

Windows Vista中新的线程池API进行了重大改进,并有助于编写良好的多线程程序,这是WinAPI如何发展的简单示例。但是,保持兼容性的需求一直是使Windows API基础保持一致的驱动因素,并导致了一些不理想的事情,例如诸如CreateWindowEx之类的Ex函数的优势。仍然有一些功能可与64位Windows兼容,以与16位程序兼容。

如果您想编写执行1998年常见功能的基于WinAPI的程序,那本书仍然会有用,因为该API不太可能更改。当然,原始语言的最佳实践很可能领先于同盟,尤其是如果这本书是为C或C ++编写的,因为1998年以来的一本书几乎可以肯定是针对标准C ++编写的。

另外,正确的参考是Windows API,而不是Windows 32 API,因为相同的API同时控制Windows 32和Windows 64。


3

我发现对Windows编程仍然有用。由于Microsoft强调向后兼容性,因此所有核心内容(窗口句柄,消息,GDI等)似乎仍然是相关的,并且在Petzold中涵盖得很好。(如果发生任何太大的改变,将会破坏太多的现有Windows程序,而大量现有的Windows程序则是Windows在市场上的优势的重要组成部分。)

有一些特定的新API,例如Setup APIThread Pool APIGDI +,还有一些新主题,例如在Vista和7的UAC上下文中工作。Petzold也没有介绍几个单独的新功能,但是很容易根据需要在MSDN上查找较新的主题。 Windows编程也不涵盖COM,COM可能是Windows编程的很大一部分。

请记住,Petzold涵盖的API都是低级且基于C的。(有一些较新的API,例如GDI +和一些COM东西,都是面向对象的。)几乎任何现代开发都将是面向对象的,并且通常会使用.NET或Qt或Delphi的VCL之类的框架,因此您很少会编写类似于Windows编程示例代码中的完整应用程序;但是,它仍然可以很好地说明幕后情况。

我前了一阵子,找不到任何较新的API引用。我怀疑这是由于当前Windows API的庞大;《 Windows 5编程》已经有将近1500页长,一本涵盖所有新内容的书可能太大了。我确实找到了一些关于Windows编程的有趣的补充,尽管我还没有阅读它们:

  • Don COM提供的Essential COM -Vista的一些新API是基于COM的,而Petzold并不涵盖COM。
  • 约翰逊·哈特(Johnson M.Hart)撰写的《 Windows系统编程》似乎完全跳过了Petzold所介绍的GUI和GDI内容,但是它更详细地介绍了现代方法(多线程,IPC等)。
  • Windows Internals,由Russonovich,Solomon和Ionescu撰写-有关API的知识较少,而有关Windows如何在幕后工作的知识更多。Russonovich可能比Microsoft内部或外部的人都了解更多。

0

多年来,Windows API发生了变化。它添加了全新的功能集(例如:TaskDialog和family),并替换了现有功能(例如:CreateWindowEx)。

我建议咨询更新的参考。


有什么建议吗?
gablin 2011年

可悲的是,不。我不是C / C ++ / WinAPI程序员。我只知道这些较新功能的存在。
Powerlord 2011年

您是说告诉我一个有20年历史的OS在这段时间内添加了全部新功能?头脑=
吹牛

0

任务计划程序也是新的,添加了许多新的对象和接口。在Task Scheduler 2.0之前,调度任务涉及约5个对象。在2.0(Vista推出时引入)中,有20个,没有开玩笑,有20个。这是关于win32编程的不那么好事,但是还不错。

我喜欢在win32中进行编程,您会学到很多有关Windows和其他操作系统如何在较低级别上运行的知识,而且我相信它可以使您成为更好的程序员。如果您使用python编程,则无需了解目录的组织方式,只需使用即可os.listdir("")。但是在Win32中使用FindFirstFile()&时FindNextFile,您会发现目录的组织方式,并会发现隐藏的“ ..”和“。”。目录和从中可以提出更有效的方式来编目和搜索目录。

有关Win32资源,请访问http://groups.google.com/group/comp.os.ms-windows.programmer.win32/topics

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.