MFC之多线程创建

在程序中多线程有时候是非常必要的,MFC也可以实现多线程。

(1)在类成员函数中加入一个线程函数

    static DWORD WINAPI ShowImageThread(void *pArg);  //图像识别线程
这个线程必须是静态的,或者是全局的也可以。

值得注意的是,大家都值得静态函数中使用的资源也必须是静态的,这样会导致在这个线程函数中无法使用原类的资源变量了。用全局也是一样。

所以我用了一个解决办法,就是把当前类对象传参这个线程 *pArg

(2)在想要多线程的地方创建该线程

	HANDLE hThread = NULL;   //图像处理线程
	//创建识别线程
	hThread=CreateThread(NULL,0,ShowImageThread,(void *)this,NULL,&dwThreadID);   
        CloseHandle(hThread);
这里注意到,创建线程的函数是上面申明的ShowImageThread静态函数,传过去的参数是(void*)this就是本类的当前实体对象

(3)这样一来算线程就启动了,当然你必须把ShowImageThread函数写好

//静态线程函数
DWORD WINAPI  CAIMouseDlg::ShowImageThread(void *pArg)
{
	CAIMouseDlg *thisdlg = (CAIMouseDlg *)pArg;
这里就参数重新转换成原类的指针,通过这个thisdlg指针你就可以调用原来的变量和函数了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值