在开发中遇到了如下问题:
通过鼠标钩子获取某窗口的消息,发现可以接收到鼠标左键按下(WM_LBUTTONDOWN)的消息,但始终无法接收到鼠标左键双击(WM_LBUTTONDBLCLK)的消息。
经过一番排查,发现 Windows 窗口只有在拥有 CS_DBLCLKS
类样式时才能接收到鼠标双击事件,即在 RegisterClassEx 函数的 WNDCLASSEX.style
参数中指定 CS_DBLCLKS 样式。
但是窗口不是我们自己创建的,能否通过 SetClassLongPtr
函数来通过句柄改变窗口类样式,经过多方尝试最终以失败告终(虽然SetClassLongPtr返回值0,GetLastError也为0)。