有人会问:如何通过程序的方式来执行上下文菜单的默认动作。注意,这里是要求使用程序化的方式,而不是交互式方式。
这的确是一个好问题。

通过我们之前几篇文章的讲解,我们对上下文菜单有了比较深入的了解。而这些知识点可以帮助解决上面提到的问题。

关键在于,我们需要使用菜单句柄(HMENU)来识别默认的菜单项,然后直接调用它就可以了。让我们看看下面的代码(这段代码来自系列文章的第一部分),然后我使用了蓝色字体标记了所需要做的改动。

打开网易新闻 查看精彩图片

在上面的代码中,我们调用了GetMenuDefaultItem来获取默认的菜单项,然后将待执行动作设置为菜单项的偏移量(在这个例子中,我们用默认菜单项索引减去传入给QueryContextMenu的菜单项起始值。

值得一提的是,虽然这段代码可以正常工作,但是它还有有些提升空间,在后面的一篇文章中,我会讲解如何优化这段代码,使它看起来更加美好。

总结

弄清楚原理之后,实现起来就比较容易。
反之,如果上来就开始写代码,不研究其内在原理,则,可能代码可以工作,但是心里会不太踏实。
与君共勉。

最后

Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。
本文来自:《How to host an IContextMenu, part 7 – Invoking the default verb》

最近我写了个东西

正如你们所知道的,拓扑梅尔智慧办公平台(Topomel Box)是一款绿色软件,主要面向经常使用电脑的朋友。它提供了各种提升办公效率的小功能,同时操作上尽可能地简单方便。
我想:你值得拥有。

打开网易新闻 查看精彩图片