线程函数引用有关问题

线程函数引用问题
我编写一个聊天程序,在服务器端我定义了一个监听线程(ListenThreadProc)和一个与客户通信的线程
(ClientThreadProc),并且这两个线程函数都属于服务器端主窗口类(CserverDlg)的成员函数,现在我想在监听线程中调用CreateThread函数来创建与客户通信的线程,因此需要指定ClientThreadProc函数名,但是问题就出现了,在CreateThread函数中指定ClientThreadProc函数名时一直出错,
错误提示为:
DWORD (_stdcall CserverDlg)(LPVOID lpParam)*类型的实参与“LPTHREAD_START_ROUTINE”类型的形参不兼容。对于这个问题,我该怎么解决呢?

我是这样做的:
hThread = CreateThread(NULL, 0, CserverDlg::ClientThreadProc, this, CREATE_SUSPENDED, NULL);
编译器提示上述错误,我不知道该则么解决,请网友帮帮忙,谢了

------解决方案--------------------
 CserverDlg::ClientThreadProc必须是静态的且类型为
DWORD WINAPI ThreadProc(
  LPVOID lpParameter   // thread data
);

------解决方案--------------------
线程函数 只有一个 参数
但是你那个是类成员函数 还隐含一个this指针呢
所以编译不通过
你可以把ClientThreadProc弄成static类型的
------解决方案--------------------
static DWORD WINAPI ListenThreadProc(LPVOID lpParam);
static DWORD WINAPI ClientThreadProc(LPVOID lpParam);

DWORD WINAPI CserverDlg::ListenThreadProc(LPVOID lpParam)
{
    CreateThread(NULL, 0, ClientThreadProc, lpParam, 0, NULL);
}
------解决方案--------------------
第4个参数有问题,你仔细看看
------解决方案--------------------
引用:
线程函数 只有一个 参数
但是你那个是类成员函数 还隐含一个this指针呢
所以编译不通过
你可以把ClientThreadProc弄成static类型的


+1

类的成员函数,包含一个this指针。