...会显示: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下会忽略断言。