Delphi 从TMessage获取控制句柄的方法

Delphi 从TMessage获取控制句柄的方法,delphi,handle,wndproc,Delphi,Handle,Wndproc,我可以识别一个只有TMessage变量的控件,但是否仍然可以获取控件句柄或其他信息?这个问题和德尔菲有关 我所做的事情是,我用一个函数挂接了几个控件wndproc,我需要找到那是什么控件消息 代码: 这是hooked函数 procedure TPropertyEditLink.EditWindowProc(var Message: TMessage); begin case Message.Msg of WM_KILLFOCUS: //FTree.EndEditNode;

我可以识别一个只有TMessage变量的控件,但是否仍然可以获取控件句柄或其他信息?这个问题和德尔菲有关


我所做的事情是,我用一个函数挂接了几个控件wndproc,我需要找到那是什么控件消息

代码:

这是hooked函数

procedure TPropertyEditLink.EditWindowProc(var Message: TMessage);
begin
  case Message.Msg of
    WM_KILLFOCUS:
      //FTree.EndEditNode;
  //else
    //FOldEditProc[0](Message);
  end;

  // HEREE i need to find the FEdit index!!!!!!!
  FOldEditProc[0](Message);
end;
第二个函数也需要FEdit索引

procedure TPropertyEditLink.ProcessMessage(var Message: TMessage);
begin
  FEdit[0].WindowProc(Message);
end;

不,TMessage只是包含传递给控件的值的打包记录。

简单回答,不。如果需要
HWND
,则必须在捕获消息时捕获该值。当然,有些消息(例如通知)会从父级重定向到子级,但在任何情况下,这都可能是您想要了解的窗口。根本的问题是什么?我正在做的事情是,我用一个函数连接了几个控件wndproc,我需要找到那是什么控件消息。编辑第一篇文章。。。添加了codeFEdit[i]。WindowProc:=是我“挂接”它的方式。使用
WindowProc
挂接,您需要为挂接的每个控件创建一个单独的类实例。那个班可能很小。您只需要一个对
TPropertyEditLink
实例的引用和一个对挂接的控件的引用。。。除非它已经包含这些值中的控件实例,在wParam/lParam中或从这些值中可以访问的内容中。
procedure TPropertyEditLink.EditWindowProc(var Message: TMessage);
begin
  case Message.Msg of
    WM_KILLFOCUS:
      //FTree.EndEditNode;
  //else
    //FOldEditProc[0](Message);
  end;

  // HEREE i need to find the FEdit index!!!!!!!
  FOldEditProc[0](Message);
end;
procedure TPropertyEditLink.ProcessMessage(var Message: TMessage);
begin
  FEdit[0].WindowProc(Message);
end;