|
DDXの基本2
さて、前回概要を説明したDDXですが、もう少し補足説明をしておきましょう。まず、DDX変数には2つのタイプがあります。1つはvalue型、もう一つはcontrol型と呼ばれるものです。
前回のサンプルプログラムで使った、チェックボックスのON/OFF状態や、エディットボックスの中のテキストを直接データとして操作するようなDDX変数は、value(値)型です。これは、チェックボックスならBOOL、エディットボックスならCStringというように、コントロールごとにある程度決められたデータ型をとります。(実際はいくつかのデータ型から選択できます。)
これに対して、コントロールをデータではなく、関数を通して操作したい場合もあります。このような時はcontrol型のDDX変数を使います。これはチェックボックスやラジオボタンならCButton、エディットボックスならCEditというように、決められたデータ型をとります。このクラスの関数を通してコントロールを操作することができます。
もう一つ、UpdateData()関数について補足しておきます。UpdateData(TRUE)を呼ぶと、データ(メンバ変数)が更新されます。UpdateData(FALSE)を呼ぶと、ダイアログ上のコントロールが更新されます。(デフォルト引数はTRUEになるので、UpdateData()のみでもデータが更新されます。)
このUpdateData()という関数は、ダイアログのすべてのデータ(またはコントロール)を更新します。特定のデータやコントロールだけ更新するということはできません。
典型的な使い方は、OnInitDialog()でデータに初期値を代入し、UpdateData(FALSE)を呼んでGUIを更新し、OnOk()ではUpdateData(TRUE)を呼び出し、ユーザが入力した値を読み取るという使い方です。"OK"ボタンを押したときは、ダイアログ上のすべての変更を読み取るのが普通なので、UpdateData()関数の使用が適していますよね。
では、実際の変数の追加方法を見てみましょう。Visual C++ 6.0まではクラスウィザードというものがありましたが、Visual
Studio .netからはクラスウィザードはなくなりました。DDX変数を追加するには、リソースエディタ上でコントロールを右クリックし、「変数の追加」を選択します。

すると、メンバ変数の追加ウィザードが現れるので、「コントロール変数」をチェックします。「カテゴリ」にvalueかcontrolを選択し、データ型を選択し、変数名を入力して「完了」を押します。

|