解决方案 »

  1.   

    全局变量与局部变量的问题
    uping
      

  2.   

    u can use make this->hwnd as lparam do it.
      

  3.   

    DWORD CComm::ThreadProc( LPVOID lpParam )
    {
    ///////////////////////////////////////////////////////////////////////////////////see this
    CComm *pThis = ( CComm * )lpParam;
    /////////////////////////////////////
    DWORD dwEvents, dwBytesRead; while( pThis->m_bCommOpen )
    {
    if( WaitCommEvent( pThis->m_hComm, &dwEvents, NULL ) )
    {
    if( dwEvents == EV_RXCHAR )
    {
    dwBytesRead = pThis->ReadCommBlock( pThis->m_byteBuffer, 1024 );
    if(dwBytesRead)
    {
    ResetEvent( pThis->m_hEvBufferEmpty );
    ::PostMessage( pThis->m_MainWindow, UM_DATAARRIVAL, 0, dwBytesRead );
    WaitForSingleObject( pThis->m_hEvBufferEmpty, INFINITE );
    }
    }
    }
    else
    {
    if( GetLastError() != 995 )
    pThis->ShowError();
    //AfxMessageBox( "后台线程错误, [GetLastError() != 995]", MB_OK, MB_ICONSTOP );
    return 0;
    }
    }
    return 1;
    }
      

  4.   

    我是把我的代码给你看一下:
    创建线程:
    m_pImage1Thread = AfxBeginThrea=(Image1Thread,NULL,THREAD_PRIORITY_BELOW_NORMAL,0,0);
    然后我的函数如下:
    UINT Image1Thread(void* pParam)
    {
    CDlgDisplay* pDlg = (CDlgDisplay*)pParam;
    pDlg->MyImage1();
    AfxEndThread(0);
    return 0;
    }
    然后我的MyImage1函数:
    while( m_nBegin )
    {
    // Sleep(10);
    if(IsFilled)
    {
    test2++;
    frame++;
    DrawImage();//DrawImage(); }
    }
    }
    函数DrawImage为类CDlgDisplay的成员函数,