mfc里面创建线程的时候线程函数必须是全局函数怎么办
我在mfc的dlg里面创建了线程函数Producer和Consumer,但在创建线程的时候就会报错,我查了查好像是这两个函数必须是全局函数,本人不太懂mfc,因为我的变量...
我在mfc的dlg里面创建了线程函数Producer和Consumer,但在创建线程的时候就会报错,我查了查好像是这两个函数必须是全局函数,本人不太懂mfc,因为我的变量都是在dlg里面的,那如果创建全局函数是不是我的变量也得跟着弄成全局变量啊,感觉很麻烦- -有没有朋友教教该怎么办
展开
展开全部
第三参数加上强制类型转换,(LPTHREAD_START_ROUTINE)Producer。
线程回调函数必须是全局静态,但创建线程的时候你可以把类的this指针当做线程的参数传进去,也就是第四参数传this,这样在线程里就可以调用类成员变量了,不懂可追问,望采纳。。
线程回调函数必须是全局静态,但创建线程的时候你可以把类的this指针当做线程的参数传进去,也就是第四参数传this,这样在线程里就可以调用类成员变量了,不懂可追问,望采纳。。
追答
刚都说了,线程回调函数是全局静态,函数声明时前面要加static;
static DWORD WINAPI ThreadProc(LPVOID lpPara);
Thread[i] = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)Producer,this,0,&PID[i]);
DWORD WINAPI CConcurrentDlg::ThreadProc(LPVOID lpPara)
{
CConcurrentDlg* This = (CConcurrentDlg*)(lpPara);
//然后用户This调用类成员变量,比如This->m_a;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询