当前位置:C++技术网 > 资讯 > C++实现软件最小化关闭到右下角通知栏托盘并响应解答2

C++实现软件最小化关闭到右下角通知栏托盘并响应解答2

更新时间:2017-07-13 22:19:11浏览次数:1+次

谢谢答复!

我还有一个问题,就是我如何去捕获别的应用程序的鼠标事件。就是点击已经最小化后的窗口的图标,然后在我的应用程序中捕捉到被点击的窗口的鼠标点击事件,再在鼠标的位置上弹出“恢复”和“关闭”菜单。来实现关闭或恢复其它的应用程序!!!!


C++技术网会员解答:

    您好,感谢您对C++技术网的支持与信任。

    如果在窗口范围内,我们直接处理WM_LBUTTONXXX、WM_MBUTTONXXX和WM_RBUTTONXXX就行了。然而如果要捕捉窗口外的鼠标消息,那么这样就不行了。因为窗口外的鼠标消息并不会发送到窗口线程的消息队列中。不过系统为为什么提供了两个API函数即:捕捉鼠标SetCapture()和释放鼠标捕获ReleaseCapture()。捕获鼠标设置之后,即使鼠标在任务栏还是通知栏或者在其他窗口上面点击,一样可以收到鼠标的消息。

    所以在先调用SetCapture()设置捕捉状态开启,此时可以捕捉鼠标了。然后你就可以当做正常的鼠标消息进行处理就可以了。但是如果你的窗口如果丢失焦点,就失去了捕捉状态。如果是这样,请在WM_KILLFOCUS消息中再设置一下鼠标捕捉。当完成了捕捉处理之后,一定要记得释放鼠标捕获,以免干扰其他程序的使用。

    捕捉鼠标是针对全部屏幕范围的,所以影响也是很大的。然后在处理鼠标消息的时候,弹出菜单就可以了。不过为了降低对系统其他程序的影响,最好是对检测的范围进行限定。即如果收到消息范围不在通知栏区域范围内,就不要做处理。