[VC2008MFC] コントロールを扱う変数
CLRのアプリの場合、フォームのデザイン画面で、コントロールの(Name)プロパティに指定した名前が、そのまま、コントロールのインスタンス変数として利用できた。
MFCの場合、2つの方法がある。
- あらかじめ、コントロールに変数を関連づけしておく。
- コントロールのIDから、その都度、コントロールへのポインタを取得する。
[方法1] あらかじめ、コントロールに変数を関連づけしておく
以下は、ボタンIDC_BUTTON1に「m_btn1」変数を割り当てる例。
- コントロールを右クリックして、変数の追加。
- [変数名]に、変数名を入力して、[完了]ボタン。
- そして、たとえば、クリック時に、ボタン上の文字を
「クリック」←→「くりっく」と切り替えるコード。void CBtnCtrlDlg::OnBnClickedButton1() { //ボタン上の文字の取得 CString btnText; m_btn1.GetWindowTextW( btnText ); //取得したテキストによって、振り分け if ( btnText == _T("クリック") ) { m_btn1.SetWindowTextW( _T("くりっく") ); } else { m_btn1.SetWindowTextW( _T("クリック") ); } }
なお、このように登録した変数は、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] ボタンの利用 (2011-10-31)
« [VC2008MFC] ボタンの利用 | トップページ | [VC2008MFC] テキストボックスの利用 »
「プログラム・スクリプト」カテゴリの記事
- [CakePHP1.3] 秀和システムの本 メモ5 - モデルクラスのメンバ変数とコールバック(2012.06.04)
- [CakePHP1.3] 秀和システムの本 メモ4 - データベースの利用1(2012.05.31)
- [CakePHP1.3] 秀和システムの本 メモ3 - Formヘルパー(2012.05.30)
- [CakePHP1.3] CakePHP 1.3 によるWebアプリケーション開発(秀和システム) のメモ2(2012.05.22)
- [CakePHP1.3] CakePHP 1.3 によるWebアプリケーション開発(秀和システム) のメモ(2012.05.18)