读书人

新增线程更新状态栏时崩溃有关问题

发布时间: 2012-01-15 22:57:49 作者: rapoo

新增线程,更新状态栏时,崩溃问题?
我在一对话框(CDlg1)下面增加状态栏,CStatusBar w_wndStatusBar
但,在一新增加的线程中,调用其它方法更新状态栏时,程序运行崩溃
例如,在新线程中,更新状态栏内容代码:
UINT thread(LPVOID pParam){
CDlg1* pdlg= (CDlg1*)pParam;
pdlg-> w_wndStatusBar.SetPaneText(0, ID_INDIRTOR_TIME, "newtime ");
}

我不知道为什么,在主程序中更新状态栏都可以,而在新增加的线程中,却会失败崩溃???

请大哥和高手,有经验的指点分析一下!!

跟帖和QQ672441169(注明VC)讨论都可以!!

另,希望结识熟悉VC编程的兄弟(加我QQ,或留下你们的MSN或其它联系方式也可),相互学习,讨论技术问题,有时遇到问题没有讨论,查资料也无法,好郁闷啊!!


[解决办法]
这样做是很不安全的,在 Windows 里所有的窗口都是和某个线程绑定在一起的,所以 MFC 里面的 CWnd 对象也是和线程绑定在一起的,MFC 里面也用到了很多线程局部变量,像你这样在新线程通过指针直接调用主线程的 CWnd 对象出问题也就很自然了。正确的方法应该是向主线程发送一个消息,由主线程来更新状态栏。
[解决办法]
至于发什么消息就你自己决定了,自己定义一个消息也可以,只要不和其他消息有冲突就 OK。

读书人网 >VC/MFC

热点推荐