子类化组合框

【勇芳软件工作室】汉化HomePreviousNext

【子类】是一个允许应用拦截和处理发送或发布到窗口的消息的过程。通过使用子类化,应用程序可以将其自己的处理替换为某些消息,同时将大多数消息处理留给类定义的窗口过程。

当操作系统创建一个窗口时,它将信息保存在包含窗口过程地址的内部数据结构中。为了子类化窗口,应用程序调用{??989796012}函数将该过程的地址替换为应用程序定义的子类过程的实例地址。此后,到窗口的所有消息都将发送到子类过程。此过程然后使用CallWindowProc函数将未处理的消息传递到原始窗口过程。有关COMBOBOX类窗口过程执行的消息处理的说明,请参阅默认组合框行为.

当组合框在对话框之外时,除非使用子类过程,否则应用程序无法处理TAB,ENTER和ESCAPE键。当简单或者下拉组合框接收到输入焦点时,它立即将焦点设置为其子编辑控件。因此,应用程序必须对编辑控件进行子类化,以截取简单或下拉组合框的键盘输入。有关示例,请参阅对组合框进行子类化.

如果一个子类过程处理WM_PAINT消息,它必须使用BeginPaint函数来准备绘画。在调用EndPaint函数之前,它会将设备上下文(DC)句柄作为窗口过程的【wParam中】参数传递。如果首先调用EndPaint,则类窗口过程不进行绘制,因为EndPaint会验证整个窗口。

与子类相关的技术是【超类】.超类似于任何其他类,除了它的窗口过程不调用DefWindowProc来处理未处理的消息。而是将未处理的消息传递给父窗口类的窗口过程。遵循窗口程序中的准则,以避免子类化和超类可能出现的问题。