如何修改MFC視窗標題
MFC程式的預設的標題是“無標題-title”,其中title是應用程式的名稱,我們應如何修改MFC視窗標題來符合自己的要求?
MFC程式的文檔類中定義了一個虛函數SetTitle,用於設定視窗標題的前半部分,如果只是要修改“無標題”部分,可以重載文檔類的該函數。視窗標題的後半部分可以通過SetWindowText設定,也可以編輯字串資源中的IDR_MAINFRAME字串,將第一個/n之前的字串替換掉即可,而如果你想把“無標題”部分除掉,則必須修該視窗的風格。
一、修改前半部分
1) 可以重載文檔類的虛函數SetTitle
void CTestDoc::SetTitle(LPCTSTR lpszTitle)
{
CDocument::SetTitle(L"你的標題");
}
也可以在 CTestDoc::OnNewDocument()中添加SetTitle(L"你的標題");
二、修改後半部分1) 修改資源字串:
將資源檔中的IDR_MAINFRAME修改為
修改此處/n/nChange/n/n/nChangeTitle.Document/nChange Document資源字串中各子串的含義可以參考:IDR_MAINFRAME字串資源中各子串的含義2) 使用架構視窗類別的SetWindowText(L"你的標題"):
在應用程式類CTestApp::InitInstance()中調用如下語句
m_pMainWnd->SetWindowText(L"你的標題");
或者在其他地方用AfxGetMainWnd()->SetWindowText(L"你的標題");3) 如果您想除掉標題中間的“-”,可以通過重CFramWnd類的OnUpdateFrameTitle函數,這個函數在VC提供的協助檔案中找不到,必須手工添加
virtual void OnUpdateFrameTitle(BOOL NaDa);void CMainFrame::OnUpdateFrameTitle(BOOL NaDa)
{
CString csAppName;
csAppName.Format(AFX_IDS_APP_TITLE);
SetWindowText(csAppName);
}
此時顯示的結果只有字串資源AFX_IDS_APP_TITLE所定義的字串4) 是在CMainFrame的PreCreateWindow函數中修改視窗風格:
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
cs.style &= ~(LONG) FWS_ADDTOTITLE;
return CFrameWnd::PreCreateWindow(cs);
}
使用此方法,視窗的標題只顯示IDR_MAINFRAME字串中第一個/n之前的部分