轉自:http://blog.sina.com.cn/s/blog_4867219f0101gmzf.html
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之前的部分
修改MFC標題欄上的圖標
HICON m_hIcon;
在MainFrm的OnCreate()里
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon
IDR_MAINFRAME字符串資源中各子串的含義
IDR_MAINFRAME字符串資源中包含7個子串,分別以”n結束,即如下格式:
“n”n”n”n”n”n”n (1)CDocTemplate::windowTitle,主窗口標題欄上的字符串,MDI程序不需要指定,將以IDR_MAINFRAME字符串為默認值。 (2)CDocTemplate::docName,缺省文檔的名稱。如果沒有指定,缺省文檔的名稱是無標題。 (3)CDocTemplate::fileNewName,文檔類型的名稱。如果應用程序支持多種類型的文檔,此字符串將顯示在”File/New”對話框中。如果沒有指定,就不能夠在”File/New”對話框處理這種文件。 (4)CDocTemplate::filterName,文檔類型的描述和一個適用于此類型的通配符過濾器。這個字符串將出現在“File/Open”對話框中的文件類型列表框中。要和CDocTemplate::filterExt一起使用。 (5)CDocTemplate::filterExt,文檔的擴展名。如果沒有指定,就不能夠在“File/Open”
新聞熱點
疑難解答