一般的线程函数 UINT MyThread(LPVOID p),如果我想传参,
UINT MyThread(LPVOID p,char * filename)
请问AfxBeginThread();里面的参数怎么设置,
我是这样设置的AfxBeginThread(MYThread,(LPVOID) this)有问题

解决方案 »

  1.   

    那是不能传2个参数的。
    你可以使用一个结构来表示这2个参数。然后就把这个结构作为一个参数传进去了。struct MyStruct
    {
       LPVOID p;
       char szFileName[256];
    };MyStruct *pStruct = new MyStruct;
    pStruct->p = p;
    strcpy(pStruct->szFileName, filename);
    AfxBeginThread(MYThread,(LPVOID)pStruct);UINT MyThread(LPVOID p)
    {
      MyStruct *pStruct = (MyStruct *) p;
      
      ........  delete pStruct;
    }
      

  2.   

    this指针错误!
    因为传入的指针必须是产生于堆上,栈上产生的是无效的,注意二楼的
    MyStruct *pStruct = new MyStruct;
    pStruct->p = p;这一段