一个超时上下文菜单的实现

一个超时上下文菜单的实现

作者:BlogUpdater |  时间:2022-06-20 |  浏览:91 |  评论已关闭 条评论

和之前的超时对话框系列文章颇为类似,我们可以依葫芦画瓢实现一个超时上下文菜单,实现的手法更加简单一些。具体来说,我们使用了一个Windows消息 WM_CANCELMODE来关闭上下文菜单。

例子代码

在显示上下文菜单之前,我们创建了一个定时器。(这里有一个小细节,我们使用了线程定时器,以为你我们并未拥有任何窗口句柄,因此我们不知道应该使用哪个定时器ID)
如果定时器触发了,则我们通过定时器回调向我们自身发送WM_CANCELMODE消息来取消上下文菜单。和就模拟了用户取消菜单的场景,不管是点击了ESC按键,还是在菜单外点击。
当用户选择了某个菜单项目或者定时器触发的时候,TrackPopupMenuEx函数会立即返回,然后我们会在这个时间点销毁之前创建的定时器,以防止资源泄露。嗯,完美!

总结
本文适合于无人值守的应用,如果有人在电脑前,还是不要设计这种定时关闭的菜单,除非用户真的不在意。

最后
Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。
本文来自:《A timed context menu》

最近我写了个东西
正如你们所知道的,拓扑梅尔智慧办公平台(Topomel Box)是一款绿色软件,主要面向经常使用电脑的朋友。它提供了各种提升办公效率的小功能,同时操作上尽可能地简单方便。
我想:你值得拥有。

评论已关闭。