文章图片
和之前的超时对话框系列文章颇为类似 , 我们可以依葫芦画瓢实现一个超时上下文菜单 , 实现的手法更加简单一些 。 具体来说 , 我们使用了一个Windows消息 WM_CANCELMODE来关闭上下文菜单 。
例子代码
在显示上下文菜单之前 , 我们创建了一个定时器 。 (这里有一个小细节 , 我们使用了线程定时器 , 以为你我们并未拥有任何窗口句柄 , 因此我们不知道应该使用哪个定时器ID)
如果定时器触发了 , 则我们通过定时器回调向我们自身发送WM_CANCELMODE消息来取消上下文菜单 。 和就模拟了用户取消菜单的场景 , 不管是点击了ESC按键 , 还是在菜单外点击 。
当用户选择了某个菜单项目或者定时器触发的时候 , TrackPopupMenuEx函数会立即返回 , 然后我们会在这个时间点销毁之前创建的定时器 , 以防止资源泄露 。 嗯 , 完美!
总结本文适合于无人值守的应用 , 如果有人在电脑前 , 还是不要设计这种定时关闭的菜单 , 除非用户真的不在意 。
最后Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一 , 里面有很多关于Windows的小知识 , 对于广大Windows平台开发者来说 , 确实十分有帮助 。
本文来自:《A timed context menu》
【英特尔|一个超时上下文菜单的实现】
- 高通|彻底投降了!高通、英特尔宣布接入华为鸿蒙系统
- 激光电视|有一个投影老牌推了一款4K超短焦激光,这一次亮度单位竟用“尼特”
- Ubuntu|续航和快充怎么选?魅族19多种快充方案曝光,机身厚度是一个考验
- 软件|迷你电脑升级记:200多元入手一个512G固态,完美扩容
- 机箱|小白如何选电脑配置,一个老手的装机作业,还不赶紧抄起来
- 程序员|又一个程序员同事被挖走了
- 英特尔|大学想买耐用的笔记本?RTX3050+120Hz OLED屏的新品轻薄本安排
- 英特尔|618不花冤枉钱,说说一线品牌新品优缺点,看完你也是游戏本懂哥
- 芯片|是什么限制了英特尔推出比苹果更强的芯片?
- 英特尔|新电脑必做优化,避免越用越卡!