又是VS2008 (vc++)问题 多线程的

来源:百度知道 编辑:UC知道 时间:2024/05/27 17:46:15
出错行 : AfxBeginThread(CThreadProc,GetSafeHwnd());
error C3867: “CMultiThreadDlg::CThreadProc”: 函数调用缺少参数列表;请使用“&CMultiThreadDlg::CThreadProc”创建指向成员的指针
真是没法学了 浪费了好多时间看了书 实际上还是错 又没人帮忙 我心都凉了……

CWinThread* AfxBeginThread( AFX_THREADPROC pfnThreadProc,
LPVOID pParam,
int nPriority = THREAD_PRIORITY_NORMAL,
UINT nStackSize = 0,
DWORD dwCreateFlags = 0,
LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL
);//用于创建工作者线程
返回值: 一个指向新线程的线程对象
pfnThreadProc : 线程的入口函数,声明一定要如下: UINT MyThreadFunction( LPVOID pParam );

因为类的成员函数依赖于对象,成员函数都有个隐含的this指针,所以当做全局函数调用时会出错。

AfxBeginThread第一个参数的函数声明必须是这样的:

UINT MyControllingFunction( LPVOID pParam );

楼主好像不知道怎么填线程函数的几个参数,第一个是该线程要处理的函数,函数定义UINT MyControllingFunction( LPVOID pParam ); 第二个参数就是传递给这个函数的参数,就是上面的pParam,你可以把这个参数定义成任意结构。然后在线程里面解析出来。
学习VC仅仅看书是不够的,要在练习中从MSDN里找例子学。

AfxBeginThread(ThreadSearchPassweek,this);
static UINT ThreadSearchPassweek(LPVOID pParam);