Delphi 从TMessage获取控制句柄的方法
我可以识别一个只有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;
我所做的事情是,我用一个函数挂接了几个控件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;