函数右括号错误! 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)函数出错了,忘了返回了!
最后在这个函数结束的时候,出现的这个中断:
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)函数出错了,忘了返回了!
相关文章推荐
- 对话框不响应WM_KEYDOWN消息,可以通过重载BOOL PreTranslateMessage(MSG * pMsg)来实现
- CTrackThread::PreTranslateMessage(MSG* pMsg)
- 使用PreTranslateMessage(MSG* pMsg)截获键盘数字键
- 基于对话框的MFC程序中捕捉WM_KEYDOWN消息的方法----PreTranslateMessage(MSG* pMsg) 转帖
- PreTranslateMessage(MSG* pMsg)专题
- PreTranslateMessage(MSG* pMsg) 中 break 与return的区别
- CTrackThread::PreTranslateMessage(MSG* pMsg)
- WM_MOUSEWHEEL 在PreTranslateMessage(MSG* pMsg)中MSG 的说明
- 重写PreTranslateMessage(MSG* pMsg)遇到的问题--相应右键消息。隔一次响应一次,求解。
- MFC PreTranslateMessage(MSG* pMsg)中调用DoModal()模态窗口问题
- 在MFC中手动添加消息处理函数PreTranslateMessage和自定义消息
- MFC的PreTranslateMessage()函数浅析
- DLL 内部的非模态对话框的 PreTranslateMessage 函数不执行
- PreTranslateMessage()函数
- PreTranslateMessage()函数的功能以及特点
- PreTranslateMessage()函数截获鼠标键盘消息
- PreTranslateMessage()函数截获鼠标键盘消息
- PreTranslateMessage()函数捕获键盘按键消息
- PreTranslateMessage()函数捕获键盘按键消息
- 在MFC中手动添加消息处理函数PreTranslateMessage