我遇到了一个艰巨的任务,即只要将WM_GETOBJECT
消息发送到表单上的任何TWinControl
,就必须拦截并处理该消息。
显然,我不希望单独对每个控件进行子类化:
是否可以使用 SendMessage
参与处理直接发送到子控件的每封邮件答案 0 :(得分:7)
如果您不想为每个单独的控件创建子类(这当然是一个选项,例如可以使用内插器类进行简化),那么您可以改为使用特定于线程的{{3} }或WH_CALLWNDPROC
通过Win32 API WH_CALLWNDPROCRET
函数挂钩。钩子将告诉你哪个HWND
正在接收每条消息,并且在与钩子相同的进程中挂钩线程时,你不需要在DLL中实现钩子。
如果您需要指定TWinControl*
的{{1}}指针,则可以使用HWND
单元中的VCL SetWindowsHookEx()
功能。