有没有可能同时点到Windows窗体程序的两个不同按钮?

发布于 2021-08-19  33 次阅读


很小的时候使用电脑时就好奇过一个问题,我鼠标去点击一个位置,如果目标位置看起来和另一个按钮区域很贴合,为什么能够真正的所见所得?即:渲染的按钮位置很大,两个按钮很近,鼠标的点击位置虽然只是一个小尖尖,但有没有可能让这个小尖尖同时点到两个按钮?

并且为这个幼年期间提出的问题补充一个后续:这种情况下的硬件中断事件是如何被消息处理器处理的?

正文

Windows 为每个程序(严格地说是每个线程)维护一个消息队列,Windows 检查系统消息队列里消息的发生位置,当位置位于某个应用程序的窗口范围内的时候,就把这个消息派送到应用程序的消息队列里

另外参见WM_SETCURSOR文档

基本来说,这也解决了为什么程序可以做到:当鼠标快速在不同窗口之间来回游走时,快速切换鼠标样式(由程序控制的鼠标样式)

所以问题的答案是,不可能