MFC 线程调用方法和注意事项



线程的开启方法如下:

//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()在线程中出现各种情况,不妨用我这个方法试试。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值