1

受け取ったstd::string値に応じて特定のアクションを実行する関数があります。

例えば:

void PerformTaskOnStringValue(std :: string);

これで、ボタンのクリック時にそれぞれのテキストを値として渡すことによってこの関数を呼び出す必要がある一連のリボンボタン(CMFCRibbonButton)ができました。

これらのボタンのIDを、ボタンIDを使用してメッセージマップマクロon_commandにマップしました。すべてのボタンは1つの共通IDを共有します-例-

ID_RIBBON_BUTTON_ID

メッセージマップは以下の通りです

ON_COMMAND(ID_RIBBON_BUTTON_ID、&MyClass :: performanceTaskOnStringValue);

ButtonClickのこの関数にパラメーターとしてボタンテキストを渡すにはどうすればよいですか?

4

2 に答える 2

5

すべてのボタンが同じIDを持っている場合、ボタンに異なる操作を実行させることはできません。コマンドハンドラは、どのボタンが押されたかを示しません。

ボタンに連続したIDを割り当てることができる場合は、代わりにON_COMMAND_RANGEを使用できます。これにより、ボタンのIDが渡されます。これをGetDlgItemTextに渡して、ボタンからテキストを取得できます。

于 2012-08-31T16:23:38.607 に答える
2

まず、各ボタンに連続した範囲で異なるIDを指定します。

次に、ON_COMMAND_RANGEを使用して、すべてのボタンを、パラメーターとしてIDを受け取る1つのハンドラーにマップします。

第三に、そのハンドラーでIDを使用してボタンのテキストを取得します。次に、performTaskOnStringValueメソッドを呼び出すことができます。

于 2012-08-31T16:21:59.807 に答える