模态对话框在应用继续进行之前必须关闭。非模态对话框允许用户执行另外的操作而不必取消或删除该对话框。
1 模块对话框
// 创建对话框
CMyDlg mydlg(this);
// 显示对话框
UINT_PTR dlgRet = cmdParamDlg.DoModal();
if(dlgRet != IDOK)
销毁模块对话框由系统自动回收,我们不需要手动释放。
2 非模态对话框
CMyDlg * mydlg = new CMyDlg ;
if ( NULL != mydlg )
{
mydlg ->Create(IDD_DLG_PLUGIN_CONSOLE, this);
mydlg ->ShowWindow(SW_SHOW);
}
很显然,需要我们手动释放这个对话框的资源。
根据msdn上的说法:
我们需要重载CMyDlg 这个对话框中的两个函数 OnCancel() 和 PostNcDestroy()
void CMyDlg ::OnCancel()
{
// TODO: Add your specialized code here and/or call the base class
thi

本文详细介绍了在MFC中如何创建和管理模态及非模态对话框。模态对话框在DoModal()调用后自动销毁,而非模态对话框需手动释放,通过覆写OnCancel()和PostNcDestroy()确保资源正确回收。同时提到了非模态对话框的子窗口设置,包括风格、边框和标题栏的调整。
最低0.47元/天 解锁文章
333

被折叠的 条评论
为什么被折叠?



