zl程序教程

您现在的位置是:首页 >  云平台

当前栏目

处理WM_CONTEXTMENU消息中需要注意的地方

消息 处理 需要 注意 地方 WM
2023-09-14 09:10:44 时间

在开始我们的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)是一款绿色软件,主要面向经常使用电脑的朋友。它提供了各种提升办公效率的小功能,同时操作上尽可能地简单方便。
我想:你值得拥有。