Debug Assertion Failed! 我用VC++编程,运行时点击菜单选项报错。

我用VC++编了一个程序,该程序运行后,在点击某菜单选项时出现以下错误:DebugAssertionFailed!Program:d\aaa\debug\aaa.exeF... 我用VC++编了一个程序,该程序运行后,在点击某菜单选项时出现以下错误:

Debug Assertion Failed!

Program:d\aaa\debug\aaa.exe
File:wincore.cpp
Line:312

For information on how your program can cause an assertion failure,see the Visual C++ documentation on asserts.

(Press Retry to debug the application)

点击Retry后,程序关闭,系统报错误。

请问是何原因?谢谢!
展开
 我来答
stone_dongdong
2007-10-14 · TA获得超过2853个赞
知道大有可为答主
回答量:1636
采纳率:0%
帮助的人:1021万
展开全部
可以跟踪到 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语句,你看看,一定就是它

200分啊,还有不明白的问我吧,一定要把分给我
pigkiller23
2007-10-13 · TA获得超过1750个赞
知道小有建树答主
回答量:736
采纳率:0%
帮助的人:551万
展开全部
在你 这个菜单的响应函数处应该有一个 ASSERT断言宏,你可以设断点跟踪一下,找到这个点就好办得多了,有的时候是一个函数内部调用了这个宏
我猜你的错误是因为你什么句柄创建错误,好好看看相关部分应该能找到,要么把菜单相应函数贴出来
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
飘渺世间天
2007-10-13 · TA获得超过2650个赞
知道大有可为答主
回答量:843
采纳率:0%
帮助的人:1104万
展开全部
代码贴出来,才好帮你分析,这种情况一般是代码的逻辑错误,Debug Assertion Failed!是因为,vc在debug版的代码中插入了很多帮助调试的代码,包括检查esp等,就是在函数调用的前后检查esp是否相同,不同的话,就debug assertion failed咯。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ec167ac34
2007-10-14 · TA获得超过1788个赞
知道小有建树答主
回答量:1312
采纳率:0%
帮助的人:1161万
展开全部
菜单的响应函数没有写好.语法出错了.你把菜单的响应函数发上来看看.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wtfmny
2007-10-14 · TA获得超过877个赞
知道小有建树答主
回答量:1181
采纳率:0%
帮助的人:0
展开全部
装个vs,它会自动调试进入出现问题的断点,你会很清楚的看到是那根指针出了问题,一般情况下,是某个窗口句柄申请资源不成功,而我们却接着用这个句柄来进行其他操作引起的,控制一下就没事了。

可以用简单的if语句控制,如果申请资源不成功,那么。。。。(加上你的处理)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式