我有一个函数,它根据收到的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上将按钮文本作为参数传递给此功能?
答案 0 :(得分:5)
当所有按钮都具有相同的ID时,您无法使按钮执行不同的操作。命令处理程序没有指示按下了哪个按钮。
如果您可以为按钮分配连续ID,则可以使用ON_COMMAND_RANGE。这将传递按钮的ID,您可以将其传递给GetDlgItemText以从按钮获取文本。
答案 1 :(得分:2)
首先,在连续范围内为每个按钮指定不同的ID。
其次,使用ON_COMMAND_RANGE将所有按钮映射到一个接收id作为参数的处理程序。
第三,在该处理程序中使用id来获取按钮文本。然后,您可以调用performTaskOnStringValue方法。