多线程编程常用CreateThread函数,但是该函数只能传递一个参数,要传递多个参数该怎么办呢?
其实我们把多个参数放到一个结构体中,然后把结构体的指针传递到线程函数就可以解决这个问题了。
代码如下:
先定义一个结构体,用来存放需要传递的参数;
struct Info
{
VOID* Dlg;
VOID* iStructP;
VOID* iStructM;
VOID* iStructG;
VOID* iStructPack;
};
在主函数中给参数赋值;
Info info;
info.Dlg = (VOID*)this;
info.iStructM = &monster;
info.iStructP = &player;
info.iStructPack = &package;
info.iStructG = &ggoods;
创建线程函数;
HANDLE handle = CreateThread(NULL, 0, FightMonster, (LPVOID)&info, 0, NULL);
Sleep(1000);
CloseHandle(handle);
线程函数中把参数弄出来;
Info *p = (Info*)pParam;
TabFunTest* pDlg=(TabFunTest*)p->Dlg;
Monster* pMon = (Monster*)p->iStructM;
Player* pPlay = (Player*)p->iStructP;
GroundGoods* pGoods = (GroundGoods*)p->iStructG;
好了,现在就可以愉快滴玩耍了。