|IContextMenu第七部分:执行默认动作

|IContextMenu第七部分:执行默认动作

文章图片


有人会问:如何通过程序的方式来执行上下文菜单的默认动作 。 注意 , 这里是要求使用程序化的方式 , 而不是交互式方式 。
这的确是一个好问题 。
通过我们之前几篇文章的讲解 , 我们对上下文菜单有了比较深入的了解 。 而这些知识点可以帮助解决上面提到的问题 。
关键在于 , 我们需要使用菜单句柄(HMENU)来识别默认的菜单项 , 然后直接调用它就可以了 。 让我们看看下面的代码(这段代码来自系列文章的第一部分) , 然后我使用了蓝色字体标记了所需要做的改动 。

在上面的代码中 , 我们调用了GetMenuDefaultItem来获取默认的菜单项 , 然后将待执行动作设置为菜单项的偏移量(在这个例子中 , 我们用默认菜单项索引减去传入给QueryContextMenu的菜单项起始值 。
值得一提的是 , 虽然这段代码可以正常工作 , 但是它还有有些提升空间 , 在后面的一篇文章中 , 我会讲解如何优化这段代码 , 使它看起来更加美好 。
总结弄清楚原理之后 , 实现起来就比较容易 。
反之 , 如果上来就开始写代码 , 不研究其内在原理 , 则 , 可能代码可以工作 , 但是心里会不太踏实 。
与君共勉 。
最后Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一 , 里面有很多关于Windows的小知识 , 对于广大Windows平台开发者来说 , 确实十分有帮助 。
本文来自:《How to host an IContextMenu part 7 – Invoking the default verb》
【|IContextMenu第七部分:执行默认动作】