Delphi检测鼠标悬停在窗体的关闭按钮上
答
您可以发送窗体的窗口WM_NCHITTEST
消息,将鼠标的屏幕坐标传递给lParam
值。如果返回值为HTCLOSE
,则鼠标位于关闭按钮上方。
但是,仅仅因为鼠标位于关闭按钮上并不能保证用户实际上点击了按钮。例如,用户可以在按钮上移动鼠标,然后在键盘上输入Alt + F4,而不是(或Alt +空格键,箭头指向Close
选项,然后按输入,它调用同样的动作作为Alt + F4)。
无论点击关闭按钮,或者使用键盘快捷键,同样WM_CLOSE
消息被发送到窗口(触发窗体的OnCloseQuery
和OnClose
事件),为什么被关闭窗口它不报告。
如果您需要区分,您可以让您的窗体处理窗口消息WM_NCLBUTTONDOWN
/WM_NCLBUTTONUP
和WM_SYSCOMMAND
窗口消息。单击关闭按钮关闭窗口时,WM_CLOSE
前面会有WM_NCLBUTTON...
,wParam
设置为HTCLOSE
。当通过键盘快捷键关闭窗口时,WM_CLOSE
前面会有WM_SYSCOMMAND
,其wParam
设置为SC_CLOSE
。
+0
谢谢你雷米,这是为我工作 –
我的意思是我的申请表格 –