我在用CWinthread建立一个线程,用AfxBeginThread开始线程执行!!!我想在开始的时候同时传参数过去,比如一个SOCKET套接字,请问是如何操作的,急!!!!回答一定给分!!!!

解决方案 »

  1.   

    AfxBeginThread(线程函数, 参数, 0, 0, 0, 0);
    就行了第二个参数你就可以填进一个 socket线程函数UINT Thread(LPVOID lparam)
    {
    }
    lparam为线程接收的参数
      

  2.   

    AfxBeginThread(线程函数,参数,THREAD_PRIORITY_NORMAL);最后一个是优先级
      

  3.   

    CWinThread* AfxBeginThread(
       AFX_THREADPROC pfnThreadProc,
       LPVOID pParam,
       int nPriority = THREAD_PRIORITY_NORMAL,
       UINT nStackSize = 0,
       DWORD dwCreateFlags = 0,
       LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL 
    );
    CWinThread* AfxBeginThread(
       CRuntimeClass* pThreadClass,
       int nPriority = THREAD_PRIORITY_NORMAL,
       UINT nStackSize = 0,
       DWORD dwCreateFlags = 0,
       LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL 
    );如果是第一种调用就如楼上所说!
      

  4.   

    如果是第二方法,即你是创建的一个CWinThread的派生类的话,你可以创建一个暂停的线程,然后给线程的成员变量付值,然后再恢复线程的运行1
      

  5.   

    For example:
    m_pTransferThread = (CRemotePlayThread*) AfxBeginThread(RUNTIME_CLASS(CRemotePlayThread), THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED);
    m_pTransferThread->m_bAutoDelete=false;
    m_pTransferThread->m_pRemotePlayChannel = this;
    m_pTransferThread->m_nID = nID;
    m_pTransferThread->ResumeThread();
      

  6.   

    我用的是api函数,不过传参形式相似,请参考!        创建一个线程,进行通讯 
    m_hThread = CreateThread ( NULL,
    0, 
    ThreadProc, 
    (LPVOID) ClientSock,// 线程的参数
    0, 
    &m_idThread 
    );         DWORD WINAPI ThreadProc ( LPVOID parameter )
            {
                 SOCKET Sock = (SOCKET)parameter; //转换线程参数
                 ....
            }