1·文檔標題的改變
文檔標題在是由工程中相應的文檔類所控制的,我們可做如下實驗。運行AppWizard生成的程序SDITitle,選擇選單中的“文件”“打開”選項,打開“SDITitile.h”文件,則標題欄變成“SDITitle.h - SDITitle”。這一切動作都是MFC類自動進行的。瞭解這一點,我們可在相應的文檔類中,利用SetTitle函數來改變文檔標題。
例:改變CSDITitleDoc::OnNewDocument()函數爲:
BOOL CSDITitleDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
return FALSE;
SetTitle (" 文檔標題 " );
return TRUE;
}
運行程序,則每次選擇選單中的“文件”的“新建”選項時,文檔標題就變成“文檔標題- SDITitle”。
2·主窗口標題的改變
主窗口的標題默認是工程的文件名,正如前面AppWazied生成的SDITitle工程執行後,標題欄的形式總爲“(文檔名)- SDITitle”。
改變主窗口的標題有兩種:
第一種方法:
利用ResourceView打開工程的資源,修改String Table中的IDR_MAINFRAME的值。
將原來的“SDITitle\n\nTitle\n\n\nTitle.Document\nTitleDocument”改爲
“標題改變示例\n\nTitle\n\n\nTitle.Document\nTitleDocument”。這樣
改變後,主窗口標題欄的形式就爲“...-標題改變示例”。
第二種方法:
具體改變方法如下:在框架類mainframe的PreCreateWindow函數前面加入一條語句:修改m_strTile的值,將其賦值成要改變的標題字符串。例:
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
m_strTitle = "開發工具"; //“開發工具”即爲新標題
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
}
這改變後,標題欄的形式就爲“...-開發工具”。
m_strTile是CFrameWnd的保護成員(令人驚奇的是,Visual C++ Books Online 4.0 不顯示類的保護和私有的成員及函數。所以在m_strTile處按F1鍵,得不到相應的幫助。要得到m_strTile更詳細的信息,請打開\msdev\mfc \include\afxwin.h文件)。CSDIMainFrame則是CFrameWnd類的派生類。
在這兩種改變方法中,第二種方法優先級高。也就是說,改變了m_strTitle的值後,IDR_MAINFRAME的值就不起作用。
3.整個標題的修改:
先在框架類mainframe的PreCreateWindow函數前面加入一條語句:cs.style &= ~FWS_ADDTOTITLE;則函數變爲:
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
cs.style &= ~FWS_ADDTOTITLE; // 把cs.style中的FWS_ADDTOTITLE風格去掉
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
}
然後再在mainframe的OnCreate中使用語句:“SetWindowText("XXX");”, 則整個標題內容變爲:XXX。