...会显示:Afxis valid address 请高手帮忙解决,多谢!

发布网友 发布时间:2024-10-23 22:41

我来回答

3个回答

热心网友 时间:1分钟前

MFC源代码,可以跟踪到内部(注:如果你打开??MFC源代码,设置断点,但与不进去,那就需要更新PDB文件的在线搜索)
开放Wincore.cpp文件(D:\ Program Files文件\微软的Visual Studio。NET 2003 \ VC7 \ atlmfc的\ src \ MFC)。 312行,其中的功能如下:
的CWnd * PASCAL的CWnd :: FromHandle(HWND HWND的)
{
CHandleMap * PMAP = afxMapHWND(TRUE); / /创建地图,如果不存在
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);
回报PWND;
} BR />
断言ASSERT(PWND == NULL | PWND - > m_hwnd == HWND);的手柄映射表错误,读,有两种可能:
1,通过该窗口手柄是空的,窗口对象的生成,但没有使用“创建创建窗口。
窗口的线程的线程,然后使用映射窗口指针FromHandle读或临时窗口指针映射,势必要出问题的。窗口的线程相关联的哦
你点击菜单上的命令错误,你很可能会菜单命令你的FromHandle语句执行的代码,你看,问我还有

200点,不明白,必须参加并给我

热心网友 时间:1分钟前

这个要有代码调试才能发现问题,MFC中很多函数开头都加上了assert语句,拒绝那些逻辑上不应该出现的错误,帮助程序员及早发现.如以下函数:
void f(char *p)
{
assert(p != NULL);

...
}

如果你f(NULL)这样调用函数,明显就是不应该的(一般应该养成良好的习惯,在调用函数前判断指针是否有效),这时,在debug版本中就会出现这个对话框.自己学会调试下吧,这种属于很明显的逻辑错误,应该不难发现.

热心网友 时间:4分钟前

出现这种情况很可能是使用了野指针,比如某个指针指向一个局部变量,而在该变量作用域外使用该指针引用了该对象。
Assertion 是断言,用于假定某个条件肯定会满足,在debug模式下,当该条件不满足时则发生阻塞而弹出该对话框;在release下会忽略断言。
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com