C++ Builder 参考手册 ➙ System ➙ TObject ➙ Dispatch
头文件:#include <systobj.h>
命名空间:System
函数原型:
virtual void __fastcall Dispatch(void *Message);
System::TObject::Dispatch 是 System::TObject 的成员函数,是用来处理消息的,如果子类需要处理消息,可以重载这个函数,如果有没有处理的消息,需要调用父类的 Dispatch,如果父类仍然没有处理,会调用 DefaultHandler 进行默认的处理。
- 如果 Dispatch 处理消息没有找到处理的方法,或者不需要额外处理的消息,会调用 DefaultHandler 进行默认的消息处理;
- 使用 BEGIN_MESSAGE_MAP、VCL_MESSAGE_HANDLER、END_MESSAGE_MAP 处理消息,相当于重载 Dispatch
- 也可以通过重载 TControl::WndProc 处理消息;
- TControl::WndProc 调用了 TObject::Dispatch;
TObject::Dispatch 调用了 TObject::DefaultHandler;
TObject::DefaultHandler 没有代码,是预留给子类重载来处理消息的;
这说明 DefaultHandler 处于消息处理的最底层,如果用其他方法可以解决,最好不要重载这个函数。
参考:
- Vcl::Controls::TControl::WndProc
- System::TObject::DefaultHandler
- System::TObject
- VCL 类继承关系
C++ Builder 参考手册 ➙ System ➙ TObject ➙ Dispatch