Mfc-controls-management
MFC-コントロール管理
MFCアプリケーションでは、アプリケーションに視覚的にコントロールを追加した後、コード内でコントロールを参照する場合、そのコントロールに基づいて、または関連付けられた変数を宣言できます。 MFCライブラリを使用すると、アプリケーションで使用される一部のコントロールの2種類の変数を値またはコントロール変数として宣言できます。
- 1つの変数は、コントロールに保存されている情報に使用されます。これは、*コントロール変数/インスタンス*とも呼ばれます。
- 他の変数は Control Value Variable として知られています。 ユーザーは、この変数を使用して、そのコントロールに対して何らかのアクションを実行できます。
制御変数/インスタンス
制御変数は、制御を管理するクラスに基づく変数です。 たとえば、ボタンコントロールはCButtonクラスに基づいています。
これらの概念を実際のプログラミングで見るために、MFCダイアログベースのプロジェクトMFCControlManagementを作成しましょう。
プロジェクトが作成されると、デザイナーウィンドウに次のダイアログボックスが表示されます。
- ステップ1 *-次のスナップショットに示すように、TODO行を削除し、1つのチェックボックスと1つの編集コントロールをドラッグします。 チェックボックスのキャプションを[制御を有効にする]に変更します。
- ステップ2 *-チェックボックスを右クリックします。
- ステップ3 *-[変数の追加]を選択します。
- ステップ4 *-メンバー変数の追加ウィザードが表示されます。
このダイアログボックスでさまざまなオプションを選択できます。 チェックボックスの場合、変数タイプはCButtonです。 このダイアログボックスではデフォルトで選択されています。
同様に、コントロールIDもデフォルトで選択されています。カテゴリコンボボックスで[コントロール]を選択し、[変数名]編集ボックスにm_enableDisableCheckと入力して[完了]をクリックする必要があります。
- ステップ5 *-同様に、次のスナップショットに示されている設定で編集コントロールのコントロール変数を追加します。
ダイアログクラスのヘッダーファイルを確認します。 新しい変数が追加されたことがわかります。
制御値変数
コントロールに対して宣言できる別のタイプの変数は、値変数です。 すべてのコントロールが値変数を提供するわけではありません。
- 値変数は、参照するコントロールに格納されている値のタイプを処理できる必要があります。
- たとえば、テキストベースのコントロールはテキストの処理に使用されるため、テキストベースのデータ型を宣言できます。 通常、これはCString変数になります。
チェックボックスと編集制御のためにこのタイプの変数を見てみましょう。
- ステップ1 *-チェックボックスを右クリックして、変数の追加を選択します。
- ステップ2 *-変数のタイプはBOOLです。 [カテゴリ]ドロップダウンリストから[値]を選択します。
- ステップ3 *-[完了]をクリックして続行します。
- ステップ4 *-同様に、次のスナップショットに示すように、編集コントロールの値変数を設定で追加します。
- ステップ5 *-変数タイプにCString、変数名フィールドにm_editControlValと入力します。
- ステップ6 *-これらの変数がヘッダーファイルに追加されたことを確認できます。
イベントハンドラーの制御
コントロールをアプリケーションに追加した後、視覚的に追加するか動的に作成するかに関係なく、ユーザーがコントロールに対して実行できるアクションの処理方法も決定します。
- 既にクラスに関連付けられているプロジェクトダイアログボックスの場合、イベントハンドラーを作成するときにいくつかのショートカットを利用できます。
- デフォルトのコントロール通知イベントまたは適用可能なWindowsメッセージのいずれかのハンドラーをすばやく作成できます。
チェックボックスのイベントハンドラーを追加した同じ例を見てみましょう。
- ステップ1 *-通知イベントを処理するコントロールを右クリックします。
- ステップ2 *-ショートカットメニューで、[イベントハンドラーの追加]をクリックして、イベントハンドラーウィザードを表示します。
- ステップ3 *-[メッセージタイプ]ボックスでイベントを選択して、[クラス]リストボックスで選択したクラスに追加します。
- ステップ4 *-[関数ハンドラー名]ボックスでデフォルト名を受け入れるか、選択した名前を入力します。
- ステップ5 *-[追加と編集]をクリックして、イベントハンドラーを追加します。
- ステップ6 *-CMFCControlManagementDlg.cppファイルの最後に次のイベントが追加されました。
コントロール管理
これまで、コントロールをアプリケーションに追加する方法を見てきました。 ユーザーの要件に応じてこれらのコントロールを管理する方法について説明します。 特定のイベントハンドラーで制御変数/インスタンスを使用できます。
- ステップ1 *-次の例を見てみましょう。 ここでは、チェックボックスがオン/オフになったときに編集コントロールを有効/無効にします。
- ステップ2 *-チェックボックスクリックイベントハンドラーを追加しました。 ここに実装があります-
- *ステップ3 *-ダイアログが作成されたら、CMFCControlManagementDlg
- OnInitDialog()に次のコードを追加する必要があります。 これにより、これらのコントロールが管理されます。
- ステップ4 *-CMFCControlManagementDlg.cppファイルの完全な実装です。
- ステップ5 *-上記のコードをコンパイルして実行すると、次の出力が表示されます。 デフォルトでは、チェックボックスはオフになっています。 これにより、編集コントロールも無効になります。
- ステップ6 *-[コントロールを有効にする]チェックボックスをオンにします。 これにより、編集コントロールが自動的に有効になります。