我用AfxBeginThread生成了一个THREAD,在这个THREAD中想改写主画面的状态栏信息以显示当前THREAD的运行状态,但程序运行到这句改写状态栏的语句就会出错,然后程序就死了.但改写TITLE栏是允许的.谁能解释一下,然后我应当怎么办呢.分肯定给各位.谢谢

解决方案 »

  1.   

    你首先要得到那个主窗口的指针,然后调用CFrameWnd::SetMessageText,应该就可以吧。
    主窗口的指针,需要在AfxBeginThread函数之后,调用相应的函数来实现,或者,在AfxBeginThread创建线程的时候,通过参数传入(因为AfxBeginThread函数有两个原型)。切不可通过AfxGetMainWnd()来得到,因为它得到的是当前线程的主窗口。大概用AfxGetApp()->m_pMainWnd可以得到的。
      

  2.   

    当你在开始线程的时候将主框架窗口的指针传递给线程函数如:
    AfxBeginThread(THREAD,this);然后在线程函数中转换一下
    例如:
    UINT THREAD(LPVOID lparam)
    {
        CMainFrame* pFrame = (CMainFrame*)lparam;
        //然后在要修改状态栏的信息的时候用这个pFrame来访问状态栏就可以了
    }