线程的开启方法如下:
//tracking the object
AfxBeginThread((AFX_THREADPROC)ObjectLocate,this,0,0,0,0);
其中ObjectLocate为工作线程函数,这里需要注意的是,我们一般的做法是从主线程中将对话框类的指针当作参数带入到工作线程中去。若工作线程没有要传的参数时,也要注意,因为若工作线程调用了对话框类的成员函数,需要一个对象指针。
void * pKinectTrackingDlg;//接收主线程对话框窗口传来的this指针
( (CMFC_Kinect_TrackingDlg *)pKinectTrackingDlg )->ListBoxDisplay( str_DisplayCor );
当然,我们也可以采用AfxGetMainWnd()函数获取m_hWnd, 再利用GetDlgItem(m_hWnd, ID)来实现各种功能,但是我也出现过AfxGetMainWnd的吐血遭遇……
http://blog.csdn.net/linyaoxin/article/details/4847529
无论通过全局句柄类变量还是在参数中输入主窗口所最终获取的m_hWnd,
到最终程序依然是crash掉了。
最终还是通过穿主窗口的this指针才解决了问题。
如果大家同样出现使用m_hWnd或者AfxGetMainWnd()在线程中出现各种情况,不妨用我这个方法试试。