« [VC2008MFC] コントロールを扱う変数 | トップページ | [VC2008MFC] クラスビュー »

2011年10月31日 (月)

[VC2008MFC] テキストボックスの利用

テキストボックス(Edit Control)は、CLRアプリのテキストボックスとは異なり、表示する文字列を保持するTextプロパティなどは持っていない。

Edit Controlで、文字列を保持するには、そのための変数をクラス内に追加し、変数とEdit Controlとを関連づけする必要がある。

以下は、Edit Control (IDC_EDIT1)に、変数「m_text」を関連づける例。

  1. Edit controlを右クリックし、「変数の追加」をクリック。
    Editctrltext01
  2. [カテゴリ]に、[Value]を選択、
    [変数の種類]に、[CString]を選択、
    [変数名]に、変数名を入力して、[完了]をクリックする。
    Editctrltext02

また、このように割り当てた変数は、そのまま利用しても、うまく機能しない。
Edit Control上のテキストを変数に取得する際には、UpdateData( true ) を、
逆に変数の値を、テキスト表示に反映させるには、UpdateData( false ) を呼び出す必要がある。

たとえば、ボタン(IDC_BUTTON1)クリック時に、テキストボックスの値をメッセージボックスで表示するには、次の通り。

void CEditCtrlDlg::OnBnClickedButton1()
{
	//EditControl上のテキストをm_textへ取得
	UpdateData( true );

	//メッセージボックスで表示
	AfxMessageBox( m_text );
}

なお、このように登録した変数は、3箇所に記述される。

  • 変数宣言 … ヘッダーファイル「プロジェクト名 Dlg.h」
  • コントロールとの関連づけ … 実装用ファイル「プロジェクト名 Dlg.cpp」の「DoDataExchange」メソッド内。
  • 変数の初期化 … 実装用ファイル「プロジェクト名 Dlg.cpp」のコンストラクタ(「C プロジェクト名 Dlg」メソッド)のコロン形式による初期化。

変数を削除するときなどは、すべて削除する。

ちなみに、ウィンドウテキストを直接取得、設定するGetWindowTextWメソッドやSetWindowTextWメソッドを利用する場合、UpdateDataメソッドは全く関係なくなる。

void CEditCtrlDlg::OnBnClickedButton1()
{
	//IDがIDC_EDIT1のコントロール(ウィンドウ)へのポインタを取得
	CEdit* pEdit = (CEdit*)GetDlgItem( IDC_EDIT1 );

	//EditControlのテキストを取得
	CString text;
	pEdit->GetWindowTextW( text );

	//メッセージボックスで表示
	AfxMessageBox( text );
}

関連記事:

« [VC2008MFC] コントロールを扱う変数 | トップページ | [VC2008MFC] クラスビュー »

プログラム・スクリプト」カテゴリの記事

2019年11月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

Amazonリンク

ダイビング写真(swf)

ブログ内検索

  • Google
    WWW を検索
    ブログ内を検索

リンク(いつもお世話さま)

  • ソニーストア
     iTunes Store(Japan)
    Just MyShop(ジャストシステム)
    ブックオフオンライン
無料ブログはココログ