MFCを使用するGUIプロジェクトがあります。
ウィジェット(コントロール)には、コンパイル時のメッセージマップテーブルでのメッセージ処理があります。
実行時にフォームに条件付きでコントロールを追加したいのですが、実行時にメッセージハンドラーをメッセージマップに追加する方法に固執しています。
実行時にメッセージハンドラをMFCメッセージマップに追加するにはどうすればよいですか?
使用すべき代替プロセスはありますか?
メッセージマップの詳細については、MFCメッセージマップのドキュメントを参照してください。
環境:
Windows7またはWindows10(アプリケーションは両方のOSで動作します)
Visual Studio 2017
追加したコントロールに指定する「ID」値の範囲がわかっている場合は(必要に応じて)、(通常は特定の単一のコントロールに使用されるON_CONTROL_RANGE
)ではなく、メッセージマップのエントリを使用できますON_CONTROL
。例えば、ボタンの範囲内のID持っているあなたのコントロールのいずれか(をクリックIDC_FIRST
スルーIDC_LAST
、次のメッセージマップエントリを追加することができました:
ON_CONTROL_RANGE(BN_CLICKED, IDC_FIRST, IDC_LAST, OnButtonClick)
メッセージハンドラーはOnButtonClick
、単一のコントロールの形式と非常に似ていUINT
ますが、メッセージを送信したコントロールのIDであるパラメーターを使用します。
void MyDialog::OnButtonClick(UINT nID)
{
int button_number = static_cast<int>(nID - IDC_FIRST);
// .. do something
return;
}
さらに詳しい説明や説明を求めてください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加