2

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

虽然将菜单项添加到CMenu对象很简单,但我还没有找到一种方法来处理每个菜单项发送的消息。

我正在研究的一种技术是为每个动态创建的菜单项分配相同的资源 ID,并通过一个回调处理所有消息,该回调将包含适当处理每条消息的逻辑。这种方法的问题在于,除了杂乱无章之外,CMenumenuitem 消息是使用ON_COMMAND需要无参数回调的宏捕获的,因此除了隐含信息被具有特定资源的资源调用之外,没有任何信息传递给它ID。

我尝试使用ON_MESSAGE宏来捕获消息,而不是作为它使用接收WPARAMLPARAM参数的回调,但从未调用过回调,因此该选项似乎已失效。

在我看来,必须有一种方法来实现我正在尝试做的事情,但到目前为止我还无法弄清楚。任何帮助深表感谢。

4

1 回答 1

3

看看这个答案:

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

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

假设您可以留出一定范围的 ID 值,此方法将起作用。

于 2017-12-06T02:18:28.677 回答