看流星社区

 找回密码
 注册账号
查看: 2262|回复: 0

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

[复制链接]

该用户从未签到

发表于 2013-2-9 09:34:01 | 显示全部楼层 |阅读模式
模态对话框在应用继续进行之前必须关闭。非模态对话框允许用户执行另外的操作而不必取消或删除该对话框。

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()


}
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-5-4 02:17

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表