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

2025-03-07 02:03:32
推荐回答(4个)
回答1:

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指针,所以当做全局函数调用时会出错。

回答2:

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

UINT MyControllingFunction( LPVOID pParam );

回答3:

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

回答4:

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