处理动态填充的CMenu消息

时间:2017-12-05 17:59:20

标签: mfc cmenu

我正在MFC应用程序中实现右键菜单,其内容在运行时才会知道。

虽然将菜单项添加到ON_COMMAND对象很简单,但我还没有想出办法处理每个菜单项发送的消息。

我正在调查的一种技术是为每个动态创建的菜单项分配相同的资源ID,并通过一个回调处理所有消息,其中包含适当处理每个消息的逻辑。这种方法的问题在于,除了kludgey之外,使用需要无参数回调的ON_MESSAGE宏来捕获WPARAM menuitem消息,因此除了隐含信息之外,没有信息传递给它。它由具有特定资源ID的资源调用。

我尝试使用LPARAM宏来捕获消息,而不是使用接收{{1}}和{{1}}参数的回调,但是从不调用回调,所以该选项似乎是进行。

在我看来,必须有一种方法来实现我想要做的事情,但到目前为止我无法弄清楚。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

看看这个答案:

https://stackoverflow.com/a/3673672/2287576

  

对于消息映射,假设所有菜单项ID都在一定范围内,您可以使用ON_COMMAND_RANGE将整个范围映射到单个函数。此函数将接收ID作为参数,并且在函数内,您可以根据ID执行不同的操作。

假设您可以预留一系列ID值,此方法将起作用。