您的位置:首页 > 其它

MFC 模块对话框和非模态对话框的创建与释放

2011-08-01 16:16 141 查看
模态对话框在应用继续进行之前必须关闭。非模态对话框允许用户执行另外的操作而不必取消或删除该对话框。

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

this->DestroyWindow();

//父类的方法不需要再执行

//CDialog::OnCancel();

}

void CMyDlg ::PostNcDestroy()

{

// TODO: Add your specialized code here and/or call the base class

delete this;

return; //直接return 不需要执行父类的PostNcDestroy()

}

设置子对话框的方法

dlg属性设为:

style child

取消 Title Bar

Border none
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: