读书人

参数传递有关问题

发布时间: 2012-05-02 15:36:04 作者: rapoo

参数传递问题
thread.h中,定义了:
typedef struct {
DWORD threadId;//主任务线程的句柄
CString hostName;//主机名
CString downPath;//文件下载路径
.... }threadinfo;
也定义了threadinfo类型的成员变量threadInfo;
class thread:public CWinThread
{
....
}

成员函数:void thread::createThreads()
{
threadInfo=new thread_info*[ThreadCount];
for(int k=0;k<ThreadCount;k++)
{
threadInfo[k]=new thread_info;
threadInfo[k]->threadId=threadId;
threadInfo[k]->hostName=hostName;
threadInfo[k]->downPath=downPath;
}
//多线程下载
for(int j=0;j<ThreadCount;j++)
{
HttpThreads[j]=AfxBeginThread(DownLoad,(LPVOID)(&threadInfo[j]));//线程句柄----------①
}
}

定义了一个全局 下载函数:
UINT DownLoad(LPVOID lpParameter)
{ thread_info *const threadTemp=static_cast<thread_info*>(lpParameter);
AfxMessageBox(threadTemp->hostName);//------------------------------②
..............}
但是②处显示的参数是不对的,我想应该是①处没有把threadInfo设置为全局变量,求解决办法,如何将它设置为全局变量?
如何使结构体指针传递数据到DownLoad函数中?

[解决办法]
HttpThreads[j]=AfxBeginThread(DownLoad,(LPVOID)(&threadInfo[j]));//线程句柄-------①
此处threadInfo[j])的类型是什么,你加了个&变成了什么?
thread_info *const threadTemp=static_cast<thread_info*>(lpParameter);此处你把参数的类型强制转换成了thread_info *类型,而传入的参数是thread_info **

读书人网 >VC/MFC

热点推荐