除改变窗口标题,关于对话框属性名称也要修改,并在rc文件的aboutID中修改为新的标题名。
http://apps.hi.baidu.com/share/detail/1926968点击打开链接摘要:讨论基于MFC类库的Windows应用程序设计中,应用程序各种标题的改变方法。
关键词:MFC Windows编程标题Visual C++
0 引言
有一个演示VC++中的消息处理的单文档应用程序。该程序开始运行的情况如下:
窗口中的初始文档标题竞显示为Untitled,实在不尽人意。
有些时候, 确实需要改变自编Windows应用程序窗口的标题。比如,想编一个标题名为"Communication soft的软件。虽然在Windows95或Windows NT下,Visual C++(以下简称VC)可以生成以"Communication soft为名的工程,但该工程下的C++类的名称也要带上这么多的字符,给编程带来不便。可以采用的方法是生成以"CS为名的工程,再把程序的标题改成 "Communication Soft。再比如,在多文档应用程序中,希望每个子窗口的标题并不是"主窗口标题t、"主窗口标题2”……这种类型,而是象"COM1速率"、"LPT并行口"……,即子窗口标题与主窗口标题无关。这时都需要改变各种窗口标题。下面介绍一下改变窗口标题所用的方法,所用的开发平台是usual
C++5.0。
1 单又挡接口(SDI)典型窗口标题的改变
首先,来看看Windows SD!类型窗口标题栏的结构形式。用VC的AppWizard创建一个名为"Exam9的单文档类型的工程。开始运行时,程序主窗口标题形式如下:
Untitled-Exam9
其中"Untitied"为文档标题,"Exam9"为主窗口标题。当用"File-Open”打开"wd1.exm"文裆以后,文档标题变为"wd1.exm"。
所以程序主窗口标题栏的一般形式为:
文裆标题----主窗口标题
1.1 文档标题的改变
既然文档标题是由工程中相应的文档类所控制的,了解这一点,就可在相应的文档类中,利用SetTitle()函数来改变文档标题。
例:改变CExam9Doc::onNewDocument()函数为:
BOOL CExam9Doc::OnNewDocument()
{
if(!CDocument::OnNewDocument())
return FALSE-
SetTitle("文档标题");
return TRUE;
}
运行程序,则每次选择选单中的"文件"的"新建"选项时,标题就变成"文档标题-Exam9”
1.2 主窗口标题的改变
主窗口的标题默认是工程的文件名,正如前面Appvvazied生成的Exam9工程执行后,标题栏的形式总为"文档标题-Exam9。
改变主窗口的标题方法有两种:
第一种方法:利用ResourceView打开工程的资源,修改String Table中的
IDR_MAINFRAME的值。将原来的"Exam9\n\nExam9\nEXMFile(*.exm)\n.exm\nExam9.Document\nExam9 Document"改为"标题改变示例
\n\nExam9\nEXM File(*.exm)\n.exm\nExam9.Document\nExam9 Document"。这样改变后,主窗口标题就变为"-标题改变示例"。第二种方法:具体改变方法如下:
改变CMainFrame的成员函数PreCreateWindowO为:
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT&cs)
{
m_strTitle="上海市卢湾区业余大学”;
return CFrameWnd::PreCreateWindow(cs);
}
这样改变后,主窗口标题的形式就为"-上海市卢湾区业余大学"。
M_strTile是CFrameWnd的保护成员(要得到m_strTile更详细的信息,请打开\msdev\mfc\include\afxwin.h文件)。CMainFrame则是CFrameWnd类的派生类。
在这两种改变方法中,第二种方法优先级高。也就是说,改变了m_strTitle的值后,IDR_MAlNFRAME的值就不起作用。
2 对多文挡接口(MDI)类型窗口标题的改变
在MDI类型窗口中,主窗口标题和文档标题的次序,和SDl类型窗口中次序是不同的。结合具体例子说明,用VC的AppWizard创建一个名为"MDITitle"的多文挡类型的工程。创建完工程后,编译运行该工程,主窗口标题形式如下:"主窗口标题-文档标题"。
2.l 文挡标题的改变
MDI类型窗口的文档标题也是由相应的文档类控制的。改变方法同SDI类型窗口类似,要改变标题,只要在相应的文档类中利用SetTitle()函数来改变文档标题。
2.2 主窗口标题的改变
MDI类型主窗口标题的改变方法同SDI类型窗口类似。改变主窗口标题也有两种方法,通过改变IDR_MAINFRAME或m_strTitle的值就可实现改变主窗口标题的目的。同样,改变了m_strTitle值后,IDR_MAINFRAME的值就不起作用。
2.3 子窗口标题的改变
在默认情况下,MFC自动将子窗口标题设为该子窗口所打开的文档标题。但实际上,子窗口标题与该子窗口标题所打开的文档标题可以不一样。可做如下改动:
利用ResourceView打开资源,修改String Table中的IDR_MAINFRAME的值为"上海市卢湾区业余大学",使得主窗口标题变成"上海市卢湾区业余大学"。
并将BOOL CMDlTitleDoc::OnNewDocument()函数改为:
BOOL CMDlTitleDoc::OnNewDocument()
{
if(!CDocument::OnNewDocument())
return FALSE;
static int count=0;
char message[10];
wsprintf(message,"%s%d","文档",count);
SetTitle(message);
count++;
return TRUE;
}
通过以上修改,主窗口标题栏被设置为:文档标题为"上海市卢湾区业余大学-文挡0"、"上海市卢湾区业余大学-文档1”……
一下针对子窗口标题的修改作如下改动:
将CChildFrame::PrecreateWindow()函数改为:
BOOL CChiidFrame::PrecreateWindow(CREATESTRUCT&cs)
cs.style &=~(LONG)FWS_ADDTOTlTLE;
return CMDIChildWnd::PrecreateWindow(cs);
}
要改变窗口类型, 这步工作必须做。常量问FWS_ADDTOTITLE是在文件\msdev\mfc\include\afxwin.h中定义。
在CMDlTitleView类中增加OnlnitialUpdate()函数:
void CMDlTitleView::OnlnitiaiUpdate()
{
CView::OninitialUpdate();
Getparent()-〉SetWindowText(GetDocument()-)GetTitle()+”-上海卢湾区业余大学”);
}
这样,子窗口的标题栏的形式就为"文档名-上海卢湾区业余大学"。
参考资料:
[1]Michaei Morrison:Sams Tech Yourself MFC in 24Hours
[2]David krugiinski:Programming Microsoft Visual C++,FiHh Edition
[3]Kate Gregory:Special Edition Using Visual C++5
分享到:
相关推荐
VC 窗体美化源码_换肤改变窗口风格,美化你的应用程序外观界面,让人耳目一新...本窗体美化实例将让你学会如何去改变窗体默认的标题栏、状态栏还有整体窗口的外观风格,让你的应用程序窗口更加漂亮,更能表达你的意图。
改变应用程序的图标 7 改变窗口标题的方法 7 剪切板上通过增强元文件拷贝图像数据 8 剪切板上文本数据的传送 8 捕捉屏幕图像到剪切板中 9 将位图缩放显示 11 改变对话框中控件的颜色 12 修改窗口外观 14 获得应用...
23、如何改变窗口标题 24、如何防止主框窗口在其说明中显示活动的文档名 25、如何获取有关窗口正在处理的当前消息的信息 26、如何创建一个不规则形状的窗口 27、如何在代码中获取工具条和状态条的指针 28、如何使能...
...................\Visual C++窗口标题改变的几种方法.doc ...................\Windows 界面设计:拉帘按钮设计.doc ...................\XListBox-自画条目背景和文字颜色的listbox控件.doc ..................
问:如何将应用程序窗口置于屏幕正中? 64 问:VC6.0对VC5.0的兼容性? 64 问:打印和打印机的问题? 64 问:CRichEditCtrl滚动条的问题? 65 问:从数据库中读大于32k的内容? 65 问:如何获得CRichEditCtrl中字符的位置...
Windows程序运行原理及程序编写流程,窗口产生过程,句柄原理,消息队列,回调函数,窗口关闭与应用程序退出的工作关系,使用VC++的若干小技巧,stdcall与cdecl调用规范的比较,初学者常犯错误及注意事项。...
标准Windows应用程序窗口一般为带有标题栏的浅灰色矩形外观,因而“异形”对话框/窗口也主要是颜色与外形上动手脚。改变背景颜色 改变对话框(窗口)的背景颜色是最简单的改变Windows应用程序外观的方法,根据...
内容索引:VC/C++源码,界面编程,字体颜色,窗体标题 vc++ 改变任意窗体的字体大小及颜色,将常规的字体大小自定义为你想要的大小,并且可以改变字体的颜色。
<br>22、如何改变视窗的背景颜色 <br>23、如何改变窗口标题 <br>24、如何防止主框窗口在其说明中显示活动的文档名 Visual C++编程小技巧之九 <br>68. VC1.5下如何跳到第一事例? <br>69. 为...
1.8 多媒体触摸屏程序应用实例 实例032 采购中心多媒体触摸屏程序 实例033 为触摸屏程序添加虚拟键盘 1.9 窗体位置应用实例 实例034 不可移动的窗体 实例035 始终在最上面的窗体 ...
问:如何将应用程序窗口置于屏幕正中? 64 问:VC6.0对VC5.0的兼容性? 64 问:打印和打印机的问题? 64 问:CRichEditCtrl滚动条的问题? 65 问:从数据库中读大于32k的内容? 65 问:如何获得CRichEditCtrl中字符的位置...
23、如何改变窗口标题 5 24、如何防止主框窗口在其说明中显示活动的文档名 6 25、如何获取有关窗口正在处理的当前消息的信息 6 26、如何创建一个不规则形状的窗口 6 27、如何在代码中获取工具条和状态条的指针 8 28...
内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...
如何获得应用程序主窗口的指针 如何获得指定点的窗口 如何最大化和最小化窗口 如何设置窗口的大小和位置 如何使窗口居中显示 如何使窗口顶层显示 如何设置窗口的图标 如何获得和设置窗口的标题 ...
(108) 如何将应用程序窗口置于屏幕正中? 82 (1)当文档被修改时,如何在标题上加上标志'*'? 82 (2)VC6.0对VC5.0的兼容性? 83 (3)打印和打印机的问题? 83 (4)CRichEditCtrl滚动条的问题? 84 (5)从数据库中读大于32k的...
内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...
应用程序组成和事件处理 49 基本组成 49 窗口消息和事件 50 事件传递过程 50 创建根窗口(ROOTFORM) 50 创建根窗口 50 释放根窗口 51 释放根窗口和注意事项 51 建议 51 白屏问题 51 ...
应用程序组成和事件处理 49 基本组成 49 窗口消息和事件 50 事件传递过程 50 创建根窗口(ROOTFORM) 50 创建根窗口 50 释放根窗口 51 释放根窗口和注意事项 51 建议 51 白屏问题 51 ...
内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...
内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...