其实按下ESC对话框会关闭,就是因为你的对话框中有一个按钮的ID为IDCANCEL,按下ESC按钮默认就是相当于IDCANCEL按钮被按下,而它会导致CDialog::OnCancel()被调用(在程序里你看不到OnCancel()函数,除非显式映射该按钮按下消息),所以如果想避免这种情况发生,就应该屏蔽OnCancel()函数,防止在YourDialog::OnCancel()中调用CDialog::OnCancel()。具体做法如下:先找到对话框中ID为IDCANCEL的按钮(如果没有则自己添加一个临时的按钮,把它的ID改为IDCANCEL),然后在ClassWizard中显式映射按钮被按下的消息,这样ClassWizard会为你做出一个YourDialog::OnCancel()的框架,在该函数体内,删除CDialog::OnCancel()语句,(就是让它成为一个空函数)这样即可。同样ID为IDOK的按钮在回车键按下时也会导致对话框退出,仿此照做即可。