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にする。