1

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

例如:

无效 performTaskOnStringValue(std::string);

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

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

ID_RIBBON_BUTTON_ID

消息映射如下

ON_COMMAND(ID_RIBBON_BUTTON_ID, &MyClass::performTaskOnStringValue);

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

4

2 回答 2

5

当按钮都具有相同的 ID 时,您不能让按钮执行不同的操作。命令处理程序没有得到按下哪个按钮的指示。

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

于 2012-08-31T16:23:38.607 回答
2

首先,在连续范围内为每个按钮分配不同的 id。

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

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

于 2012-08-31T16:21:59.807 回答