使用MFC的AfxBeginThread()创建线程没有实例怎么解决?

时间:2022-09-25 18:26:44
class.h
public:
void MyThreadProc(void);//线程入口函数调用函数
static UINT __stdcall MyThreadFunc (LPVOID pParam);//线程入口函数
void CreateThreadProc();//创建线程函数
private:
CWinThread* m_pThread;

class.cpp
void class::MyThreadProc(void)
{
//函数实现略
}

UINT __stdcall class::MyThreadFunc(LPVOID pParam)
{
CChickenWeighingDlg* pClass = (CChickenWeighingDlg*) pParam;
pClass->MyThreadProc();
return 0;
}

void class::CreateThreadProc()
{
m_pThread = AfxBeginThread(MyThreadFunc,this,THREAD_PRIORITY_NORMAL,0,0,NULL);
m_pThread->m_bAutoDelete = FALSE;
}
问题:AfxBeginThread提示error: no instance of overloaded function "AfxBeginThread" matchse the argument list
AfxBeginThread是全局函数,而且我的实参也没错啊,是不是没有重载AfxBeginThread?当我使用全局函数CreateThreadProc时AfxBeginThread没有这个问题,怎么解决?

5 个解决方案

#1


UINT MyThreadFunc(LPVOID pParam);
全局函数

#2


引用 1 楼 sophyyoung 的回复:
UINT MyThreadFunc(LPVOID pParam);
全局函数

线程入口函数我使用的是类成员函数,必须是全局函数吗?

#3


AfxBeginThread(class::MyThreadFunc, ..

#4


必须的吧,你试试

#5


引用 4 楼 sophyyoung 的回复:
必须的吧,你试试

好像可以了。谢谢

#1


UINT MyThreadFunc(LPVOID pParam);
全局函数

#2


引用 1 楼 sophyyoung 的回复:
UINT MyThreadFunc(LPVOID pParam);
全局函数

线程入口函数我使用的是类成员函数,必须是全局函数吗?

#3


AfxBeginThread(class::MyThreadFunc, ..

#4


必须的吧,你试试

#5


引用 4 楼 sophyyoung 的回复:
必须的吧,你试试

好像可以了。谢谢