我想将一些击键从 C++ 程序发送到另一个窗口。
出于这个原因,我想让用户选择目标窗口,就像在 Visual Studio 附带的 Spy++ 实用程序中所做的那样(将十字光标拖到目标窗口上,并用框架突出显示目标窗口)。
这种拖动和选择在 Windows 中是如何完成的?我完全不知道从哪里开始寻找实现此功能的机制。
最佳答案
通常是这样的:
- 使用 SetCapture 捕获鼠标。这将导致所有鼠标消息被路由到您应用程序的窗口。
- 处理 WM_MOUSEMOVE 消息。在您的处理程序代码中,使用 WindowFromPoint 捕获鼠标下方的窗口。这将为您提供鼠标当前所在窗口的 HWND。
- 现在您已经有了窗口,您需要一个设备上下文 (HDC)。您可以在指定窗口使用 GetWindowDC 获得一个。
- 现在您可以使用典型的 GDI 函数绘制到 DC 中。
有些事情您必须注意 - 干净地删除选择矩形等等,但这是一种方法。
您也可以绘制到屏幕 DC 中来执行此操作,但无论如何您都需要窗口句柄才能使窗口正确。
如果你谷歌一下 Spy++ 源代码,你会看到一些这种技术的例子。
关于c++ - 如何在另一个应用程序中选择并突出显示一个窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/228675/