ASSERT(ContinueModal());的时候报Debug Assertion Fail

一个MFC的程序,类似资源 管理 器,我需要在原来程序的基础上做些修改.  
  结果修改后,出现在wincore.cpp的3487行中出现assert错误  
  调试之后,跳到这里:  
  ASSERT(ContinueModal());  
   
  Call   Stack的情况是:  
  CWnd::RunModalLoop(unsigned   long   4)   line   3486   +   34   bytes  
  CDialog::DoModal()   line   539   +   12   bytes  
  ……  
  ……  
   
  有没有遇到类似情况的 兄弟 们  
  麻烦告诉我一下可能的原因  
  thanks  
   
   
  问题点数:100、回复次数:9Top

src="/Include/Board.htm?Tags=" frameborder="0" scrolling="no">

1 楼aceouter(outer)回复于 2006-03-08 15:32:27 得分 10

代码贴出来看看Top

2 楼gold_water(风雨无阻)回复于 2006-03-08 16:23:56 得分 5

可能是溢出了.建议再仔细检查一下代码Top

3 楼gold_water(风雨无阻)回复于 2006-03-08 16:26:13 得分 0

可能是溢出了.建议再仔细检查一下代码Top

4 楼syy64(太平洋)回复于 2006-03-08 16:44:44 得分 5

调试看看,从你的 程序 的哪一行进去的。Top

5 楼lumber(今天的祝福 明天的孤独)回复于 2006-03-08 17:26:00 得分 0

CDialog::DoModal()   之后,开启了一个线程做了一些操作,也没有什么特别的操作Top

6 楼lumber(今天的祝福 明天的孤独)回复于 2006-03-08 17:33:51 得分 0

CLinkDlg继承CDialog,下面是代码  
   
  DWORD   WINAPI   LinkThread(LPVOID   lpParameter)  
  {  
          //这个线程做了点事情, 成功 的话就发一个LINKOK的消息  
          SendMessage(((CLinkDlg*)lpParameter)->GetSafeHwnd(),   LINKOK,   0,   NULL);  
   
  }  
   
  CLinkDlg::CLinkDlg(CWnd*   pParent   /*=NULL*/)   :   CDialog(CLinkDlg::IDD,   pParent)  
  {  
          //初始化  
  }  
   
   
  BOOL   CLinkDlg::OnInitDialog()    
  {  
          //创建了个线程  
          ::CreateThread(NULL,   0, LinkThread,   (LPVOID)this,   0,   &m_dwThreadID);          
  }  
  void   CLinkDlg::OnLinkOK(WPARAM   wParam,LPARAM   lParam)  
  {  
          //收到了LINK_OK的消息后到了这里  
  CDialog::OnOK();  
  }  
   
  void   CLinkDlg::OnCancel()    
  {  
          //取消那个线程  
  CDialog::OnCancel();  
  }  
   
  Top

7 楼newcore(to be or not to be, it's a question.)回复于 2006-03-08 18:19:14 得分 40

感觉是线程启动后,就发送一个消息给对话框,然后对话框由于某种原因被非法关闭。( 资源 没有释放,或者还在做其他事情,但是却没有作完???)  
   
  个人觉得,这里对话框的生命周期和线程中止时机最好有个 同步 机制...  
   
   
  Top

8 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2006-03-08 18:39:20 得分 40

SendMessage  
  =>  
  PostMessageTop

9 楼lumber(今天的祝福 明天的孤独)回复于 2006-03-13 09:26:38 得分 0

SendMessage   改成   PostMessage   就可以了,不会在出现那个assert  
  多谢各位 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值