处理WM_CONTEXTMENU消息中需要注意的地方
在开始我们的IContextMenu系列文章之前,我想先开个小差,讲讲有关于WM_CONTEXTMENU这个消息的微妙之处。
首先,我们看看下面来自于头文件中关于HANDLE_WM_CONTEXTMENU宏的定义。
显然,在头文件中所定义的HANDLE_WM_CONTEXTMENU宏没有考虑多显示器支持。
第二个需要注意的地方是,WM_CONTEXTMENU消息不仅可以通过鼠标右键来触发,而且还可以通过键盘按键来触发。如果你的台式机有一台104按键的键盘,你可以观察下,键盘空格键的右边会有一个菜单按键。如果你的电脑是一台笔记本电脑,则情况可能有些不同,因为笔记本电脑的键盘很难被标准化,各个厂家都会有一些独特的定制按键。但不管怎么样,你都可以按下Shift + F10 来实现相同的效果。
当用户从键盘上按下菜单按键触发了上下文菜单时,x和y坐标都会变成-1。在这种情况下,你应该在当前选中的条目上(或者当前被多个选中的条目上)来显示上下文菜单,如果你不注意这个细节,则可能会对无效坐标(-1, -1)执行点击测试(Hit-Testing),而点击测试不会为你返回任何有意义的东西。
总结
好了,现在有关于WM_CONTEXTMENU消息的细节就介绍到这里,希望对你有些帮助。
后面,我们会重新回到游戏主线情节,即IContextMenu接口系列文章。
最后
Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。
本文来自:《Pitfalls in handling the WM_CONTEXTMENU message》
最近我写了个东西
正如你们所知道的,拓扑梅尔智慧办公平台(Topomel Box)是一款绿色软件,主要面向经常使用电脑的朋友。它提供了各种提升办公效率的小功能,同时操作上尽可能地简单方便。
我想:你值得拥有。
- 下一篇: VS2022的智能感知性能提升了18倍
- 上一篇: IContextMenu第一部分:基本介绍
相关推荐
- 桌面外壳API之小技巧一枚
- Posted on 03月24日
- VS2022中浮点收缩的变化
- Posted on 12月15日
- 说说模态化8:一个更好版本的超时关闭对话框
- Posted on 06月14日
- 实战经验:使用CFileDialog实现多个文件选择
- Posted on 04月28日
评论已关闭。