typedef struct
{
SOCKET sClient;
DWORD dwIP;
}ClientInfo;ClientInfo *client =new ClientInfo;AfxBeginThread(ClientCommand,(LPVOID)client ) ///???/改怎么转成LPVOID啊?

解决方案 »

  1.   

    你已经转换了
    typedef struct
    {
    SOCKET sClient;
    DWORD dwIP;
    }ClientInfo;
    UINT ClientCommand(LPVOID lpParam)
    {
    ClientInfo *pClientInfo = (ClientInfo*)lpParam; return 0;
    }
    {
    ClientInfo *client =new ClientInfo;
    AfxBeginThread(ClientCommand,(LPVOID)client );
    }
      

  2.   

    可是有问题啊
    E:\测试程序\ThreadTest\ServerJob.cpp(110) : error C2665: 'AfxBeginThread' : none of the 2 overloads can convert parameter 1 from type 'unsigned int (void *)'
      

  3.   

    是你的第一个参数的问题,应该传进去原型为UINT Fun(LPVOID lp);类型的函数才对.
    看看你的ClientCommand定义.
      

  4.   

    static UINT WINAPI ClientCommand(LPVOID lpParam);UINT WINAPI CServerJob::ClientCommand(LPVOID lpParam)
    {
    return 1;
    }这样定义为什么不可以啊?
      

  5.   

    DWORD ThreadID;
    HANDLE htmp=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ClientCommand,(LPVOID)client,CREATE_SUSPENDED,&ThreadID);
    这样可以.CreateThread和AfxBeginThread有什么区别啊?
      

  6.   

    AfxBeginThread是mfc封装类,比较好用
      

  7.   

    CreateThread对于跨线程传递mfc对象,容易出错