MFC下给线程函数传递非静态成员变量



在MFC下类的线程函数必须是静态函数,也就是说不属于某个对象,而是属于类方法,当对象结束时线程并不结束。

而静态函数必须使用静态成员变量,因此不能使用普通的成员变量。

解决以上问题的办法就是——给线程方法传递 this 指针作为参数,通过 this 指针访问成员变量或者普通成员方法。


线程的创建和启动:

AfxBeginThread((AFX_THREADPROC)ThreadFunction, this);
该函数返回CWinThread对象指针,第一个参数是线程函数指针,第二个参数就是传递给线程函数的参数。还有其它的参数请查看MSDN。


线程函数(具有固定格式,且类的线程方法为静态方法):

UINT CXX::ThreadFunction(LPVOID pParam)
{
    CXX* pThreadParam = (CXX *)pParam;
    pThreadParam->m_variable;	//假设CXX有一类普通成员变量m_variable
	
		/*其他代码*/
		
		return 0;
}



你可能感兴趣的:(MFC)