子类化是一种技术,允许应用程序在窗口有机会处理之前拦截和处理发送或发布到特定窗口的消息。根据窗口过程子类化功能的形式,系统会自动将消息翻译成ANSI或Unicode格式。
以下对SetWindowLongA函数的调用会将与【HWND】参数标识的窗口关联的当前窗口过程分类。新窗口过程NewWndProc将以ANSI格式接收带有文本的消息。
OldWndProc = (WNDPROC) SetWindowLongA(hwnd,
GWL_WNDPROC, (LONG)NewWndProc);
当NewWndProc处理完消息时,使用CallWindowProc函数将消息传递给OldWndProc。
CallWindowProc(OldWndProc, hwnd, uMessage, wParam, lParam);
如果OldWndProc使用UNICODE类样式创建,则消息将从NewWndProc接收到的ANSI形式转换为Unicode。
类似地,对SetWindowLongW函数的调用将使用期望Unicode文本消息的窗口过程对当前窗口过程进行子类化。如果需要,在CallWindowProc功能的处理期间执行消息转换。
有关子类化的更多信息,请参阅窗口程序.