
文章图片
和之前的超时对话框系列文章颇为类似 , 我们可以依葫芦画瓢实现一个超时上下文菜单 , 实现的手法更加简单一些 。 具体来说 , 我们使用了一个Windows消息 WM_CANCELMODE来关闭上下文菜单 。
例子代码
在显示上下文菜单之前 , 我们创建了一个定时器 。 (这里有一个小细节 , 我们使用了线程定时器 , 以为你我们并未拥有任何窗口句柄 , 因此我们不知道应该使用哪个定时器ID)
如果定时器触发了 , 则我们通过定时器回调向我们自身发送WM_CANCELMODE消息来取消上下文菜单 。 和就模拟了用户取消菜单的场景 , 不管是点击了ESC按键 , 还是在菜单外点击 。
当用户选择了某个菜单项目或者定时器触发的时候 , TrackPopupMenuEx函数会立即返回 , 然后我们会在这个时间点销毁之前创建的定时器 , 以防止资源泄露 。 嗯 , 完美!
总结本文适合于无人值守的应用 , 如果有人在电脑前 , 还是不要设计这种定时关闭的菜单 , 除非用户真的不在意 。
最后Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一 , 里面有很多关于Windows的小知识 , 对于广大Windows平台开发者来说 , 确实十分有帮助 。
本文来自:《A timed context menu》
【英特尔|一个超时上下文菜单的实现】
- 英特尔13代酷睿非k处理器cinebench测试曝光
- 一个新品牌是否成功|小米13手机的优势在哪里?
- 12月13日消息|英特尔14代meteorlake-s桌面处理器泄露
- 英特尔AI百佳创新星球上线,百余家创新企业齐亮相
- 如何将视频合并成一个?
- 一台电脑只能登录一个微信账号?教你几个步骤轻松搞定!
- 一个手机号码只能注册一个华为账号|如何利用电子邮箱注册自己的华为账号
- 平时大家需要同时创建很多Word文档的时候是怎么做的呢?大部分用户估计都是一个一个复制粘...|如何快速批量创建大量的word文档?
- 每天大家都在使用微信|微信群聊新增两个功能,一个直接@提醒多个人
- 芯片|Chiplet能让中国芯片弯道超车?英特尔:我的技术可以
