CMainFrame类中有一个CSocket类指针成员:m_pClientSocket,
我在CMainFrame类中定义了启动新线程的函数StartThread(),然后自定义了线程函数(thread.h)UINT SendThread(LPVOID pParam)
{
  //在此加入访问CMainFrame类的指针成员
  return 0;
}请问,我怎么样才能正确访问CMainFrame类中的m_pClientSocket指针成员?

解决方案 »

  1.   

    把CMainFrame类的指针用pParam传到线程序.
    CSocket类定义为PUBLIC.
    然后用CMainFrame * p = (CMainFrame*) pParam;
    这样就可以访问了.但有个问题,CSocket在线程里访问有问题.你看看MSDN的说明就知道.
      

  2.   

    在你的LPVOID param中把CMainFrame的指针传过来
      

  3.   

    在CMainFrame中
    #include "thread.h"
    CSocket类定义为PUBLIC
    UINT SendThread(LPVOID pParam)
    {
      CSocket->m_pClientSocket...//在此加入访问CMainFrame类的指针成员
      return 0;
    }
      

  4.   

    以下是我的实现,已经没有问题。谢谢楼上的各位!BOOL CMainFrame::StartReceiveThread()
    {
    CWinThread* pThreadReceive = AfxBeginThread(ReceiveThread, (void *)this, 
    THREAD_PRIORITY_NORMAL);
    if (NULL == pThreadReceive)
    return FALSE;
    return TRUE;

    }UINT ReceiveThread(LPVOID pParam)
    {
    CMainFrame* pReceiveMframe = (CMainFrame*)pParam;
             return 0;
    }