vs 2005 一个很莱的问题,请大虾小虾来喷我。。哈

maya8maya85 2015-11-07 11:26:25
就是一个点击按钮,弹出一个窗口而已。
什么右击,新建类都搞好了,测试也可以弹出窗口。
不过,问题来了,请看代码
void CclickupplayerDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
Zplayer *pDlg = new Zplayer;
pDlg->Create(IDD_DIALOG_PLAYER,this);
pDlg->ShowWindow(SW_SHOW);
}

这个new,怎么delete呢??????在哪里delete呢?如果直接在下面delete,那窗口只是闪了一下就没了,行不通。
应该是我在新弹窗口关闭,或点某个按扭的时候,关掉新窗口并delete这个new,该怎么做呢?
...全文
148 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
worldy 2015-11-14
  • 打赏
  • 举报
回复
void CclickupplayerDlg::OnBnClickedOk() { // TODO: 在此添加控件通知处理程序代码 Zplayer *pDlg = new Zplayer; pDlg->Create(IDD_DIALOG_PLAYER,this); pDlg->ShowWindow(SW_SHOW); } 你这个代码逻辑本身就有问题,应该使用 pDlg->DoModal(); delete pDlg; 确实需要这样的话,在某个合适的位置使用 delete this;
dragoo1 2015-11-12
  • 打赏
  • 举报
回复
赞成zgl7903 //非模态对话框中: void CTestDlg::OnCancel() { DestroyWindow(); } void CTestDlg::PostNcDestroy() { CDialog::PostNcDestroy(); //先调用父类的 delete this; }
qq770104940 2015-11-12
  • 打赏
  • 举报
回复
在close()函数或者在本类的析构函数里面进行delete即可
zhouxiaofeng1021 2015-11-11
  • 打赏
  • 举报
回复
void CclickupplayerDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
Zplayer *pDlg = new Zplayer;
pDlg->Create(IDD_DIALOG_PLAYER,this);
pDlg->ShowWindow(SW_SHOW);
}

我觉得 Zplayer *pDlg 这个是局部指针 你把这个改为 Zplayer *pDlg 类成员变量就可以了
或者
Zplayerp Dlg;
Dlg,Domal(); //单词可能打错 大概的意思你懂得
Eleven 2015-11-11
  • 打赏
  • 举报
回复
把你的Zplayer *pDlg定义为类的成员变量。
rxguoblp 2015-11-08
  • 打赏
  • 举报
回复
将Zplayer *pDlg声明成CclickupplayerDlg类的成员变量,然后在 CclickupplayerDlg ::OnCancel()函数中释放。 void CclickupplayerDlg ::OnCancel() { if(pDlg != NULL) { delete pDlg ; pDlg = NULL; } CDialog::OnCancel(); }
zgl7903 2015-11-07
  • 打赏
  • 举报
回复
建筑师 2015-11-07
  • 打赏
  • 举报
回复
不delete不行吗,执行完了不就完了吗
mfmfmmf1 2015-11-07
  • 打赏
  • 举报
回复
一定要在堆内申请的话 指针当然要是成员变量 正规的写法是 NEWDlg* p=(NEWDlg*)RUNTIME_CLASS(NEWDlg)->CreateObject(); p->LoadFrame(IDD_DIALOG1); p->ShowWindow(TRUE);
ArthurKingYs 2015-11-07
  • 打赏
  • 举报
回复
继承窗口 调用关闭方法
paschen 2015-11-07
  • 打赏
  • 举报
回复
不知你Zplayer是什么,可以将指针保存在你当前的类的成员变量中,在对象析构时进行删除
战在春秋 2015-11-07
  • 打赏
  • 举报
回复
您代码中的Zplayer 应该是继承自CDialog吧? 1.关闭对话框
void Zplayer ::OnCancel()
      {
          DestroyWindow();//响应Cancel按钮或者在需要关闭对话框的地方调用DestroyWindow();
      }
2.如果你需要做一些清理工作,可以重载PostNcDestroy()函数 virtual void Zplayer ::PostNcDestroy() { delete this; //Do Other things! }

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧