您的位置:首页 > 编程语言 > C语言/C++

解决问题:ASSERT in Wincore.cpp ,line 884

2007-04-11 09:33 633 查看
Project A.dll有如下相关结构与接口:(伪VC代码)
Class CChildView : public;
Class CMainFrame {… CChildView m_wndView; …};
CMainFrame::ShowDialingPad()
{
CMyDialog * pDlg=new CMyDialog();
pDlg->Create(IDD_MYDIALOG,&m_wndView);//pointA
}
Global function:
Void ShowPadDialing() {… (CMainFrame*)GetMainWindow()->ShowDialingPad ….}//pointB

另一个Project B.dll调用了全局函数ShowPadDialing(),从而由point B进入到pointA引发断言错误ASSERT in Wincore.cpp ,line 884

判断:根据网页http://www.tek-tips.com/viewthread.cfm?qid=370203 判断,此处也是多线程引发的问题。考虑用Windows的SendMessage/PostMessage机制解决。
故作如下修改:
1、自定义windows消息#define WM_NEWMYDIALOG WM_USER+111
2、废弃CMainFrame::ShowDialingPad()的内容,该做m_wndView.PostMessage(WM_NEWMYDIALOG,WPARAM,LPARAM)//考虑多线程,不应该等待故用PostMessage
3、在CChildView:: LRESULT CChildView::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)中对自定义消息NEWMYDIALOG进行处理,完成原先CMainFrame::ShowDialingPad()的相关动作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐