コード ウィザードを使用した、コントロールへのタイプ セーフ アクセス
更新 : 2007 年 11 月
ダイアログ データ エクスチェンジ (DDX: Dialog Data Exchange) の機能に慣れている場合は、メンバ変数の追加ウィザード で Control プロパティを使用してタイプ セーフ アクセスを作成できます。この方法は、コード ウィザードを使用しないでコントロールを作成するよりも簡単です。
単純にコントロールの値にアクセスするだけの場合は、DDX を使用してください。コントロールの値でアクセス以外の操作をする必要がある場合は、メンバ変数の追加ウィザードを使用して、適切なクラスのメンバ変数をダイアログ クラスに追加します。このメンバ変数は、Control プロパティに結び付けます。
メンバ変数では、Value プロパティの代わりに Control プロパティを使用できます。Value プロパティは、コントロールから返されるデータの型 (CString や int など) を表します。Control プロパティは、型が MFC のコントロール クラスの 1 つ (CButton や CEdit など) であるデータ メンバを通じてコントロールに直接アクセスできます。
メモ : |
---|
特定のコントロールでは、必要に応じて Value プロパティを使用する複数のメンバ変数を設定できますが、Control プロパティを使用するメンバ変数は 1 つしか設定できません。コントロールに割り当てることができるのは 1 つの MFC オブジェクトだけです。なぜなら、コントロールやほかのウィンドウに複数のオブジェクトがアタッチされると、メッセージ マップが不明確になるためです。 |
このオブジェクトを使用すると、コントロール オブジェクトのどのメンバ関数でも呼び出すことができます。このような呼び出しは、ダイアログ ボックスのコントロールに影響します。たとえば、CButton 型の変数 m_Checkbox で表されるチェック ボックス コントロールの場合は、次のように呼び出すことができます。
m_Checkbox.SetCheck(BST_CHECKED);
このメンバ変数 m_Checkbox は、「コード ウィザードを使用しない、コントロールへのタイプ セーフ アクセス」で示されている GetMyCheckbox メンバ関数と同じ役割を果たします。自動チェック ボックスではない場合は、ボタンがクリックされたときの BN_CLICKED コントロール通知メッセージを処理するハンドラがダイアログ クラスで必要となります。
コントロールの詳細については、「コントロール」を参照してください。