我面临着一个令人生畏的任务,即WM_GETOBJECT只要将消息发送到TWinControl表单上的任何消息,就必须拦截和处理消息.
显然,我不希望单独对每个控件进行子类化:
有没有办法参与处理使用SendMessage直接发送到子控件的每个消息
如果您不想为每个单独的控件创建子类(这当然是一个选项,例如可以使用插入器类进行简化),那么您可以通过Win32 API 函数使用特定于线程WH_CALLWNDPROC或WH_CALLWNDPROCRET钩子SetWindowsHookEx().钩子将告诉你哪个HWND接收每条消息,并且在与钩子相同的进程中挂钩线程时不需要在DLL中实现钩子.
如果需要TWinControl*给定的指针HWND,可以FindControl()在Vcl.Controls单元中使用VCL的功能.