转 MFC/Windows编程之修改窗口标题
后来发现如果要改单文档应用的时候, 会需要用到下面的代码,补上......
下面这一小段代码摘自
http://topic.csdn.net/u/20070423/10/afdc9fb3-5c33-4027-875b-a9d5e6c0a688.html
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
cs.style &= ~(FWS_ADDTOTITLE);//去掉主窗口标题中的 "未命名 "
m_strTitle = "新窗口标题名 "; //在这里修改SDI主窗口的标题名
return TRUE;
}
转自 http://blog.pfan.cn/xman/34012.html
首先我们启动Visual Studio2005,新建项目Test利用MFC App Wizard 生成MFC应用程序框架。程序运行后显示如下:
修改窗口标题字符串“无标题-Test”
<1> 修改前半部分
方法一:更改StringTable的IDR_MAINFRME的标题,将第一个\n之和第二个\n之间添加字符串fan为:
Test\nfan\nTest\n\n\nTest.Document\nTest.Document
方法二:在 CEX041Doc::OnNewDocument()中添加SetTitle("我的程序");
BOOL CTestDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
return FALSE;
// TODO: 在此添加重新初始化代码
SetTitle(L"fan");
// (SDI 文档将重用该文档)
return TRUE;
}
方法三:重载虚函数SetTitle
void CTestDoc::SetTitle(LPCTSTR lpszTitle)
{
// TODO: 在此添加专用代码和/或调用基类
CDocument::SetTitle(L"fan");
}
运行结果如下:
<2>修改后半部分
修改StringTable的IDR_MAINFRME的标题,将第一个\n之前的字符串Test替换为XJTU:XJTU\nfan\nEX041\n\n\nEX041.Document\nEX041.Document
运行结果如下:
<3>去掉标题中间的“-”
方法一:可以通过利用CWnd::SetWindowText即:void SetWindowText( LPCTSTR lpszString );在CEX041App::InitInstance()中调用如下语句m_pMainWnd->SetWindowText(L"XJTU");或在其他地方用(AfxGetMainWnd())->SetWindowText(L"XJTU");也可以得到相同的结果。
方法二:重载CFramWnd类的OnUpdateFrameTitle函数,这个函数在VC提供的帮助文件中找不到,利用类向导重写virtual void OnUpdateFrameTitle(BOOL bAddToTitle)
void CMainFrame::OnUpdateFrameTitle(BOOL bAddToTitle)
{
// TODO: 在此添加专用代码和/或调用基类
SetWindowText(L"XJTU");
CFrameWnd::OnUpdateFrameTitle(bAddToTitle);
}
方法三:在CMainFrame的PreCreateWindow函数中修改窗口风格:
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
cs.style &= ~(LONG) FWS_ADDTOTITLE;
return CFrameWnd::PreCreateWindow(cs);
}
使用此方法,窗口的标题只显示IDR_MAINFRAME字符串中第一个\n之前的部分。
运行结果如下:
浙公网安备 33010602011771号