|
エディットボックスの基本
今回はエディットボックスの基本的な使い方を見てみましょう。まず、リソースエディタでエディットボックスを追加します。今回はエディットボックス2つとボタン2つを追加しました。
読み取りボタンを押すと、エディットボックスから文字列を読み取り、セットボタンを押すとエディットボックスに文字列を設定することを考えてみましょう。
また、2つのエディットボックスのうち、片方は読み取り専用にしてみます。この読み取り専用のエディットボックスというのは、何かの値を表示するときなどにわりとよく使います。
では、エディットボックスのプロパティを設定します。ここではリソースIDを設定し、片方のエディットボックスは「Read
Only」をTrueにします。これで読み取り専用になります。他はデフォルトのままでOKです。

エディットボックスに必要な情報は、中に表示する文字列ですね。これはDDXのvalue変数で簡単に実装できます。では、DDX変数を追加しましょう。エディットボックスを右クリックし、「変数の追加」を選択します。

アクセスはprivate、「コントロール変数」をチェックし、カテゴリにvalueを選択します。変数のデータ型は文字列なのでCStringにします。
変数名はメンバ変数となるのでm_で始まる名前にしましょう。さらにDDXのvalue変数であることがわかるようにm_xvで始まる名前にすると分かりやすくなります。この辺は好みで決めましょう。
また、エディットボックスに入力できる文字数を制限することができます。これはDDV(Dialog Data Validation)というMFCの機構が使われます。ここでは10文字に制限してみました。

2つのエディットボックスに変数を追加し、さらにボタンにBN_CLICKEDのメッセージハンドラを追加します。(ボタンのイベントハンドラの追加方法は、「ボタンの基本」を見てください。)
ハンドラの内容は次のようにしました。読み取り処理ではUpdateData()でDDX変数の値を更新し、メッセージボックスに読み取った文字列を表示します。
逆に、エディットボックスに文字列を設定したい場合は、DDX変数に文字列を代入し、UpdateData(FALSE)を呼び出します。
// "読み取り"ボタン押下
void CEditDlg::OnBnClickedBtnGet()
{
UpdateData();
MessageBox(m_xvEditW);
}
// "セット"ボタン押下
void CEditDlg::OnBnClickedBtnSet()
{
m_xvEditW = _T("文字列");
UpdateData(FALSE);
}
|
また、OnInitDialog()で、読み取り専用のエディットボックスに文字列を設定しています。
BOOL CEditDlg::OnInitDialog()
{
CDialog::OnInitDialog();
SetIcon(m_hIcon, TRUE); // 大きいアイコンの設定
SetIcon(m_hIcon, FALSE); // 小さいアイコンの設定
// TODO: 初期化をここに追加します。
m_xvEditRo = _T("読み取り専用");
UpdateData(FALSE);
return TRUE;
}
|
コンパイルして実行してみましょう。"読み取り"ボタンを押すとエディットボックスに入力した文字列がメッセージボックスに表示されます。また、エディットボックスには10文字までしか入力できないことがわかります。

|