如何将值传递给MFC消息映射函数on_command

时间:2012-08-31 15:40:13

标签: c++ mfc ribbon message-map

我有一个函数,它根据收到的std :: string值执行特定操作。

例如:

  

void performTaskOnStringValue(std :: string);

现在我有一组功能区按钮(CMFCRibbonButton)需要通过在按钮点击时将它们各自的文本作为值传递来调用此功能。

我已将这些按钮的id映射到带有按钮id的消息映射宏on_command。所有按钮共享一个共同的id - Eg -

  

ID_RIBBON_BUTTON_ID

消息地图如下

  

ON_COMMAND(ID_RIBBON_BUTTON_ID,& MyClass :: performTaskOnStringValue);

如何在ButtonClick上将按钮文本作为参数传递给此功能?

2 个答案:

答案 0 :(得分:5)

当所有按钮都具有相同的ID时,您无法使按钮执行不同的操作。命令处理程序没有指示按下了哪个按钮。

如果您可以为按钮分配连续ID,则可以使用ON_COMMAND_RANGE。这将传递按钮的ID,您可以将其传递给GetDlgItemText以从按钮获取文本。

答案 1 :(得分:2)

首先,在连续范围内为每个按钮指定不同的ID。

其次,使用ON_COMMAND_RANGE将所有按钮映射到一个接收id作为参数的处理程序。

第三,在该处理程序中使用id来获取按钮文本。然后,您可以调用performTaskOnStringValue方法。