如何在控制函数UINT ThreadControl(LPVIOD pParam)
中调用CMSComm的对象和其它类的对象。
我写了一个如下,
UINT CGyroView::MyThreadProc(LPVOID pParam)
{
CMSComm *pMy=(CMSComm*)pParam;
m_wls.Empty();

if(!pMy->GetPortOpen()) //´ò¿ª´®¿Úm_Com. 
pMy->SetPortOpen(1);// m_Com.  
    
CByteArray array;     
    array.RemoveAll();
    array.SetSize(1);
array.SetAt(0, 'c');
pMy->SetOutput(COleVariant(array));//m_Com.
return 0;
//UpdateData(TRUE);
UpdateData(FALSE);
}
有四种错误,第一种是wls.empty()没有类的支持。(其实它是一个CString对象)。
            第二种是CMSComm对象m_Com不能调用。
            第三种是UpdateData()不能在此函数中调用
            最后一种是联接不成功
请各位高手解答。

解决方案 »

  1.   

    MyThreadProc应该是一个线程函数吧,此时的成员m_wls当然不能在此直接使用了
      

  2.   

    MyThreadProc应该是static函数吧,类成员不能直接使用了
      

  3.   

    应该这样
    UINT CGyroView::MyThreadProc(LPVOID pParam)
    {
    CGyroView *pView=(CGyroView*)pParam;
             return pView ->Test();
    }
    UINT CGyroView::Test()
    {
    m_wls.Empty();

    if(!m_Com.GetPortOpen()) 
    m_Com.SetPortOpen(1);// m_Com.  
        
    CByteArray array;     
             array.RemoveAll();
             array.SetSize(1);
    array.SetAt(0, 'c');
    m_Com.SetOutput(COleVariant(array));//m_Com.
    UpdateData(FALSE); //这里有线程危险,最好使用PostMessage
             return 0;
    //UpdateData(TRUE);
    }