怎么样改变窗口标题?
怎么样改变窗口标题?
一般来说如果SDI和MDI程序的标题是“无标题-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所定义的字符串
另一种方法是在CMainFrame的PreCreateWindow函数中修改窗口风格:
BOOLCMainFrame::PreCreateWindow(CREATESTRUCT&cs)
{
cs.style&=~(LONG)FWS_ADDTOTITLE;
returnCFrameWnd::PreCreateWindow(cs);
}
使用此方法,窗口的标题只显示IDR_MAINFRAME字符串中第一个/n之前的部分
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所定义的字符串
另一种方法是在CMainFrame的PreCreateWindow函数中修改窗口风格:
BOOLCMainFrame::PreCreateWindow(CREATESTRUCT&cs)
{
cs.style&=~(LONG)FWS_ADDTOTITLE;
returnCFrameWnd::PreCreateWindow(cs);
}
使用此方法,窗口的标题只显示IDR_MAINFRAME字符串中第一个/n之前的部分