我用一个模态对话框调dialog1用了另个一个模态对话框dialog2,dialog2只是简单的选择一个数值,然后就自动关闭.然后 ,dialog1使用dialog2的公有成员变量.
最后在这个函数结束的时候,出现的这个中断:
ASSERT(::IsWindow(m_hWnd));
函数大致是这样子的
void CDialog1::fun()
{
if(...){
CString csin;
CDialog2 dialog2(csin);
if(dialog2.DoModal() == IDOK)
{
csin = dialog2.m_csin;
}
}
.......//做其他事情
}//执行到这个右括号的时候,触发ASSERT(::IsWindow(m_hWnd));中断,
我想不明白哪里错误了!
看见大大的方法,第一次使用堆栈调试,
到这
CWnd* CWnd::GetTopLevelParent() const
{
if (GetSafeHwnd() == NULL) // no Window attached
return NULL;
ASSERT_VALID(this);
HWND hWndParent = m_hWnd;//到这中断了
HWND hWndT;
while ((hWndT = AfxGetParentOwner(hWndParent)) != NULL)
hWndParent = hWndT;
return CWnd::FromHandle(hWndParent);
}
可是我不明白是什么意思!
前一个调用我自己的函数是PreTr
anslateMessage(MSG* pMsg)
这里面的一个控件处理回车的信息!
PreTranslateMessage(MSG* pMsg)函数出错了,忘了返回了!