|
チェックボックスの基本
今回はチェックボックスを実装します。まず、リソースエディタでチェックボックスを追加しましょう。今回はチェックボックス2つとボタン1つを追加しました。
次にチェックボックスのプロパティを設定します。ここではリソースIDとキャプションだけ設定し、他はデフォルトのままでOKです。

チェックボックスは、チェックされているか、されていないかの状態を取得、設定できれば十分ですね。これはDDXのvalue変数を使うと簡単に実装できます。
では、DDX変数を追加しましょう。チェックボックスを右クリックし、「変数の追加」を選択します。

アクセスはprivate、「コントロール変数」をチェックし、カテゴリにvalueを選択します。変数のデータ型はBOOLになります。チェックされているかされていないかの2値しかないのでBOOL型となっているわけです。
変数名はメンバ変数となるのでm_で始まる名前にしましょう。さらにDDXのvalue変数であることがわかるようにm_xvで始まる名前にすると分かりやすくなります。この辺は好みで決めましょう。

2つのチェックボックスに変数を追加し、さらにボタンにBN_CLICKEDのメッセージハンドラを追加します。(ボタンのイベントハンドラの追加方法は、「ボタンの基本」を見てください。)
ハンドラの内容は次のようにしました。UpdateData()でDDX変数の値を更新し、メッセージボックスにチェック状態のメッセージを表示します。
void CCheckDlg::OnBnClickedBtnChk()
{
CString str;
UpdateData();
if (m_xvChk1) str += _T("ボタン1");
if (m_xvChk2) str += _T("ボタン2");
if (str.IsEmpty()) str += _T("チェックされていません。");
else str += _T("がチェックされています。");
MessageBox(str);
}
|
逆に、チェックボックスのチェック状態を設定したい場合は、次のようにDDX変数にTRUEまたはFALSEをセットし、UpdateData(FALSE)を呼び出します。ここでは、OnInitDialog()でチェックボックス1だけチェック状態になるようにしてみました。
BOOL CCheckDlg::OnInitDialog()
{
CDialog::OnInitDialog();
SetIcon(m_hIcon, TRUE); // 大きいアイコンの設定
SetIcon(m_hIcon, FALSE); // 小さいアイコンの設定
// TODO: 初期化をここに追加します。
m_xvChk1 = TRUE;
UpdateData(FALSE);
return TRUE;
}
|
コンパイルして実行してみましょう。チェックボックス1だけがチェック状態になっています。チェック状態を変更し、ボタンを押すとメッセージボックスが表示されます。

|