在线程中使用m_wndStatusBar.SetPaneText函数,编译通过,运行出错,调试发现运行到该语句时报错!
于是在网上查找资料发现:
因为MFC是线程安全的,所以再线程中调用该函数更新状态栏会出错。
于是使用API来实现:
::SendMessageA(pDlg->m_wndStatusBar.m_hWnd,SB_SETTEXT,0,(LPARAM)TEXT("检测到GigE Vision设备"));
或者
CString str = _T("检测到GigE Vision设备");
::SendMessageA(pDlg->m_wndStatusBar.m_hWnd,SB_SETTEXT,0,(LPARAM)LPCTSTR(str));
pDlg是对话框指针,获取方式:
1)在CPROJECTDlg.cpp中加入全局变量
CPROJECTDlg *pDlg;
2)在OnInitDialog的时候,pDlg = this;
3)在别的类使用它的时候,在别的类的cpp中添加extern CMyDialog* pDlg;
4)使用CPROJECTDlg类的成员或变量函数,pDlg->MemberFunction;