如何确定鼠标是否指向光标下窗口的最大按钮
How determine if mouse points to maximise button of window under cursor
如何确定鼠标是否指向(悬停在)窗口的最大化按钮,即使该窗口不是我的应用程序。有API吗?
您可以向该窗口发送WM_NCHITTEST
。返回值将与请求坐标上的对象类型相对应。
类似这样的东西:
bool IsMouseOverMaxBtn(HWND hWnd)
{
POINT pt;
VERIFY(GetCursorPos(&pt)); // get mouse position
int retVal = SendMessage(hWnd, WM_NCHITTEST, 0, MAKELONG(pt.x, pt.y));
return HTMAXBUTTON == retVal;
}
编辑:
您可以将此消息发送到任何窗口(不一定属于您的线程/进程)。由于不涉及指针(例如字符串指针),所以没有问题。
然而,您应该注意,向属于另一个线程的窗口发送(而不是发布)消息是一项相当繁重的操作,在此过程中,您的线程将被挂起。甚至可能出现线程挂起的情况,因为为该窗口提供服务的应用程序的线程挂起。
您可以考虑使用SendMessageTimeout
来保证线程不会挂起。
相关文章:
- 问:如何使用C++中的按钮从窗口打开窗口
- 如何通过按下第三个窗口中的按钮,将QString从一个窗口获取到另一个窗口
- 可能的Qt5错误:调用setFixedSize()禁用主窗口的关闭按钮(在Win7下)
- 触发另一个窗口的菜单按钮
- 在主窗口之前显示登录对话框并隐藏主窗口按钮
- QT-如何通过按下按钮从子窗口小部件返回到父窗口小部件
- 单击"推送"按钮应使用Qt C++在不同的窗口中显示绘图
- 如何隐藏最大化和最小化按钮并在qml应用程序窗口中显示关闭按钮?
- 使用winapi使用按钮更改窗口的背景颜色
- Qt - 为什么我无法在主窗口中为我的自定义按钮触发 mousePressEvent
- Gtkmm 3/C++,使用按钮而不是窗口关闭程序"X"
- 单击不同窗口上的按钮时,请更改类的参数
- Wt C++按钮单击后使窗口不可单击
- MAC超级窗口最大化按钮C
- 无法在窗口中添加缩略图按钮
- 如何使用C++禁用窗口上的右键单击按钮
- c++ qt 主窗口设置图像后的对话框"确定"按钮
- XLIB窗口上没有最大化按钮
- 如何通过单击按钮在窗口上生成对象
- 单击按钮后,如何在QT中更改窗口中的信息