我现在有个需求,要在新建视图时检查当前视图数量,如果有一个视图,则设置MAINFRAME的大小和位置,并且最大化CHILDFRAME,如果有两个视图,则最大化MAINFRAME,并且让每个视图都回到NORMAL状态,而且平铺显示
现在有一个视图的情况我已经做好了,在视图OnInitialUpdate()中实现,代码: if(m_iTotalView == 1)
{
AfxGetApp()->GetMainWnd()->MoveWindow(0,256,1280,512,TRUE);
GetParentFrame()->ShowWindow( SW_SHOWMAXIMIZED );
}
但是有两个视图的情况现在不起效果,代码: else if(m_iTotalView == 2)
{
AfxGetApp()->GetMainWnd()->ShowWindow(SW_SHOWMAXIMIZED);
POSITION pos = m_pDoc->GetFirstViewPosition();
CView *pView = NULL;
while((pView = m_pDoc->GetNextView(pos)) != NULL)
{
pView->GetParentFrame()->ShowWindow(SW_SHOWNORMAL);
}
AfxGetApp()->GetMainWnd()->PostMessage(WM_MDITILE, MDITILE_HORIZONTAL);
}
这里有两个问题
1、用GetNextView遍历View的时候只能找到当前View,为什么?如何才能找到所有的View?
2、MAINFRAME是最大化了,但是视图没有变成NORMAL状态,也没有被平铺,请问如何才能实现这一点?
现在有一个视图的情况我已经做好了,在视图OnInitialUpdate()中实现,代码: if(m_iTotalView == 1)
{
AfxGetApp()->GetMainWnd()->MoveWindow(0,256,1280,512,TRUE);
GetParentFrame()->ShowWindow( SW_SHOWMAXIMIZED );
}
但是有两个视图的情况现在不起效果,代码: else if(m_iTotalView == 2)
{
AfxGetApp()->GetMainWnd()->ShowWindow(SW_SHOWMAXIMIZED);
POSITION pos = m_pDoc->GetFirstViewPosition();
CView *pView = NULL;
while((pView = m_pDoc->GetNextView(pos)) != NULL)
{
pView->GetParentFrame()->ShowWindow(SW_SHOWNORMAL);
}
AfxGetApp()->GetMainWnd()->PostMessage(WM_MDITILE, MDITILE_HORIZONTAL);
}
这里有两个问题
1、用GetNextView遍历View的时候只能找到当前View,为什么?如何才能找到所有的View?
2、MAINFRAME是最大化了,但是视图没有变成NORMAL状态,也没有被平铺,请问如何才能实现这一点?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货