• VC 6.0错误类型


    http://www.cnblogs.com/CBDoctor/archive/2013/01/21/2869480.html

    VC 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文件的第308325

    如果这个调用针对的对象不是一个组中的第一个单选按钮,或者对组中任何一个按钮调用了不止一次,就会引起这个断言。只是第一个按钮可以有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.CPP1114

    没有释放前一个对象就创建对象,便会引起这个断言---例如,调用了CreateFontIndirect()两次,但在中间没有调用DeleteObject()

    ASSERT(m_hObject == NULL)

    CGdiObject::Attach()

    WINGDI.CPP1120

    这个断言地起因是把绘图对象(pen,brush对象)选入了设备上下文但是没有选出[SelectObject()函数]

    ASSERT(sizeTotal.cx >= 0 && sizeTotal.cy >= 0)

    CScrollView::SetScrollSizes()

    VIEWSCRL.CPP文件的第220

    多数出现在使用CFromViewCScrollView的时候,起因是不正确地初始化滚动尺寸,或者忘记传递第二个参数

    Open方法中充满了断言

    CStdioFile::Open()

    FILETXT.CPP文件

    这些断言捕获没有文件名,或者文件名没有以NULL结尾等情况

    ASSERT(m_hMenu == NULL)

    CMenu::Attach()

    WINMENU.CPP文件的98

    这个断言失败的原因是由于调用了两次LoadMenu(),而中间没有调用DestroyMenu()

    发现自己的不足,善于利用找到的方法去扬长避短。行动起来。
  • 相关阅读:
    nginx 过滤了自定义的请求头参数
    Mysql5.7查看已经执行的sql语句
    Reids5 持久化
    JS 格式化时间,转成 几天前,几个月前
    个人小镜像站点
    记录一次清理Redis 病毒程序 kdevtmpfsi
    laravels 热重启
    Redis 布隆器安装和简单实现
    Redis Zset类型跳跃表算法实现(JAVA)
    Redis5 基于Lua实现分布式排它锁
  • 原文地址:https://www.cnblogs.com/rechen/p/5100307.html
Copyright © 2020-2023  润新知