0

我可以使用切换机制调用 setfocus 和 setcapture,并在 OnLButtonDown 中确保消息不会被传递,但在您左键单击时似乎失败了。有什么办法可以确保有捕获和焦点的窗口不会放弃它?

4

1 回答 1

2

对于颜色选择器,请尝试阅读这篇关于从屏幕上的任何位置获取颜色的文章。

是一个更完整的实用程序,让您为所欲为。不同之处在于在组合键 [Alt+Ctrl+P] 上捕获停止,您希望在单击时停止。

在第二个链接中,以下函数调用将对您有用:

SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
RegisterHotKey(m_hWnd, 0x1FEB, MOD_CONTROL | MOD_ALT, 0x50);

第一个使窗口保持活动状态,第二个寄存器 Alt+Ctrl+P (当按下它时,窗口将收到一个 WM_HOTKEY 事件,您可以在此停止捕获颜色)。遗憾的是,您不能将 RegisterHotKey 与鼠标按钮一起使用。您将需要查看SetWindowsHookEx

使用 SetWindowsHookEx,您可以确保您的应用程序即使没有焦点也能接收事件。使用钩子“WH_MOUSE”调用 SetWindowsHookEx 以及Mouse Procedure

在此过程中,您将收到鼠标消息,停止捕获鼠标移动的位置(锁定颜色),并使用 SetWindowPos 将窗口移动到顶部。然后用UnhookWindowsHookEx取消注册你的钩子。

这是你可能需要学习的很多东西,但是我链接到你的所有 MSDN 页面都有很多信息可以帮助你,更不用说你是否愿意使用组合键而不是第二个链接非常适合您。

希望有帮助。

于 2009-04-10T01:50:45.217 回答