vc修改標題欄的名稱和圖標
1 單文檔接口(SDI)典型窗口標題的改變
用VC的AppWizard創(chuàng)建一個名為"Exam“的單文檔類型的工程。開始運行時,程序主窗口標題形式如下: Untitled-Exam 其中"Untitied"為文檔標題,"Exam"為主窗口標題,。當用"File-Open ” 打開"my.exm"文襠以后,文檔標題變?yōu)?my.exm",。 所以程序主窗口標題欄的一般形式為: 文檔標題—主窗口標題 1.1 文檔標題的改變 文檔標題是由工程中相應的文檔類所控制的,所以就可在相應的文檔類中,利用SetTitle()函數(shù)來改變文檔標題,。 例:改變CExamDoc::on BOOL CExamDoc::On { if(!CDocument::On return FALSE; SetTitle("文檔標題"); return TRUE; } 運行程序,則每次選擇選單中的"文件"的"新建"選項時,標題就變成"文檔標題-Exam ” 1.2 主窗口標題的改變 主窗口的標題默認是工程的文件名,,改變主窗口的標題方法有兩種: 第一種方法:利用ResourceView打開工程的資源,修改String Table中的IDR_MAINFRAME的值。將原來的"Exam\n\nExam\nEXMFile(*.exm)\n.exm\nExam.Document\nExam Document"改為"標題改變示例\n\nExam\nEXM File(*.exm)\n.exm\nExam.Document\nExam Document",。這樣改變后,主窗口標題就變?yōu)?-標題改變示例",。 第二種方法:具體改變方法如下: 改變 CMainFrame的成員函數(shù)PreCreateWindowO為: BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { m_strTitle="MyTitle" ; return CFrameWnd::PreCreateWindow(cs); } 這樣改變后,主窗口標題的形式就為"-MyTitle"。 M_strTile是CFrameWnd的保護成員(要得到m_strTile更詳細的信息,查\msdev\mfc\include\afxwin.h文件),。CMainFrame是CFrameWnd類的派生類,。 在這兩種改變方法中,第二種方法優(yōu)先級高,也就是說,改變了m_strTitle的值后,IDR_MAlNFRAME的值就不起作用,。 1.3去掉文檔標題,,只保留主窗口標題 windows窗口的表現(xiàn)形式由PreCreateWindow函數(shù)的CREATESTRUCT結(jié)構(gòu)類型參數(shù)cs.style決定,其中由FWS_ADDTOTITLE類型決定是否將文檔標題加到窗口標題上的,。所以,,根據(jù)需要我們可以去掉文檔標題,只保留主窗口標題,,方法是: 在MainFrm.cpp文件中的PreCreateWindow中添加下面這句話 cs.style &=~FWS_ADDTOTITLE; 其中,,“~”是按位取反運算符,它將FWS_ADDTOTITLE的值按位取反后,,再和cs.style 值按位取與,,結(jié)果是將cs.style 值中的FWS_ADDTOTITLE標志位清0. 同樣的,如果要去掉標題欄的其他一些特征,,也可以用類似上面取反再與的方式,。 1.4 適當使用SetWindowText設置窗口標題 SetWindowText是用來設定一些特定窗口的窗口標題的,如列表框,編輯框等,,具體可查看msdn中的詳細介紹,,當然也可以用來設主窗口的窗口標題,,在應用程序的APP文件中的InitInstance函數(shù)中添加下面一句話: m_pMainWnd->SetWindowText("MyTtile"); 這樣窗口標題就只剩下類似主窗口標題的樣子了,。 但本人認為還是遵循“應該用什么做就用什么做”原則,編程要規(guī)范,。 2 對多文擋接口(MDI)類型窗口標題的改變 在MDI類型窗口中,主窗口標題和文檔標題的次序,和SDl類型窗口中次序是不同的,。結(jié)合具體例子說明,用VC的AppWizard創(chuàng)建一個名為"MDITitle"的多文擋類型的工程。創(chuàng)建完工程后,編譯運行該工程,主窗口標題形式如下:"主窗口標題-文檔標題",。 2.l 文擋標題的改變 MDI類型窗口的文檔標題也是由相應的文檔類控制的,。改變方法同SDI類型窗口類似,要改變標題,只要在相應的文檔類中利用SetTitle()函數(shù)來改變文檔標題。 2.2 主窗口標題的改變 MDI類型主窗口標題的改變方法同SDI類型窗口類似,。改變主窗口標題也有兩種方法,通過改變IDR_MAINFRAME或m_strTitle的值就可實現(xiàn)改變主窗口標題的目的,。同樣,改變了m_strTitle值后,IDR_MAINFRAME的值就不起作用。 2.3 子窗口標題的改變 在默認情況下,MFC自動將子窗口標題設為該子窗口所打開的文檔標題,。但實際上,子窗口標題與該子窗口標題所打開的文檔標題可以不一樣,。可做如下改動: 利用ResourceView打開資源,修改String Table中的IDR_MAINFRAME的值為"MyTitle",使得主窗口標題變成"MyTitle",。 并將BOOL CMDlTitleDoc::On BOOL CMDlTitleDoc::On { if(!CDocument::On return FALSE; static int count=0; char message[10]; wsprintf(message,"%s%d","文檔",count); SetTitle(message); count++; return TRUE; } 通過以上修改,主窗口標題欄被設置為:文檔標題為"上海市盧灣區(qū)業(yè)余大學-文擋0",、"MyTitle-文檔1 ” …… 一下針對子窗口標題的修改作如下改動: 將CChildFrame::PrecreateWindow()函數(shù)改為: BOOL CChiidFrame::PrecreateWindow(CREATESTRUCT&cs) cs.style &=~(LONG)FWS_ADDTOTlTLE; return CMDIChildWnd::PrecreateWindow(cs); } 要改變窗口類型, 這步工作必須做。常量問FWS_ADDTOTITLE是在文件\msdev\mfc\include\afxwin.h中定義,。 在 CMDlTitleView類中增加On void CMDlTitleView::On { CView::On Getparent()-〉SetWindowText(GetDocument()-)GetTitle()+ ” -MyTitle ” ); } 這樣,子窗口的標題欄的形式就為"文檔名-MyTitle",。 3、更改圖標 3.1自己制作一個圖標,,命名與原來默認的ico圖標相同的名稱,,放到res文件夾里的,替代它,,就可以了,,運行后就會發(fā)現(xiàn)標題圖片已變成自己設計的圖片了。
3.2在Resources-Icon-IDR_MAINFRAME上右擊-屬性-文件名改為res\程序名.ico,。 |
|
來自: 奧古斯都1 > 《profession》