我知道在按下 Enter
或 Esc
键时阻止 MFC 对话框关闭的一种方法,但我想了解该过程的更多细节以及所有常见的替代方法。
提前感谢您的帮助。
原文由 Laxman Sahni 发布,翻译遵循 CC BY-SA 4.0 许可协议
我知道在按下 Enter
或 Esc
键时阻止 MFC 对话框关闭的一种方法,但我想了解该过程的更多细节以及所有常见的替代方法。
提前感谢您的帮助。
原文由 Laxman Sahni 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
当用户在对话框中按下 Enter 键时,可能会发生两种情况:
CDialog::SetDefID()
)。然后将带有此控件 ID 的 WM_COMMAND 发送到对话框。对于第一个选项,默认控件的 ID 可能等于 IDOK。然后结果将与第二个选项中的结果相同。
默认情况下,类
CDialog
具有WM_COMMAND(IDOK)
的处理程序,即调用CDialog::OnOk()
,这是一个虚函数,默认情况下它调用EndDialog(IDOK)
关闭对话框。因此,如果您想避免关闭对话框,请执行以下操作之一。
IDOK
以外的其他控件。WM_COMMAND(IDOK)
不调用EndDialog()
。CDialog::OnOk()
并且不调用基本实现。关于 IDCANCEL,它是相似的,但没有等价的
SetDefID()
并且 ESC 键是硬编码的。所以为了避免对话框被关闭:WM_COMMAND(IDCANCEL)
不调用EndDialog()
。CDialog::OnCancel()
并且不调用基本实现。