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

MFC 专栏收录该内容
4 篇文章 0 订阅


线程的开启方法如下:

//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
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值