您的位置:首页 > 产品设计 > 产品经理

函数右括号错误! PreTranslateMessage(MSG* pMsg)未返回

2009-08-19 17:18 639 查看
我用一个模态对话框调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));中断,
我想不明白哪里错误了!

引用 37 楼 xylicon 的回复:
其实这样的问题,lz调试一下,看看堆栈出错的地方,不就知道是哪里出问题了吗。

看见大大的方法,第一次使用堆栈调试,
到这
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)函数出错了,忘了返回了!

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  dialog null fun