Windows Message Handling--Subclassing 子类化

Subclassing is a technique that allows an application to intercept and process messages sent or posted to a particular window before the window has a chance to process them. This is typically done by replacing the Window Procedure for a window with application-defined window procedure.

子类化是一种允许应用程序在窗口处理发送或投递到它的消息之前进行拦截和处理的技术。这通常通过用自定义的窗口过程替换原来的窗口过程来实现。

这是Windows Message Handling - Part 4上的一段话,看过之后感觉这个功能挺不错。遂记之如下:

 

文中介绍了子类化的两种情况

SDK方式:

1、创建新的窗口处理函数NewWNDPROC 在新的窗口处理函数中做出特别的处理,之后把其余的交给旧窗口函数处理。使用CallWindowProc函数。

2、用新的窗口函数代替旧的窗口函数,并保存旧的,如使用SetWindowLong函数。

 

MFC方式: mfc方式需要创建目标父类的子类,并在其中改写感兴趣的消息函数。

一种方式是使用自定义子类直接关联父类控件

另外一种方式是生成子类对象实例,并调用对应的CWnd::SubclassWindow或CWnd::SubclassDlgItem函数。

 

除此之外,作者还提到了消息反射的问题,可惜作者没有详细解释。

你可能感兴趣的:(windows,mfc)