怎么样改变窗口标题?

怎么样改变窗口标题?

 

一般来说如果SDIMDI程序的标题是无标题-title”,其中title是应用程序的名称,此时想要改变应用程序的标题,该怎么办呢?
MSVC++的文档类中定义了一个虚函数SetTitle,用于设置窗口标题的前半部分,如果只是要修改无标题部分,可以重载文档类的该函数。窗口标题的后半部分可以通过SetWindowText设置,也可以编辑字符串资源中的IDR_MAINFRAME字符串,将第一个/n之前的字符串替换掉即可,而如果你想把无标题部分除掉,则必须修该窗口的风格。

修改前半部分
1重载虚函数SetTitle
voidCChangeTitleDoc::SetTitle(LPCTSTRlpszTitle)
{

CDocument::SetTitle("
我的标题,呵呵");
}


修改后半部分
2将字符串资源中的IDR_MAINFRAME修改为
我的程序/n/nChange/n/n/nChangeTitle.Document/nChangeDocument

2
的替代方法,在程序的任何地方调用如下语句
(AfxGetMainWnd())->SetWindowText("我的程序");

3
如果您想除掉标题中间的“-”,可以通过重CFramWnd类的OnUpdateFrameTitle函数,这个函数在VC提供的帮助文件中找不到,必须手工添加
virtualvoidOnUpdateFrameTitle(BOOLNaDa);

voidCMainFrame::OnUpdateFrameTitle(BOOLNaDa)
{
CStringcsAppName;
csAppName.Format(AFX_IDS_APP_TITLE);
SetWindowText(csAppName);
}

此时显示的结果只有字符串资源AFX_IDS_APP_TITLE所定义的字符串

另一种方法是在CMainFramePreCreateWindow函数中修改窗口风格:
BOOLCMainFrame::PreCreateWindow(CREATESTRUCT&cs)
{
cs.style&=~(LONG)FWS_ADDTOTITLE;
returnCFrameWnd::PreCreateWindow(cs);
}

使用此方法,窗口的标题只显示IDR_MAINFRAME字符串中第一个/n之前的部分