我用BCG制作MDI界面,我发现很多时候当产生一个CMDIChildWnd的时候,界面总是不能完整显示,但是只要一拉边框改变大小,就好了,请问这样的情况该怎样解决?开始问了,有朋友告诉我用MOVEWINDOW,我用了后,无效,他又告诉我子窗口本来就最大了,MOVEWIDOW没什么用,我现在不知道该怎么办了。
这个问题已经涉及到我的多个页面,很急啊,请哪位有耐心的朋友,能详细地告诉我,到底该怎样解决呢?
void CMainFrame::OnListInfo() 
{
    // TODO: Add your command handler code here  
    if(m_InOutListView!=NULL)
    {
        m_InOutListView->MDIActivate();
        return;
    }
    m_InOutListView=new CMDIChildWnd();
    CCreateContext context;
    context.m_pNewViewClass=RUNTIME_CLASS(CInOutListView);
    if(!m_InOutListView->LoadFrame(10001,WS_MAXIMIZE|WS_OVERLAPPEDWINDOW,this,&context))
        return;
    m_InOutListView->ShowWindow(SW_SHOWMAXIMIZED);
    m_InOutListView->InitialUpdateFrame(NULL,true);    CRect rect;    
    GetClientRect(&rect);
    m_InOutListView->GetActiveView()->MoveWindow(&rect);
}

解决方案 »

  1.   

    void CMainFrame::OnListInfo() 
    {
        // TODO: Add your command handler code here  
        if(m_InOutListView!=NULL)
        {
            m_InOutListView->MDIActivate();
            return;
        }
        m_InOutListView=new CMDIChildWnd();
        CCreateContext context;
        context.m_pNewViewClass=RUNTIME_CLASS(CInOutListView);
        if(!m_InOutListView->LoadFrame(10001,WS_MAXIMIZE|WS_OVERLAPPEDWINDOW,this,&context))
            return;
        m_InOutListView->ShowWindow(SW_SHOWMAXIMIZED);     CRect rect;    
        GetClientRect(&rect);   m_InOutListView->GetActiveView()->MoveWindow(&rect);
        m_InOutListView->InitialUpdateFrame(NULL,true);
    }
      

  2.   

    CWnd *pFrame=(CWnd *)(AfxGetApp()->m_pMainWnd);
    pFrame->RedrawWindow(NULL,NULL,RDW_ERASE|RDW_UPDATENOW|RDW_INVALIDATE);
    不能直接刷新视图,因为它是在框架里.你用上面的试试
      

  3.   

    if(m_InOutListView!=NULL)
        {
            m_InOutListView->MDIActivate();
            return;
        }
        m_InOutListView=new CMDIChildWnd();
        CCreateContext context;    context.m_pNewViewClass=RUNTIME_CLASS(CInOutListView);
        //这句话我不加会报错,如果你不需要可以去掉
        context.m_pCurrentDoc=GetActiveFrame()->GetActiveView()->GetDocument();    if(!m_InOutListView->LoadFrame(IDR_AAAATYPE,WS_MAXIMIZE|WS_OVERLAPPEDWINDOW,this,&context))
            return;
        m_InOutListView->ShowWindow(SW_SHOWMAXIMIZED);
        m_InOutListView->InitialUpdateFrame(NULL,true);
        //你应该是视图没刷新的问题
    m_InOutListView->GetActiveView()->OnUpdate(NULL, 0, NULL;)
      

  4.   

    goodboyws(深夜不眠者):
    m_InOutListView->GetActiveView()->OnUpdate(NULL, 0, NULL;)
    OnUpdate这个函数不能用,是CView的保护类型函数
      

  5.   

    goodboyws(深夜不眠者):
    m_InOutListView->GetActiveView()->OnUpdate(NULL, 0, NULL;)这句我没有用,但是可以完全显示视图了。但是框架还是不能显示
      

  6.   

    帮您顶一下!
    我比较懒用MagicSkin
      

  7.   

    goodboyws(深夜不眠者):
    更正一下,还是和以前一样
      

  8.   

    liuduofu(天上不下雨,地上也不干!) :
    用了还是不行
      

  9.   

    不好意思,那用这个
    m_InOutListView->GetActiveView()->GetDocument()->UpdateAllViews(NULL);