我是靠谱客的博主 单纯巨人,最近开发中收集的这篇文章主要介绍Visual C++ 6.0 常见断言错误总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

断言 所在函数 具体位置 意义
ASSERT(m_hWnd==NULL) CWnd::Attach() WINCORE.CPP文件中的第320行 这个断言通常可能是由于试图把一个已经捆绑(attach)过的窗口捆绑在其他的对象上,只能有一个MFC对象能够捆绑到一个窗口上--不然,消息映射就会不正常
ASSERT((dwStyle& WS_POPUP) == 0) CWnd::Create() WINCORE.CPP文件中的第747行 起因是由于使用Create()函数时试图赋予WS_POPUP风格没,但是不支持的,想要这种风格应该用CreateEx()函数
ASSERT(pMap != NULL) CWnd::DestroyWindow() WINCORE.CPP文件中的第969行 起因是在消息映射还没有激活的时候就关闭或是析构窗口
ASSERT(cs.style & WS_CHILD) CWnd::PreCreateWindow() WINCORE.CPP文件中的第733行 原因是使用了WS_CHILD风格,对于没有子窗口,最好用CFrameWnd而不要用CWnd
ASSERT(m_bitmap.m_hObject != NULL) CBitmapButton::DrawItem() WINBTN.CPP文件中的第107行 原因是在位图未加载前,试图画一个位图按钮而引起程序出错
ASSERT(this != NULL) CObject::IsKindOf() OBJCORE.CPP文件的第43行 一旦IsKindof()被一个无效的由CWnd派生的对象调用,就会产生这个断言。它说明对象没有初始化过(比如NULL指针),或是内存先前出了故障。
ASSERT(!pDX->m_bSaveAndValidate) AFXAPI DDX_Control() DLGDATA.CPP文件的第624行 调用UpdateData()或是UpdateData(TRUE)之前至少要调用一次UpdateData(FALSE),否则就会出现这个断言
ASSERT(FALSE) CDataExchange::PrepareCtrl() DLGDATA.CPP文件的第43行 通常的原因是释放了一个同数据交换变量关联的控件
ASSERT(::GetWindowLong(hWndCtrl, GWL_STYLE) & WS_GROUP)

ASSERT(value == -1)
AFXAPI DDX_Radio() DLGDATA.CPP文件的第308和325 如果这个调用针对的对象不是一个组中的第一个单选按钮,或者对组中任何一个按钮调用了不止一次,就会引起这个断言。只是第一个按钮可以有WS_GROUP窗口风格。用Class Wnzard时,如何想要把组中的第一个按钮外的其他按钮与一个成员变量关联,唯一的方法时先给这个按钮设置WS_GROUP风格,然后关联变量,最后再去掉WS_GROUP风格。如果忘记去掉WS_GROUP,就会出现断言。


ASSERT(nPageSave > 1) CEditView::PaginateTo() VIEWEDIT.CPP文件的478行 通常始由于重载窗口的OnprepareDC()函数时没有首先调用基类的OnprepareDC()引起的,最好在OnpreparePrinting()或是OnBeginPrinting()中设置要打印的页数
ASSERT(FALSE) AFXAPI AfxMessageBox() APPUI1.CPP中的第143行 这里的问题可能是由两种原因引起的:
1.字符串资源不存在
2.没有正确地引用资源(比如说错误地号码,等等)
ASSERT(m_hDC != NULL) CDC::SelectObject() 对于每种类型地对象(pen,brush等)都有类似地断言。 没有先调用GetDC(),CreateDC()或是Attach()就使用对象,便会引起这个断言。这个断言本质上是说不存在一个设备上下文.
ASSERT(pObject == NULL || pObject->m_hObject == h) CGdiObject::FromHandle() WINGDI.CPP第1114行 没有释放前一个对象就创建对象,便会引起这个断言---例如,调用了CreateFontIndirect()两次,但在中间没有调用DeleteObject()
ASSERT(m_hObject == NULL) CGdiObject::Attach() WINGDI.CPP第1120行 这个断言地起因是把绘图对象(pen,brush对象)选入了设备上下文但是没有选出[用SelectObject()函数]
ASSERT(sizeTotal.cx >= 0 && sizeTotal.cy >= 0) CScrollView::SetScrollSizes() VIEWSCRL.CPP文件的第220行 多数出现在使用CFromView和CScrollView的时候,起因是不正确地初始化滚动尺寸,或者忘记传递第二个参数
在Open方法中充满了断言 CStdioFile::Open() FILETXT.CPP文件 这些断言捕获没有文件名,或者文件名没有以NULL结尾等情况
ASSERT(m_hMenu == NULL) CMenu::Attach() WINMENU.CPP文件的98行 这个断言失败的原因是由于调用了两次LoadMenu(),而中间没有调用DestroyMenu()

最后

以上就是单纯巨人为你收集整理的Visual C++ 6.0 常见断言错误总结的全部内容,希望文章能够帮你解决Visual C++ 6.0 常见断言错误总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部