将对话框作为子窗口,一定要记得将该对话框的属性设定为Child,不能使用Popup属性。之前在编写代码过程中,因为没有将对话框属性设定为Child,导致界面排列布局出现异常,没有按预定的效果显示。
当对话框作为子对话框时,比如作为CTabCtrl的子窗口时,要注意当焦点落在子对话框中时,按下ESC和Enter键后子对话框会自动关闭,是因为按下ESC键会自动执行CDialog::OnCancel接口从而将对话框关闭;而按下Enter键会自动执行CDialog::OnOK接口从而将对话框关闭。但有意思的是,虽然对话框关闭了,但是Tab页切换时,对话框有显示出来了。不是已经关闭了吗?怎么会有现实出来呢?呵呵,其实这时的子对话框是非模态的,关闭仅仅是掩藏,窗口并没有被销毁,所以切换回来时又显示出来了。
在实际的程序代码中,需要将按下ESC和Enter键窗口退出的问题给解决掉。可以在PretranslateMessage中截取ESC和Enter按键消息直接返回,也可以为OK和CANCEL按钮设定一个空的响应函数。