首页 > 解决方案 > MFC 按钮单击响应 Escape 键

问题描述

当打开对话框并按下转义键时,会触发按钮单击事件,对话框应该关闭而不是运行该事件。

我检查了记事本中的资源文件以查看发生了什么,我已经注释掉了消息映射中的按钮,问题就消失了。我不知道为什么会发生这种情况,并且在我的代码中找不到任何会导致这种情况发生的预设

这是资源文件中的对话框

IDD_SVGDLG DIALOGEX 0, 0, 675, 462 STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_SYSMENU FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN PUSHBUTTON "Export to File",IDC_SVYDLG_EXPORT,173,431,62,24 END

这是消息映射...

BEGIN_MESSAGE_MAP(CSurveyDlg, CDialogEx) ON_BN_CLICKED(IDC_SVYDLG_EXPORT, &CSurveyDlg::OnBnClickedExport) END_MESSAGE_MAP()

我希望对话框关闭,导出应该只在单击按钮时运行

标签: c++mfc

解决方案


如果IDC_SVYDLG_EXPORT定义为 2,则与 相同IDCANCEL,按钮会响应 Escape 键取消对话框。

从 1 到 7 的 ID 号是为标准按钮保留的,IDOK, IDCANCEL, ...

建议使用范围内的数字100进行0x7000控制。MFC 对话框编辑器可能会在此范围内生成自己的编号。

另请参阅ID 命名和编号约定


推荐阅读