Debug版本中调用UpdateData(FALSE);来把CString显示到编辑框报错:Debug Assertion Failed,但在Release下却没事,但我还要在Debug进行调

sct 2005-09-24 09:11:06
Debug版本中调用UpdateData(FALSE);来把CString m_Note;(被不断更新)显示到编辑框报错:Debug Assertion Failed,

Debug Assertion Failed.
Program:F:\try\123.exe
File: wincore.cpp
Line: 879

///
void CMyView::AddInfoToNote(CString str)
{
m_Note = str + "\r\n" + m_Note;
UpdateData(FALSE);
//AfxMessageBox( m_Note );
}
///

但在Release下却没事,但我还要在Debug进行调试啊,该怎么办?

我试着在Debug下用AfxMessageBox()来显示CString m_Note;(被不断更新)是OK的,但这样太麻烦了,不便于调试
...全文
598 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
Snow_Ice11111 2005-10-13
  • 打赏
  • 举报
回复
基于对话框的话,UpdateData(FALSE);和SetDlgItemText都不会有问题的。把情况说明白一点,我再依你的实际情况试试,看原因在哪里。
Snow_Ice11111 2005-10-13
  • 打赏
  • 举报
回复
void CMyView::AddInfoToNote(CString str) //??
楼主的工程是基于单文档或多文档的吧?那你的CString m_Note变量是和哪种控件关联的?
Snow_Ice11111 2005-10-13
  • 打赏
  • 举报
回复
用UpdateData(FALSE);就报错??惹不起我还躲不起吗?!用SetDlgItemText代替:
m_Note = str + "\r\n" + m_Note;
SetDlgItemtext(你的控件ID,m_Note);
sct 2005-10-12
  • 打赏
  • 举报
回复
还是没解决
dingpiao 2005-10-12
  • 打赏
  • 举报
回复
把debug文件夹删了,REBULIDALL
Alazer 2005-10-12
  • 打赏
  • 举报
回复
wincore.cpp中,879行大约是
if (m_hWnd == HWND_BOTTOM)
ASSERT(this == &CWnd::wndBottom);
else if (m_hWnd == HWND_TOPMOST)
ASSERT(this == &CWnd::wndTopMost);

wndTopMost ---- Places the window above all nontopmost windows. The window maintains its topmost position even when it is deactivated
所以你的程序可能要求了始终最前显示,导致debug断点时找不到窗口啊,而在release时候却不存在这个问题
zhenzhihy 2005-09-25
  • 打赏
  • 举报
回复
我试了,不行,还是报错:
Debug Assertion Failed.
Program:F:\try\123.exe
File: wincore.cpp
Line: 879
类似的问题属断言错误,RELEASE下不执行断言,所以不报错。
解决方法:

wincore.cpp
Line: 879

说明:在wincore.cpp文件的第879行有断言失败,说明你的代码可能有些问题,对程序而言存在潜在危险。找到wincore.cpp文件,打开,看879行代码,看看是什么原因引起断言,从而进行解决就可以了!
rickywei 2005-09-25
  • 打赏
  • 举报
回复
可能是CMyView没有Create出来,即m_hWnd为0。
guxingfeiyu 2005-09-24
  • 打赏
  • 举报
回复
如果是MFC下的话,你查一下你的这个控件是否创建成功,也就是说它的m_hWnd是否是正确的。
sct 2005-09-24
  • 打赏
  • 举报
回复
To 回复人: guxingfeiyu(孤星飞雨)

不是啊,我的代码:
///
void CMyView::AddInfoToNote(CString str)
{
m_Note = str + "\r\n" + m_Note;
UpdateData(FALSE);
//AfxMessageBox( m_Note );
}
///

class CMyView : public CFormView啊,


ohfox 2005-09-24
  • 打赏
  • 举报
回复
遇到类似的问题,帮顶
一遇到这种assertion failed的问题我就不知道怎么办了
guxingfeiyu 2005-09-24
  • 打赏
  • 举报
回复
那就明白了,你的这段代码不是MFC界面窗口下的(例如DLL,多线程),那这样你就只好用SendMessage(hWnd,WM_TEXT,...),或者直接给该窗口SetWindowText了。
sct 2005-09-24
  • 打赏
  • 举报
回复
也不行啊,用UpdateData(FALSE);就报错
guxingfeiyu 2005-09-24
  • 打赏
  • 举报
回复
UpdateData(TRUE);
m_Note = str + "\r\n" + m_Note;
UpdateData(FALSE);
sct 2005-09-24
  • 打赏
  • 举报
回复
我试了,不行,还是报错:
Debug Assertion Failed.
Program:F:\try\123.exe
File: wincore.cpp
Line: 879

用UpdateData(FALSE);怎么会报错呢?晕,HELP!
菜牛 2005-09-24
  • 打赏
  • 举报
回复
CString strTemp(m_Note);
m_Note = str + "\r\n" + strTemp;
qc_jrj 2005-09-24
  • 打赏
  • 举报
回复
检查 m_Note 关联的控件 ID 是否改变过?
重新编译一遍。
jjiaming 2005-09-24
  • 打赏
  • 举报
回复
看一下其它部分程序是否有数组越界的情况
xly310 2005-09-24
  • 打赏
  • 举报
回复
别用+了,用strcpy,strcat,sprintf,等试试

16,551

社区成员

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

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

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