MFCプログラミングシリーズ
今回から主要なコントロールの使い方についてまとめます。
毎回5つほど掲載する予定です。
・共通
・ボタン
・エディットボックス
・スタティックテキスト
・チェックボックス
・ラジオボタン
共通
■コントロールを指すポインタの取得
コントロールのクラス名* ポインタ名 = (コントロールのクラス名*)GetDlgItem(コントロールのID); ポインタ名->コントロールの持つメソッド(引数);//何らかの処理
コントロール変数を設定している場合は、
コントロール変数.コントロールの持つメソッド(引数);//何らかの処理
■タブオーダー
書式-タブオーダーにて設定する。
ボタン
コントロールを指すポインタの取得
CButton* myBtn1 = (CButton*)GetDlgItem(IDC_BUTTON1); myBtn1->SetWindowText("この文字列をボタン名にします");
なお、後述するチェックボックスやラジオボタンも
CButtonクラスとして取得します。
エディットボックス
コントロールを指すポインタの取得
CEdit* myEdit1 = (CEdit*)GetDlgItem(IDC_EDIT1); CString ss; myEdit1->GetWindowText(ss); //文字列をssに格納 myEdit1->SetWindowText("この文字列を表示させます"); myEdit1->SetWindowText(""); //エディットボックスのクリア myEdit1->SetReadOnly(TRUE);//書込み不可 myEdit1->SetReadOnly(FALSE);//書込み可
・改行可能なエディットボックスにするには
MultiLine | True |
WantReturn | True //改行が可能となる |
Auto VScroll | True //枠におさまらない場合はスクロール可能 |
Auto HScroll | False |
Vertical Scroll | True //縦スクロールバー表示 |
コードで改行を表現する場合はrnとのこと。
myEdit1->SetWindowText("改行rnします");
スタティックテキスト
コントロールを指すポインタの取得
CStatic* myStatic = (CStatic*)GetDlgItem(IDC_STATIC1); myStatic->SetWindowText("この文字列を表示させます");
注)
スタティックテキストを複数配置してもIDは全てIDC_STATICらしく、
コントロール変数の設定や、上記コードでのポインタ取得ができない。
自分でIDを変更してあげる必要あり。
チェックボックス
CButton* myChkbox1 = (CStatic*)GetDlgItem(IDC_CHECK1); myChkbox1->SetCheck(BST_CHECKED); myChkbox1->SetCheck(BST_UNCHECKED); if(myChkbox1->GetCheck() == BST_CHECKED){ /* チェックされてたら */ }else{ /* チェックされてなかったら */ } if(myChkbox1->GetCheck() == BST_INDETERMINATE){ /* 中間状態だったら */ /* Tri-stateプロパティをTrueにする */ /* ことで中間状態が可能となる */ } /* ちなみに以下の値として定義されている */ /* BST_UNCHECKED : 0 */ /* BST_CHECKED : 1 */ /* BST_INDETERMINATE : 2 */
ラジオボタン
/* ラジオボタンのコントロール変数には癖があるので */ /* 下記のようにポインタを取得した方が無難とのこと */ CButton* myRadio1 = (CStatic*)GetDlgItem(IDC_RADIO1); myRadio1->SetCheck(BST_CHECKED); myRadio1->SetCheck(BST_UNCHECKED); if(myRadio1->GetCheck() == BST_CHECKED){ /* チェックされてたら */ }else{ /* チェックされてなかったら */ }
■プログラム起動時の処理
・初期状態でチェックされておくラジオボタンをチェックしておく
ラジオボタンは起動時はチェックされていないため、
OnInitDialog()関数内でチェックするコードを入れておく必要がある。
(ダイアログベースでないばあいは、OnInitialUpdate()関数内)
■複数設置したばあいのグループ分けの方法
・視覚的な分け方
グループボックスコントロールを、ラジオボタンを囲むように配置すればよい
・機能の分け方
タブオーダー値がグループごとに並ぶようにする。
グループの先頭のコントロールのGroupプロパティのみをTrueにする。