非模态对话框的消除问题

mark521 2004-12-28 05:19:06
我在视图中通过调用OCREATE产生非模态对话框。消除对话框后,再次想产生这个对话框,程序就错误了,不知道什么问题啊?
代码如下:

CColorDlg *p_ColorDlg = new CColorDlg;//定义为全局变量
void CPhototryView::OnMenuColor()
{
// TODO: Add your command handler code here
p_ColorDlg->Create(IDD_COLOR,this);
p_ColorDlg->ShowWindow(SW_SHOW);
}

void CColorDlg::OnClose()
{
// TODO: Add your message handler code here and/or call default
CDialog::OnClose();
DestroyWindow ();
delete this;
p_ColorDlg = NULL;
}
...全文
102 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
LCBoy 2004-12-29
  • 打赏
  • 举报
回复
在初始化里Create了,其他地方show 和hide就好了.
因为你那样子会重复create的,
mark521 2004-12-29
  • 打赏
  • 举报
回复
我把delete this这句去掉,还是不可以啊。
问题就出在我第二次调用 p_ColorDlg->Create(IDD_COLOR,this);
的时候。
“unhandled exception int myview.exe : ox500000 ”
是不是p_ColorDlg这个全局变量的问题啊
bluestone 2004-12-28
  • 打赏
  • 举报
回复
delete this将全局指针指向的资源释放,再次使用的时候,请别忘了再次申请空间。
bluestone 2004-12-28
  • 打赏
  • 举报
回复
我看错了,以上回答请忽略,很抱歉。
bluestone 2004-12-28
  • 打赏
  • 举报
回复
void CColorDlg::OnClose()
{
// TODO: Add your message handler code here and/or call default
CDialog::OnClose();
DestroyWindow ();
delete this;
p_ColorDlg = NULL;
}

p_ColorDlg = NULL;这句话怎么来的呢?
是不是将对话框的指针传进来了,要是传的话,请传2级指针,这样才能真正的将指向对话框的指针清空,是吧

void CColorDlg::OnClose()
{
// TODO: Add your message handler code here and/or call default
CDialog::OnClose();
DestroyWindow ();
delete this;
*pp_ColorDlg = NULL; // 在创建对话框的时候,传进来的&p_ColorDlg
}

好运!
LCBoy 2004-12-28
  • 打赏
  • 举报
回复
何不在初始化中Create,在OnDestroy中delete,其他的地方 show 和 hide就好了
oyljerry 2004-12-28
  • 打赏
  • 举报
回复
delete this这里不是很好
I_Love_CPP 2004-12-28
  • 打赏
  • 举报
回复
我想,问题出在这儿:
delete this;
你已经把分配的内存free了。

我知道你是不想让内存泄露,但我认为既然你的
CColorDlg *p_ColorDlg是全局变量,
何不
CColorDlg clrDlg;

你认为呢?

16,467

社区成员

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

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

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