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()

时间: 2024-11-09 01:05:19

VC 6.0错误类型的相关文章

VC++6.0版本程序转成VS2010版

直接转换的时候遇到两个问题: 1.预编译头文件*.PCH找不到 2.static_cast": 无法从"void (__thiscall CView2::* )(void)"转换为"LRESULT (__thiscall CWnd::* 1.来源:http://www.zhuyanfeng.com/archives/2231 错误: fatal error C1083: 无法打开预编译头文件:"Debug\xxx.pch": No such fi

解决Win7下VC++6.0与Office不兼容的问题

在Windows7下安装Visual C++ 6.0后,如果同时安装了Microsoft Office就会出现打开文件的时候出现异常,而导致VC6崩溃. 微软已经为我们解决了问题,开发出一个插件(FileTool.dll)来帮我们解决这个问题.http://support.microsoft.com/kb/241396/en-us#appliesto 具体方法: 1.下载FileTool.exe,并解压.下载地址http://support.microsoft.com/kb/241396/en-

VC-关于VC++ 6.0的那些事儿

Microsoft Visual C++,(简称Visual C++.MSVC.VC++或VC)微软公司的C++开发工具,具有集成开发环境,可提供编辑C语言,C++以及C++/CLI等编程语言.VC++整合了便利的除错工具,特别是整合了微软视窗程式设计(Windows API).三维动画DirectX API,Microsoft .NET框架.目前最新的版本是Microsoft Visual C++ 2013. Visual C++ 6.0 集成了MFC6.0,于1998发行.发行至今一直被广泛

VC++6.0调试:Watch窗口的使用

1 #include <stdio.h> 2 #include <windows.h> 3 4 class AutoExpand 5 { 6 public: 7 AutoExpand(int val, char* pval) 8 { 9 a = val; 10 p = pval; 11 } 12 private: 13 int a; 14 char *p; 15 }; 16 class CantExpand 17 { 18 public: 19 CantExpand(int val

Win7下vc++6.0打开项目出现问题的解决方案

Win7下vc++6.0打开项目出现Microsoft(R) Developer Studio以及Unable to register this add-in because its DLLRegist问题的解决方案 产生原因:在Windows7下安装Visual C++ 6.0后,遇到一个致命的问题打开文件的时候出现异常而导致VC6崩溃, 解决办法:微软已经为我们解决了问题,开发出一个插件(FileTool.dll)来帮我们解决这个问题. 解决此问题的步骤如下: 1.下载FileTool.ex

VC++6 0升级到VC++2010理由之一(符合C++标准编写更加安全的代码)

VC++6.0升级的一个很大的障碍就是代码不兼容,但是VC++6.0的C++不够标准,不够安全,存在诸多安全漏洞,内存析出,缓冲区溢出,等等,代码的安全性,可靠性得不到有利的保障,为了您的软件的长治久安,以及在Windows7平台上的迁移,请克服代码兼容性带来的麻烦,一定要设法升级到VC++2010. 关于C++中异常的争论何其多也,但往往是一些不合事实的误解.异常曾经是一个难以用好的语言特性,幸运的是,随着C++经验的积累,今天我们已经有足够的知识轻松编写异常安全的代码了,而且编写异常安全的代

解决关于VC++ 6.0打开文件时,程序停止的问题

不少boys和girls安装VC++ 6.0英文版后,开始学习C++语言,但是使用软件的过程中,点击“打开”时,就会出现程序进程错误,崩溃的事儿,很是郁闷.最后直接一个对话框如下: 并且vc6.0直接死掉,无论重装零碎还是重装vc6都无济于事.这是vc6的一个bug ,微软给出了解决的办法 以下就是解决办法: 1.先到以下网址:vc60ent/s1/ 6.0/w9xnt4/en-us/filetool.exe下载一个FileTool.exe的文件, (1)双击文件,点击"Unzip"

vc++6.0快捷键

Ctrl+m+Crtr+o折叠所有大纲 Ctrl+M+Crtr+P: 停止大纲显示 Ctrl+K+Crtr+C: 注释选定内容 Ctrl+K+Crtr+U: 取消选定注释内容 Ctrl+J : 列出成员 智能感知Shift+Alt+Enter: 切换全屏编辑 Ctrl+B,T / Ctrl+K,K: 切换书签开关 Ctrl+B,N / Ctrl+K,N: 移动到下一书签 Ctrl+B,P: 移动到上一书签 Ctrl+B,C: 清除全部标签 Ctrl+I: 渐进式搜索 Ctrl+Shift+I: 

PHP基础教程 常见PHP错误类型及屏蔽方法

PHP基础教程 常见PHP错误类型及屏蔽方法 程序只要在运行,就免不了会出现错误,错误很常见,比如Error,Notice,Warning等等.这篇文章兄弟连PHP培训小编来跟大家具体说一下PHP的错误类型和屏蔽方法.在PHP中,主要有以下3种错误类型. 1. 注意(Notices) 这些都是比较小而且不严重的错误,比如去访问一个未被定义的变量.通常,这类的错误是不提示给用户的,但有时这些错误会影响到运行的结果. 2. 警告(Warnings) 这就是稍微严重一些的错误了,比如想要包含inclu