繁体   English   中英

将焦点锁定并捕获到特定窗口

[英]Locking focus and capture to a specific window

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

对于颜色选择器,请尝试阅读本文,以了解如何从屏幕上的任何位置获取颜色。

是一个更完整的实用程序,让您随心所欲。 不同之处在于,您要在单击组合键[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页面都包含大量信息,这些信息应该可以为您提供帮助,更不用说您是否愿意使用按键组合了,第二个链接非常适合您。

希望能有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM