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

How to pass value to MFC message map function on_command

本文关键字:映射函数 消息 on command MFC 值传      更新时间:2023-10-16

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

例如:

void performTaskOnStringValue(std::string);

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

我已经将这些按钮的id映射到具有按钮id的消息映射宏on_command。所有的按钮都有一个共同的id-例如-

ID_RIBBON_BUTTON_ID

消息映射如下

ON_COMMAND(ID_RIBBON_BUTTON_ID,&MyClass::performTaskOnStringValue);

如何将按钮文本作为参数传递给ButtonClick上的此函数

当按钮都有相同的ID时,不能让它们执行不同的操作。命令处理程序无法指示按下了哪个按钮。

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

首先,在一个连续的范围内为每个按钮提供不同的id。

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

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