windows sdk(vs2010)编程,类中定义线程回调函数.
(2011-03-20 19:26:53)
在类中定义线程回调函数,一般不能在类中直接定义线程函数,如果要在类中声明线程函数:
一、在类中用静态成员函数,在vs2010中声明如下:
//myControl.h类的头文件中声明线程函数;
public:
static DWORD WINAPI fnListenThread(void *);
//myControl.cpp类的源文件中定义;
DWORD myControl::fnListenThread(void * p) //此处WINAPI没加,可以不加,但声明时一定要加,要不然
{ //调用会失败的;
//如果要传参数,在调用CreateThread()的第四个参数 // 就是线 程函数定义的void * p此参数可以指向任务类型, //如果传的参数多,可以声明一个结构整体传给线程函数;
//函数体省略;
.
.
.
return ....//返回一个DWORD值;
}
//后面就是在其他的文件中调用
//CreateThread(NULL,NULL,myControl.fnListenThread,hDlg,0,NULL)函数,
//并用CloseHandle()函数释放线程句柄;
//注意这个函数声明方式不能用在_beginthread()函数中做参数;
二、把线程函数声明成类的友元函数:
//myControl.h头文件中声明:
public:
friend DWORD WINAPI fnServiceThread(void *);
//myControl.cpp源文件中定义:
DWORD fnServiceThread(void * p)
{
//函数体省略;
.
.
return ...//返回一个DWORD值;
}
//此线程函数在类中其他的函数体中用CreateThread()调用;
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。