文章图片
和之前的超时对话框系列文章颇为类似 , 我们可以依葫芦画瓢实现一个超时上下文菜单 , 实现的手法更加简单一些 。 具体来说 , 我们使用了一个Windows消息 WM_CANCELMODE来关闭上下文菜单 。
例子代码
在显示上下文菜单之前 , 我们创建了一个定时器 。 (这里有一个小细节 , 我们使用了线程定时器 , 以为你我们并未拥有任何窗口句柄 , 因此我们不知道应该使用哪个定时器ID)
如果定时器触发了 , 则我们通过定时器回调向我们自身发送WM_CANCELMODE消息来取消上下文菜单 。 和就模拟了用户取消菜单的场景 , 不管是点击了ESC按键 , 还是在菜单外点击 。
当用户选择了某个菜单项目或者定时器触发的时候 , TrackPopupMenuEx函数会立即返回 , 然后我们会在这个时间点销毁之前创建的定时器 , 以防止资源泄露 。 嗯 , 完美!
总结本文适合于无人值守的应用 , 如果有人在电脑前 , 还是不要设计这种定时关闭的菜单 , 除非用户真的不在意 。
最后Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一 , 里面有很多关于Windows的小知识 , 对于广大Windows平台开发者来说 , 确实十分有帮助 。
本文来自:《A timed context menu》
【英特尔|一个超时上下文菜单的实现】
- 穿戴式设备|好域名就是底气!创业一年不见起色,他却靠一个域名获利25万美元
- 英特尔|Intel华丽转身!这才是我想看到的技术巨头
- 淘宝|第一个使用淘宝的人, 订单至今挂在支付宝大楼, 当年他买了什么
- 推特|马斯克遭遇“史上最晦气一周”:特斯拉、SpaceX和Twitter没一个省心
- 英特尔|余承东选对了,1200亿元不白出,华为传来芯片新消息
- 英特尔|华为P60 Pro+曝光:设计迎来大突破,两大杀手锏让其大放异彩
- Ubuntu|续航和快充怎么选?魅族19多种快充方案曝光,机身厚度是一个考验
- 英特尔|高考结束买手机,不妨看看这4款,中端到高端一应俱全
- javascript|华为又公开一个新技术,将手机、手环、手表变成外设辅助设备!
- 本文转自:中国蓝新闻“618”年中大促是观察新零售、新业态等商业新生态的一个窗口。|鄞州借力“618”加快消费市场回暖步伐