在新版VC的MFC里引入了新的MDI框架,直接支持Tabbed MDI窗口,以VC 2012为例,效果如下图:
其遍历所有子框架窗口(CChildFrame)的方式也不一样了,原来的使用CMDIFrameWnd::m_hWndMDIClient来遍历子框架窗口的方法不再适用,当然,MDINext()这种方式不在讨论之列,新的方式更加简单。
void CMainFrame::AllChildFrames(void)
{
const CObList &TabGroups = GetMDITabGroups();
if( TabGroups.GetCount() == 0 )
{
return;
}
CMFCTabCtrl *pTabCtrl = ( CMFCTabCtrl *)TabGroups.GetHead();
for(int i=0; i<pTabCtrl->GetTabsNum(); i++)
{
CMDIChildWnd * pChildWnd = dynamic_cast <CMDIChildWnd *>(pTabCtrl->GetTabWnd(i));
// pChildWnd 可以继续向下转型成当前使用的 CChildFrame,然后进行相应操作
}
}