怎么会呢?
POSITION ps;
CString txt;
ps = GetFirstViewPosition();
while (ps)
{
  CView *view = GetNextView(ps);
  view->UpdateWindow();
}
 就可以了

解决方案 »

  1.   

    我debug了,就是第一次有值,以后的ps 就是 0x00000000。
    我也想不通,几个窗口没理由属于同一个‘视’啊。
    这段代码是在 CTestDoc::中写的。
      

  2.   

    GetNextView是获得一个Document的多个View,大概因为这个才只找到View吧。
    关键找多个Document的多个View怎么办。
      

  3.   

    双层循环,外层GetFirstDocumentPosition(),GetNextDoc。内层就是你写的,不知道对不对,不敢肯定。
      

  4.   

    我的程序好简单,只有一个doc: CTestDoc ,真的很奇怪。
    另外的处理就是在 CChildFrame 中 捕获了当前子窗口的
     WM_SIZE 消息,然后发给当前的 View,
    ,这个应该不影响它吧。
      

  5.   

    GetFirstViewPosition()函数获得第一个视窗位置,以现有位置参数用GetNextView()函数获取此视窗和后续视窗的指针。用IsKindOf()函数判定。
      

  6.   

    判断出来也不行啊,第一次用GetNextView(ps)之后 ps 就空了,不再循环下去了。
    我想是不是我在 CChildFrame 中 捕获并发给 view这个处理有问题。
      

  7.   

    CTestDoc是一个啊,但是CTestDoc的对象有很多啊!
    每个MDIChild都映射到不同的CTestDoc对象!
      

  8.   

    POSITION pos = pDoc->GetFirstViewPosition();
    while(pos)
    {
    pView =(CTestView *) pDoc->GetNextView( pos );
    if(pView->IsKindOf(RUNTIME_CLASS(CTestView))==TRUE) break;
    }
      

  9.   

    TO : plato(天天) 
    以下的OnClose 是个菜单处理函数
    void CTestDoc::OnClose() 
    {
      CString txt;
      POSITION ps;
      ps = GetFirstViewPosition();
      while (ps)
      {
    CView *view =(CTestView*)GetNextView(ps);   //这个函数之后 ps 为空了.
    view->GetWindowText(txt);
    AfxMessageBox(txt);
      } 
    }
    这段代码有问题吗?