多文档应用程序中 如何定制视图的标题?
来源:互联网 发布:刷淘宝流量 编辑:程序博客网 时间:2024/05/17 04:04
通常来说,都希望定制视图的标题----实际上是视图的框架窗口。例如:你可能希望在标准标题上增加一些文本以区别应用程序的各个视图,可能还希望移去MFC附加到文档名称中的框架号码。
解决方案:基于一个鲜为人知的未归档的虚函数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)
微软建议使用下面的技术:
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”命令-----框架窗口还保持旧的标题,这是很奇怪的。
- 多文档应用程序中 如何定制视图的标题?
- 3.20如何定制视图的标题?
- 在MFC中定制视图的标题
- 如何修改单文档应用程序的标题
- 多文档应用程序中改变视图的大小和位置!
- 3.18如何使多文档应用程序的某个视图总位于其它视图的上面?
- 文档视图结构中,定制其行为的一次实践
- VC如何更改单文档应用程序的标题
- VC如何更改单文档应用程序的标题
- 在多文档程序中给视图指定标题信息
- MFC中获取【文档】【视图】【框架】【应用程序】指针的方法
- 如何定制Launcher主菜单中应用程序的显示顺序
- 遍历应用程序的视图,文档,文档模板
- vc 多文档 视图类设置标题
- C++--在单文档的应用程序增加多个视图
- C++--在单文档的应用程序增加多个视图
- 文档视图架构:用文档/视图架构编写的MFC应用程序,在关闭应用程序时,如何防止出现“是否保存文档”的对话框。
- 3.21-如何在视图的标题中显示一个“修改过”的指示符,与某个“修改过”的文档关联?
- C/C++可变参数与默认参数
- STL容器erase的使用陷阱(三)
- 快捷键
- code coverage
- J2EE框架之Hibernate
- 多文档应用程序中 如何定制视图的标题?
- STL 陷阱或缺陷
- 温伯格《技术领导之路》——如何弯腰更省力,怎样伸手更合理
- erewr
- umount 磁盘出现 device is busy
- 电机故障的判断及其维修
- 3D游戏和仿真引擎
- TinyXML Tutorial 中文指南
- mysqldump --default-character-set