mfc里面创建线程的时候线程函数必须是全局函数怎么办

我在mfc的dlg里面创建了线程函数Producer和Consumer,但在创建线程的时候就会报错,我查了查好像是这两个函数必须是全局函数,本人不太懂mfc,因为我的变量... 我在mfc的dlg里面创建了线程函数Producer和Consumer,但在创建线程的时候就会报错,我查了查好像是这两个函数必须是全局函数,本人不太懂mfc,因为我的变量都是在dlg里面的,那如果创建全局函数是不是我的变量也得跟着弄成全局变量啊,感觉很麻烦- -有没有朋友教教该怎么办 展开
 我来答
隔壁的_老王abc
2015-11-24 · TA获得超过134个赞
知道答主
回答量:69
采纳率:28%
帮助的人:20.9万
展开全部
第三参数加上强制类型转换,(LPTHREAD_START_ROUTINE)Producer。
线程回调函数必须是全局静态,但创建线程的时候你可以把类的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;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式