解决问题: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()的相关动作。
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()的相关动作。
相关文章推荐
- 解决IE6,7下display:inline-block;失效问题。
- laravel post TokenMismatchException in VerifyCsrfToken.php line 53 问题解决方法
- 解决元素display:inline-block间隙问题
- 转载自〈Compubin的空间〉Debug Assertion Failed! dbcore.cpp line:2979问题解决(VC++用ODBC访问SQLServer)
- H5面试---怎么解决 display:inline-block 之间显示间隙问题
- display:inline-block带来的问题及解决办法
- display:inline-block引发的间隙问题解决办法
- laravel post TokenMismatchException in VerifyCsrfToken.php line 53 问题解决方法
- display:inline-block的间隙问题和解决办法
- 解决 IE7 中 display:inline-block 失效的问题
- 解决wxutil .cpp(626) : error C2400: inline assembler syntax error in 'opcode'; found 'newline'
- 怎么解决 display:inline-block 之间显示间隙问题?
- mybatis异常:Improper inline parameter map format. Should be: #{propName,attr1=val1,attr2=val2}问题分析及解决
- display:inline-block引发的间隙问题解决办法
- 解决SyntaxError: Non-ASCII character '\xe7' in file demo.py on line 15问题
- mybatis异常:Improper inline parameter map format. Should be: #{propName,attr1=val1,attr2=val2}问题分析及解决
- python问题Non-ASCII character '\xe5' in file Apriori.py on line 1, but no encoding declared 解决办法
- Qt中使用汉字字符与 “error C2001: newline in constant”问题的解决
- Laravel 出现"RuntimeException inEncrypter.php line 43: The only supported ciphers are AES-128-CBC and AES-256-CBC with the correct key lengths."问题的解决办法
- 解决在IE6下使用display: inline-block;的不兼容性问题