有一个Delphi写的程序,怎么拦截其中控件的消息

有一个Delphi写的程序,怎么拦截其中控件的消息,第1张

有3个方法/

1 嫁接application.OnMessage

property OnMessage: TMessageEvent read FOnMessage write FOnMessage

这个事件会处理整个程序的消息

2 嫁接DBGrid的windowProc过程

这个事件会处理控件的所有消息,直接屏蔽掉鼠标左键就可以了.

3 消息事件 如果WM_NCLBUTTONDOWN

WM_NCLBUTTONUP 2个就是一个鼠标单击的事件所需要的消息

具体可以参考delphi精要 一书.

需要用到API函数GetWindowLong或者GetWindowInfo,

GetWindowLong的函数原型LONG GetWindowLong( HWND hWnd,int nIndex )

参数:

hWnd:指定窗口句柄

nIndex:需要获得的信息的类型

值 功能

nIndex取值如下:

GWL_EXSTYLE 得到扩展的窗口风格

GWL_STYLE 得到窗口风格

GWL_WNDPROC 得到窗口回调函数的地址,或者句柄。得到后必须使用CallWindowProc函数来调用

GWL_HINSTANCE 得到应用程序运行实例的句柄

GWL_HWNDPARENT 得到父窗口的句柄

GWL_ID 得到窗口的标识符

GWL_USERDATA 得到和窗口相关联的32位的值(每一个窗口都有一个有意留给创建窗口的应用程序是用的32位

的值)

当hWnd标识一个对话框时可以使用下面的值

Value Action

DWL_DLGPROC 得到对话框回调函数的地址,或者句柄。得到后必须使用CallWindowProc函数来调用

DWL_MSGRESULT 得到对话框回调函数中消息处理过程的返回值

DWL_USER 得到额外的应用程序私有信息,如一些句柄和指针等

返回值:

成功时,返回一个请求的32位的值

失败时,返回0,可以使用GetLastError来取得错误信息!


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/56374.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-02-26
下一篇2023-02-26

发表评论

登录后才能评论

评论列表(0条)

    保存