MFCプログラミング02 コントロールまとめ01

̃Gg[͂ĂȃubN}[Nɒlj

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


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です