« [VC2008MFC] ボタンの利用 | トップページ | [VC2008MFC] テキストボックスの利用 »

2011年10月31日 (月)

[VC2008MFC] コントロールを扱う変数

CLRのアプリの場合、フォームのデザイン画面で、コントロールの(Name)プロパティに指定した名前が、そのまま、コントロールのインスタンス変数として利用できた。

MFCの場合、2つの方法がある。

  • あらかじめ、コントロールに変数を関連づけしておく。
  • コントロールのIDから、その都度、コントロールへのポインタを取得する。

[方法1] あらかじめ、コントロールに変数を関連づけしておく

以下は、ボタンIDC_BUTTON1に「m_btn1」変数を割り当てる例。

  1. コントロールを右クリックして、変数の追加。
    Ctrlvar01
  2. [変数名]に、変数名を入力して、[完了]ボタン。
    Ctrlvar02w
  3. そして、たとえば、クリック時に、ボタン上の文字を
    「クリック」←→「くりっく」と切り替えるコード。
    void CBtnCtrlDlg::OnBnClickedButton1()
    {
    	//ボタン上の文字の取得
    	CString btnText;
    	m_btn1.GetWindowTextW( btnText );
    
    	//取得したテキストによって、振り分け
    	if ( btnText == _T("クリック") ) {
    		m_btn1.SetWindowTextW( _T("くりっく") );
    	} else {
    		m_btn1.SetWindowTextW( _T("クリック") );
    	}
    }
    Ctrlvar03 Ctrlvar04

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

  • 変数宣言 … ヘッダーファイル「プロジェクト名 Dlg.h」
  • コントロールとの関連づけ … 実装用ファイル「プロジェクト名 Dlg.cpp」の「DoDataExchange」メソッド内。

変数を削除するときなどは、両者を削除する。

[方法2] その都度、コントロールへのポインタを取得する

また、その都度、コントロールのIDから、コントロールへのポインタを取得して、操作することも可能。この場合、あらかじめ、変数を割り当てておく必要はない。

void CBtnCtrlDlg::OnBnClickedButton1()
{
	//IDがIDC_BUTTON1のウィンドウ(コントロール)へのポインタを取得
	CButton *pBtn1 = (CButton*)GetDlgItem(IDC_BUTTON1);

	//ボタン上の文字の取得
	CString btnText;
	//m_btn1.GetWindowTextW( btnText );
	pBtn1->GetWindowTextW( btnText );

	//取得した文字によって、振り分け
	if ( btnText == _T("クリック") ) {
		//m_btn1.SetWindowTextW( _T("くりっく") );
		pBtn1->SetWindowTextW( _T("くりっく") );
	} else {
		//m_btn1.SetWindowTextW( _T("クリック") );
		pBtn1->SetWindowTextW( _T("クリック") );
	}
}

関連記事:

« [VC2008MFC] ボタンの利用 | トップページ | [VC2008MFC] テキストボックスの利用 »

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

2021年6月
    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(ジャストシステム)
    ブックオフオンライン
無料ブログはココログ