我用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);
}
这个问题已经涉及到我的多个页面,很急啊,请哪位有耐心的朋友,能详细地告诉我,到底该怎样解决呢?
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);
}
{
// 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);
}
pFrame->RedrawWindow(NULL,NULL,RDW_ERASE|RDW_UPDATENOW|RDW_INVALIDATE);
不能直接刷新视图,因为它是在框架里.你用上面的试试
{
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;)
m_InOutListView->GetActiveView()->OnUpdate(NULL, 0, NULL;)
OnUpdate这个函数不能用,是CView的保护类型函数
m_InOutListView->GetActiveView()->OnUpdate(NULL, 0, NULL;)这句我没有用,但是可以完全显示视图了。但是框架还是不能显示
我比较懒用MagicSkin
更正一下,还是和以前一样
用了还是不行
m_InOutListView->GetActiveView()->GetDocument()->UpdateAllViews(NULL);