次にフォーカスを得るコントロールを取得する

例えばダイアログ内のあるコントロール(仮にIDC_BUTTON1というIDを持つボタンであるとする)にフォーカスがあるとする。 そのコントロールがフォーカスを失った際、次にどのコントロールがフォーカスを得たかによって処理を振り分ける方法は、以下のとおり。

  1. CButtonクラスの派生クラス(ここではCMyButtonとする)を作成する。
  2. ClassWizardを使用し、IDC_BUTTON1にCMyButton型変数m_Button1を割り当てる。
  3. ClassWizardでWM_KILLFOCUSメッセージのハンドラCMyButton::OnKillFocus関数を作成する。
  4. CMyButton::OnKillFocus関数内での処理は以下のとおり。
    void CMyButton::OnKillFocus(CWnd* pNewWnd) 
    {
    	CButton::OnKillFocus(pNewWnd);
    	
    	// TODO: この位置にメッセージ ハンドラ用のコードを追加してください
    	
    	// pNewWndには、次にフォーカスを得たコントロールへのポインタが格納されている
    	if( pNewWnd == GetDlgItem(IDOK) ) {  // OKボタンの場合
    		……
    	}
    	else if ……
    	……
    }
    

目次へ