我在自己创建的类CComm里打开了一个线程,又从线程中调用了CComm里的一个函数,可是在这个函数里向view类发送消息怎么也不成功,程序如下:
//-----------获取View类指针-------多文档方式--------------------------------------------
         CMDIFrameWnd *pFrame = 
(CMDIFrameWnd*)AfxGetApp()->m_pMainWnd; CMDIChildWnd *pChild = 
(CMDIChildWnd *) pFrame->GetActiveFrame(); CView *pView = (CView *) pChild->GetActiveView();
if(pView!=NULL)
pView->SendMessage(WM_COMM_RXCHAR,(WPARAM) buf,(LPARAM) len);//向view类发送消息调试发现pView指针为0,貌似pChild也没有得到(虽然不是0);把上面一段程序移到此类中任意其他函数中,都可以正常发送消息,为什么线程调用的函数就不可以呢?请高手帮帮忙吧,谢谢啦

解决方案 »

  1.   

    CMDIFrameWnd *pFrame =  
    (CMDIFrameWnd*)AfxGetApp()->m_pMainWnd;你看你在线程中得到的这个pFrame和你在非线程中得到的值是同一个东西吗?_AFXWIN_INLINE CWinApp* AFXAPI AfxGetApp()
    { return afxCurrentWinApp; }
      

  2.   

    谢谢大家了,这几天有点事,没能上网,呵呵,我对线程不大了解,不过问题解决了,好像是在线程里得不到有效的活动窗口,我把获取pView的部分放到执行线程之前就可以用了
      

  3.   

    (CMDIChildWnd *) pFrame->GetActiveFrame()。。最好不要这样
    可能你没有选中你要的窗体