一.运行后
BOOL CChildFrame::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: 在此处通过修改 CREATESTRUCT cs 来修改窗口类或样式
cs.style &= ~FWS_ADDTOTITLE;
if( !CMDIChildWndEx::PreCreateWindow(cs) )
return FALSE;
return TRUE;
}
void CViewTest::OnInitialUpdate()
{
CView::OnInitialUpdate();
// TODO: 在此添加专用代码和/或调用基类
GetParent()->SetWindowText(_T("测试视图")); // 设置选项卡标题
}
二.开始时
微软建议使用下面的技术:
BOOL CChildFrame::preCreateWindow(cs)
{
cs.style &= ~FWS_ADDTOTITLE;
return CMDIChildWnd::preCreateWindow(cs)
}
void CDrawView::OnInitialUpdate()
{
CView::::OnInitialUpdate();
CString strDocTitle=GetDocument()->GetTitle();
CString strFrameTitle="My Own <"+ strDocTitle +">";
GetParentFrame()->SetWindowText(strFrameTitle);
}
这个方法差不多能工作,它的主要缺点是只能在创建过程中设置框架窗口的标题。因此,如果文档名称改变了-----例如,用户执行了“File->Save As”命令-----框架窗口还保持旧的标题,这是很奇怪的。
三.开始时(无法设置空标题,且进断点多次)解决方案:基于一个鲜为人知的未归档的虚函数CFrameWnd::OnUpdateFrameTitle()。每个CFrameWnd派生类都可以重载改函数,这样就能够定制显示的框架标题。每当框架窗口显示它的标题时,MFC就调用该函数。
因为OnUpdateFrameTitle()是一个未归档的可重载虚函数,所以必须在没有任何ClassWizard帮助下手工把该函数增加到视图的框架窗口类中。
//1、在视图的框架窗口类定义中增加
virtual void OnUpdateFrameTitle( BOOL bAddToTitle );
//2、在视图的框架窗口类实现中增加
void CChildFrame::OnUpdateFrameTitle( BOOL bAddToTitle )
{
// 1 - First call default function
CMDIChildWnd::OnUpdateFrameTitle( bAddToTitle );
// 2 - Now adapt the title to our taste
// 2a - Get the "standard" frame title
CString strInitialTitle;
GetWindowText( strInitialTitle );
// 2b - Build our custom frame title
CString strMyTitle = "Drawing View <" + strInitialTitle + ">";
SetWindowText( strMyTitle );
}
//========================另外一种实现方法
//2、在视图的框架窗口类实现中增加
void CChildFrame::OnUpdateFrameTitle( BOOL bAddToTitle )
{
// 1 - First call default function
CMDIChildWnd::OnUpdateFrameTitle( bAddToTitle );
// 2 - Now adapt the title to our taste
// 2a - Get the document title
CDocument* pDoc = GetActiveDocument();
if( pDoc )
{
CString strDocTitle = pDoc->GetTitle();
// 2b - Build our custom frame title
CString strMyTitle = "Form - " + strDocTitle;
SetWindowText( strMyTitle );
}
}
第一种方法使用CWnd::GetWindowText()来检索标准的MFC框架标题,能得到整个标准的MFC框架标题,如果一个文档有多个视图打开,则该标题将可能包括框架的数目(例如:Drawing1.ek1:2).
而第二种方法只检索文档的标题,(例如:Drawing1.ek1)
参考:http://blog.csdn.net/yjkwf/article/details/5283936