【MFC】如何修改多文档视图的标签
新建工程同之前的几篇博客
新建一个调用菜单,并实现其内容
以下代码演示创建时设置标题,并保存到子框架中
#include "MFCApplication9Doc.h"
#include "MFCApplication9View.h"
void CMainFrame::On32771()
{
CMFCApplication9Doc* pDoc;
POSITION pos = theApp.m_pDocTemplate->GetFirstDocPosition();
int i = 1;
while (pos != NULL)
{
pDoc = (CMFCApplication9Doc*)(theApp.m_pDocTemplate->GetNextDoc(pos));
if (pDoc == NULL) break;
POSITION pos1 = pDoc->GetFirstViewPosition();
if (pos1 != NULL)
{
while (TRUE)
{
CMFCApplication9View* pView = (CMFCApplication9View*)pDoc->GetNextView(pos1);
if(pView==NULL) break;
CFrameWnd* pFrame = pView->GetParentFrame();
CString strTitle;
strTitle.Format(_T("第%d个页面"), i++);
pFrame->SetWindowText(strTitle);
pFrame->SetTitle(strTitle);
}
}
}
}
为了在切换窗口时保持标题,需要修改子框架的以下函数
void CChildFrame::OnUpdateFrameTitle(BOOL bAddToTitle)
{
CString str = GetTitle();
SetWindowText(str);
// CMDIChildWndEx::OnUpdateFrameTitle(bAddToTitle);
}
注意不要调用父类的函数
最后效果如下图:
源代码见文章绑定的资源