什么是子类化和API挂钩?

我对Windows API编程相当新,我想知道什么是子类和API挂钩。 我正在做一个使用所有者绘制的控件的项目,而且我还有两个术语不断出现。 现在我已经在CodeProject.com上看到了很多关于这些主题的详细教程,但问题是他们都使用MFC,而我正在使用纯Win32进行编码。 如果有人知道上述主题的任何好的教程,那么请张贴链接。 也尝试避免链接到MSDN,作为新手,我有麻烦理解什么写在那里。

外行条款:分类是通过替换窗口的窗口过程来完成的。 它重定向了Windows向窗口传递消息的调用,以便您能够首先看到这些消息。 这可以让你改变窗口的行为,赋予它原来没有的新功能。 这是一个非常常见的技术,直接受到操作系统的支持,SDK文章就在这里 。

API挂钩是相似的,但对于winapi函数。 这样你就可以改变你没有编写的进程中运行的代码的行为。 任意地,您可以挂钩CreateFile()并更改传递的文件名或使其失败。 这样做很不常见,也很难得到正确的结果,因为它不像子分类那样是一种烘焙功能。 微软的Detours是该技术的一个示例实现。

无论哪种技术都属于高级编程类别,如果你做得不对,你可能会陷入非常麻烦的麻烦之中。 如果您在阅读MSDN文章时遇到困难,请将其放在书架上,直到您准备好。

如果你正在编程原始的Win32,你应该得到Petzold的书“编程Windows”。