1。你可以把该View的类作为参数传入进去,这是最简单的解决方法
2。你可以用如下方法得到
CWinApp * pA=AfxGetApp();
POSITION pos=pA->GetFirstDocTemplatePosition();
CDocTemplate * pDT=pA->GetNextDocTemplate(pos);
pos=pDT->GetFirstDocPosition();
CDocument * pD=pDT->GetNextDoc(pos);
pos=pD->GetFirstViewPosition();
CView * pV=pD->GetNextView(pos);
当然,原理是这样,如果你有多个View,或者有Doc,甚至有多个DocTemplate,可以适当调整
源代码我试过了,应该没什么问题了吧

解决方案 »

  1.   

    大侠,怎么把View类传进去啊。
    你说的第二种方法,我以前也用过,但是是在主线程中运行的,难道在其他线程中也能吗?
    我赶紧试一下先。
      

  2.   

    你可以在CMyApp 中生命一个CView *pView变量,在构造函数中初始化,当然,在你开始CMyApp之前,先要有一步对变量pView付值
      

  3.   

    m_pMsgLogThread=(CMsgLogThread*) AfxBeginThread(
    RUNTIME_CLASS(CMsgLogThread),THREAD_PRIORITY_BELOW_NORMAL,
    0,CREATE_SUSPENDED);
    m_pMsgLogThread->SetQueue(&MessageLogQueue);
    m_pMsgLogThread->SetDoc(pDoc);
    m_pMsgLogThread->ResumeThread();
    假设在其中有一个pView变量,而你又是在VIEW中调用AfxBeginThread,那么,你可以在后边斜这样一句m_pMsgLogThread->pView=this;
    不在view中调用的话,你需要产生一个CView *pView,你的view类。然后m_pMsgLogThread->pView=pView;注意,指针是要初始化的
      

  4.   

    我的纠正一下,我说的CView,都是你自己的View,是我没有注意犯这样的错误
      

  5.   

    dgb(dgb),大侠,你说的m_pMsgLogThread->pView=this,这是什么意思呢,CWinApp好象没有这个pView成员变量吧,它是怎么来的呢。
    非常感谢你,给你加分先
      

  6.   

    你现在解决了这个问题没有,我试过我上面的那个方法,在多线程中也是可以用的,应为App的信息是放在进程中的,可以给多个线程共享,至于说的传入指针,线程函数不是可以传入一个LPVOID类型的变量吗,你可以把View的指针传进去,再在线程里强之转化为View类型
      

  7.   

    CMsgLogThread* m_pMsgLogThread;在CMsgLogThread中有View* pView;
    如果你在View中调用的话,则可以m_pMsgLogThread->pView=this;