Windows 32 API是否随着时间的推移发生了很大变化?1998年查尔斯·佩佐尔德(Charles Petzold)的书“ Programming Windows,第5版”是否仍包含相关信息,或者其中大部分已过时/过时?
Windows 32 API的最新新增功能(如果有)有哪些突出示例?
Windows 32 API是否随着时间的推移发生了很大变化?1998年查尔斯·佩佐尔德(Charles Petzold)的书“ Programming Windows,第5版”是否仍包含相关信息,或者其中大部分已过时/过时?
Windows 32 API的最新新增功能(如果有)有哪些突出示例?
Answers:
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。
我发现对Windows编程仍然有用。由于Microsoft强调向后兼容性,因此所有核心内容(窗口句柄,消息,GDI等)似乎仍然是相关的,并且在Petzold中涵盖得很好。(如果发生任何太大的改变,将会破坏太多的现有Windows程序,而大量现有的Windows程序则是Windows在市场上的优势的重要组成部分。)
有一些特定的新API,例如Setup API,Thread Pool API和GDI +,还有一些新主题,例如在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编程的有趣的补充,尽管我还没有阅读它们:
多年来,Windows API发生了变化。它添加了全新的功能集(例如:TaskDialog和family),并替换了现有功能(例如:CreateWindowEx)。
我建议咨询更新的参考。
任务计划程序也是新的,添加了许多新的对象和接口。在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