MFCでキャンセルボタンのフォーカスを外す方法は?

フォーカスを外すには、CButtonクラスのSetFocus()関数で他のコントロールにフォーカスを設定する必要があります。具体的な手順は次のとおりです。

  1. dialogクラスヘッダファイル(通常はXXXDlg.hのようなもの)を開く
  2. ダイアログクラスの宣言に、ボタンコントロールへのポインタを表すメンバー変数を追加します。例:CButton m_btnCancel;
  3. 在OnInitDialog()函数中添加代码,获取按钮控件的指针,例如:m_btnCancel.SubclassDlgItem(IDCANCEL, this);
  4. OnInitDialog()関数の末尾に、GetDlgItem(IDC_OTHER_CONTROL)->SetFocus()などの別のコントロールにフォーカスを設定するコードを追加します。

完全なサンプルコードを以下に示します。

// XXXDlg.h文件
class CXXXDlg : public CDialogEx
{
// ...
CButton m_btnCancel; // 按钮控件的指针
// ...
};
// XXXDlg.cpp文件
BOOL CXXXDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 获取按钮控件的指针
m_btnCancel.SubclassDlgItem(IDCANCEL, this);
// 将焦点设置到其它控件上
GetDlgItem(IDC_OTHER_CONTROL)->SetFocus();
return TRUE;
}

このコードでは、IDCANCELはキャンセルボタンのIDで、IDC_OTHER_CONTROLは他のコントロールのIDです。実際の設定にに応じてこれらのIDを変更してください。

bannerAds