win7 64位的系统会遇到这个问题怎么解决

win7 64位的系统会遇到这个问题怎么解决,第1张

出现“ Assertion Failed错误”是因为你程序中的断言失败了,也就是这一句话:

ASSERT(pActivateView == this)

Assert是System.Diagnostics.Debug类的一个静态方法,只在debug的状态下起作用,如果程序是编译成release的,那么该代码会被忽略。

Assert放的作用是检查输入条件(也就是该方法的参数)是否是“True"如果是什么都不会发生,如果是“False”则会抛出异常。

跟据你给的代码来看,应该你传入的参数pActivateView 与调用Assert的方法所在的类的实例(用this表示)不是同一个引用(也就是不是指向同一个实例)。你可以再检查一下你的代码可以跟踪到 mfc提供的源代码内部,(注:如果打开了mfc源代码,设置了断点,但是跟不进去,那就需要更新PDB文件,具体网上搜)

打开 wincore.cpp文件(D:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\src\mfc)。查看 312 行,所在函数如下:

CWnd* PASCAL CWnd::FromHandle(HWND hWnd)

{

CHandleMap* pMap = afxMapHWND(TRUE)//create map if not exist

ASSERT(pMap != NULL)

CWnd* pWnd = (CWnd*)pMap->FromHandle(hWnd)

#ifndef _AFX_NO_OCC_SUPPORT

pWnd->AttachControlSite(pMap)

#endif

ASSERT(pWnd == NULL || pWnd->m_hWnd == hWnd)

return pWnd

}

断言就是 Assert( pWnd == NULL || pWnd->m_hwnd == hWnd )也就是读取句柄映射表错误,有2种可能:

1你传入的窗口句柄为空,也就是生成了窗口对象但是没有使用 Create创建窗口。

2.窗口所在线程不是当前所在线程,那么使用FromHandle读取映射窗口指针或者映射临时窗口指针必然会出错。窗口都是线程相关的噢

你点击菜单命令出错,你就有可能你的菜单命令执行的代码有 FromHandle语句,你看看,一定就是它.

最好的方法就是重装下系统。

可能很多人在安装VC 6.0后有过点击“Compile”或者“Build”后被出现的

“Compiling... ,Error spawning cl.exe”错误提示给郁闷过。很多人的

选择是重装,实际上这个问题很多情况下是由于路径设置的问题引起的,

“CL.exe”是VC使用真正的编译器(编译程序),其路径在“VC根目录\VC98\Bin”下面,

你可以到相应的路径下找到这个应用程序。

因此问题可以按照以下方法解决:打开vc界面 点击VC“TOOLS(工具)”—>“Option(选择)”

—>“Directories(目录)”重新设置“Excutable Fils、Include Files、

Library Files、Source Files”的路径。很多情况可能就一个盘符的不同

(例如你的VC装在C,但是这些路径全部在D),改过来就OK了。

如果你是按照初始路径安装vc6.0的,路径应为:

executatble files:

C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin

C:\Program Files\Microsoft Visual Studio\VC98\BIN

C:\Program Files\Microsoft Visual Studio\Common\TOOLS

C:\Program Files\Microsoft Visual Studio\Common\TOOLS\WINNT

include files:

C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE

C:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE

C:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDE

library files:

C:\Program Files\Microsoft Visual Studio\VC98\LIB

C:\Program Files\Microsoft Visual Studio\VC98\MFC\LIB

source files:

C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC

C:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE

C:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDE

C:\Program Files\Microsoft Visual Studio\VC98\CRT\SRC

如果你装在其他盘里,则仿照其路径变通就行(我就是装在D盘)。

关键是microsoft visual studio\ 后面的东西要相同


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11796197.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存