模态对话框选择if(IDCANCEL == dlg.DoModal())后怎么关闭它

nabasasun 2013-02-07 01:06:11
我没有写if(IDCANCEL == dlg.DoModal()) 只写了个
if(IDOK == dlg.DoModal())
结果报错了
...全文
691 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
MSIDEVS.NET —— Microsoft Integrated Development Environment Visual Studio .NET 提供程序员在使用Microsoft Visual Studio .NET进行软件开发过程中所需的源代码
nabasasun 2013-02-07
  • 打赏
  • 举报
回复
找到了,我擅自释放了一个指针导致的
Eleven 2013-02-07
  • 打赏
  • 举报
回复
还是没有贴关键的代码~ Data: <, x * > 2C FB BF 78 05 00 00 00 2A 00 00 00 01 00 00 00 内存泄露的地方,你双击一下看看指在哪行代码?
nabasasun 2013-02-07
  • 打赏
  • 举报
回复
引用 6 楼 VisualEleven 的回复:
引用 5 楼 nabasasun 的回复:引用 4 楼 djj315 的回复: 这个内存泄露跟模态对话框没关系,你在对话框代码中进行了动态内存的申请动作,所以你必须自己释放掉动态申请的内存,才不会报内存泄露的。 我不记得我申请了啥内存啊,我只是定义几个控件变量而已。 然后在Cpen的构造函数中初始化 CpenView::CpenView() { Cmydial……
这是对话框的里面,你看看 #include "stdafx.h" #include "Cpen.h" #include "mydialog.h" // Cmydialog 对话框 IMPLEMENT_DYNAMIC(Cmydialog, CDialog) Cmydialog::Cmydialog(CWnd* pParent /*=NULL*/) : CDialog(Cmydialog::IDD, pParent) { } Cmydialog::~Cmydialog() { } void Cmydialog::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX,IDC_EDIT1, name); DDX_Text(pDX, IDC_EDIT2, width); DDX_Text(pDX, IDC_EDIT3, height); DDX_Text(pDX, IDC_EDIT4, dext); DDX_Control(pDX, IDC_COMBO1, box); } BEGIN_MESSAGE_MAP(Cmydialog, CDialog) END_MESSAGE_MAP() // Cmydialog 消息处理程序
Eleven 2013-02-07
  • 打赏
  • 举报
回复
引用 5 楼 nabasasun 的回复:
引用 4 楼 djj315 的回复: 这个内存泄露跟模态对话框没关系,你在对话框代码中进行了动态内存的申请动作,所以你必须自己释放掉动态申请的内存,才不会报内存泄露的。 我不记得我申请了啥内存啊,我只是定义几个控件变量而已。 然后在Cpen的构造函数中初始化 CpenView::CpenView() { Cmydialog backnew; backnew.width=400;……
那要看你的Cmydialog 类中写了些什么?是否有设计内存分配的调用?
nabasasun 2013-02-07
  • 打赏
  • 举报
回复
引用 4 楼 djj315 的回复:
这个内存泄露跟模态对话框没关系,你在对话框代码中进行了动态内存的申请动作,所以你必须自己释放掉动态申请的内存,才不会报内存泄露的。
我不记得我申请了啥内存啊,我只是定义几个控件变量而已。 然后在Cpen的构造函数中初始化 CpenView::CpenView() { Cmydialog backnew; backnew.width=400; backnew.height=500; backnew.dext=2; if(IDOK==backnew.DoModal()) { m_width=backnew.width; m_height=backnew.height; } }
Simao 2013-02-07
  • 打赏
  • 举报
回复
这个内存泄露跟模态对话框没关系,你在对话框代码中进行了动态内存的申请动作,所以你必须自己释放掉动态申请的内存,才不会报内存泄露的。
Eleven 2013-02-07
  • 打赏
  • 举报
回复
囧,那跟DoModal()有什么关系,你要检查一下你分配内存资源的地方啊~
nabasasun 2013-02-07
  • 打赏
  • 举报
回复
引用 1 楼 VisualEleven 的回复:
DoModal()以后就会关闭当前模态对话框了
确实关闭了,结果也内存泄漏了 Detected memory leaks! Dumping objects -> f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {415} normal block at 0x01410228, 50 bytes long. Data: <, x > 2C FB BF 78 10 00 00 00 10 00 00 00 01 00 00 00 f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\plex.cpp(29) : {412} normal block at 0x014112D0, 124 bytes long. Data: < A > 00 00 00 00 00 00 00 00 00 00 00 00 00 03 41 01 .\PainterView.cpp(24) : {395} client block at 0x01410300, subtype c0, 1784 bytes long. a CPainterView object at $01410300, 1784 bytes long .\ChildFrm.cpp(15) : {390} client block at 0x01410068, subtype c0, 240 bytes long. a CChildFrame object at $01410068, 240 bytes long f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\plex.cpp(29) : {389} normal block at 0x00A1F8A8, 124 bytes long. Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 E8 F7 A1 00 .\PainterDoc.cpp(17) : {388} client block at 0x00A1F7E8, subtype c0, 132 bytes long.a CPainterDoc object at $00A1F7E8, 132 bytes long f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(173) : {385} normal block at 0x00A1BA18, 102 bytes long. Data: <, x * > 2C FB BF 78 05 00 00 00 2A 00 00 00 01 00 00 00 f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {363} normal block at 0x00A1F230, 42 bytes long. Data: <, x > 2C FB BF 78 0B 00 00 00 0C 00 00 00 01 00 00 00 f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {185} normal block at 0x00A1BD58, 26 bytes long. Data: <, x > 2C FB BF 78 04 00 00 00 04 00 00 00 01 00 00 00 f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {184} normal block at 0x00A1BD00, 24 bytes long. Data: <, x > 2C FB BF 78 03 00 00 00 03 00 00 00 01 00 00 00 f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {183} normal block at 0x00A1BCA8, 24 bytes long. Data: <, x > 2C FB BF 78 03 00 00 00 03 00 00 00 01 00 00 00 f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\barcore.cpp(158) : {180} normal block at 0x00A1BAE0, 80 bytes long. ......... ...... ...
Eleven 2013-02-07
  • 打赏
  • 举报
回复
DoModal()以后就会关闭当前模态对话框了

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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