MFCダイアログ間での値の受け渡し方
MFC のダイアログ間で値を渡すには、主に以下の方法が用いられます。
- コンストラクタの引数で値を渡す: 新しいダイアログオブジェクトを作成する際に、引数として必要な値をコンストラクタを使用して渡す。
例えば、ダイアログAでダイアログBを作成する場合、ダイアログBのコンストラクタにパラメータを追加し、ダイアログAでダイアログBオブジェクトを作成する際に必要な値を引き数として渡すようにできます。
- ダイアログクラスにパブリックなメンバー変数を定義し、値を渡す必要がある場所でそれらのメンバー変数を使用して値を渡す。
たとえば、ダイアログAでpublicなメンバ変数valueを定義すると、ダイアログBからダイアログAのオブジェクトを介してvalueの値を取得または設定できます。
- メッセージング: カスタムメッセージを使用したメッセージング、カスタムメッセージの登録およびダイアログクラスでの処理を行う。
例えば、ダイアログAでWM_MY_MESSAGEというカスタムメッセージを定義し、ダイアログBからSendMessage関数でWM_MY_MESSAGEのメッセージを送り、ダイアログAのメッセージ処理関数でこのメッセージを処理して渡された値を取得する。
値を上記の方法で渡す場合は、ダイアログオブジェクトの生存期間を保証する必要があることに注意し、ダイアログオブジェクトの生存期間終了後に渡された値が無効にならないようにしてください。ダイアログオブジェクトの生存期間は、メンバー変数を定義するか、動的に作成する方法を使用して管理できます。