windows sdk(vs2010)編程,類中定義線程回調(diào)函數(shù).
(2011-03-20 19:26:53)
在類中定義線程回調(diào)函數(shù),一般不能在類中直接定義線程函數(shù),如果要在類中聲明線程函數(shù):
一、在類中用靜態(tài)成員函數(shù),在vs2010中聲明如下:
//myControl.h類的頭文件中聲明線程函數(shù);
public:
static DWORD WINAPI fnListenThread(void *);
//myControl.cpp類的源文件中定義;
DWORD myControl::fnListenThread(void * p) //此處WINAPI沒加,可以不加,但聲明時(shí)一定要加,要不然
{ //調(diào)用會(huì)失敗的;
//如果要傳參數(shù),在調(diào)用CreateThread()的第四個(gè)參數(shù) // 就是線 程函數(shù)定義的void * p此參數(shù)可以指向任務(wù)類型, //如果傳的參數(shù)多,可以聲明一個(gè)結(jié)構(gòu)整體傳給線程函數(shù);
//函數(shù)體省略;
.
.
.
return ....//返回一個(gè)DWORD值;
}
//后面就是在其他的文件中調(diào)用
//CreateThread(NULL,NULL,myControl.fnListenThread,hDlg,0,NULL)函數(shù),
//并用CloseHandle()函數(shù)釋放線程句柄;
//注意這個(gè)函數(shù)聲明方式不能用在_beginthread()函數(shù)中做參數(shù);
二、把線程函數(shù)聲明成類的友元函數(shù):
//myControl.h頭文件中聲明:
public:
friend DWORD WINAPI fnServiceThread(void *);
//myControl.cpp源文件中定義:
DWORD fnServiceThread(void * p)
{
//函數(shù)體省略;
.
.
return ...//返回一個(gè)DWORD值;
}
//此線程函數(shù)在類中其他的函數(shù)體中用CreateThread()調(diào)用;
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。