• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Welcome to ErranLi's Blog!

              C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
              106 Posts :: 1 Stories :: 97 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(12)

            搜索

            •  

            積分與排名

            • 積分 - 175914
            • 排名 - 151

            最新評論

            閱讀排行榜

            改變VC++應用程序窗口的標題

            上海盧灣區業余大學????? 邵祖銘

            ? 要:討論基于MFC類庫的Windows應用程序設計中,應用程序各種標題的改變方法。

            關鍵詞:MFC Windows編程標題Visual C++

            0 引言

            有一個演示VC++中的消息處理的單文檔應用程序。該程序開始運行的情況如下:

            窗口中的初始文檔標題競顯示為Untitled,實在不盡人意。

            有些時候, 確實需要改變自編Windows應用程序窗口的標題。比如,想編一個標題名為"Communication soft的軟件。雖然在Windows95或Windows NT下,Visual C++(以下簡稱VC)可以生成以"Communication soft為名的工程,但該工程下的C++類的名稱也要帶上這么多的字符,給編程帶來不便。可以采用的方法是生成以"CS為名的工程,再把程序的標題改成 "Communication Soft。再比如,在多文檔應用程序中,希望每個子窗口的標題并不是"主窗口標題t、"主窗口標題2 ……這種類型,而是象"COM1速率"、"LPT并行口"……,即子窗口標題與主窗口標題無關。這時都需要改變各種窗口標題。下面介紹一下改變窗口標題所用的方法,所用的開發平臺是usual C++5.0。

            1 單又擋接口(SDI)典型窗口標題的改變

            首先,來看看Windows SD!類型窗口標題欄的結構形式。用VC的AppWizard創建一個名為"Exam9的單文檔類型的工程。開始運行時,程序主窗口標題形式如下:

            Untitled-Exam9

            其中"Untitied"為文檔標題,"Exam9"為主窗口標題。當用"File-Open 打開"wd1.exm"文襠以后,文檔標題變為"wd1.exm"。

            所以程序主窗口標題欄的一般形式為:

            文襠標題----主窗口標題

            1.1 又檔標題的改變

            既然文檔標題是由工程中相應的文檔類所控制的,了解這一點,就可在相應的文檔類中,利用SetTitle()函數來改變文檔標題。

            例:改變CExam9Doc::onNewDocument()函數為:

            BOOL CExam9Doc::OnNewDocument()

            {

            if(!CDocument::OnNewDocument())

            return FALSE-

            SetTitle("文檔標題");

            return TRUE;

            }

            運行程序,則每次選擇選單中的"文件"的"新建"選項時,標題就變成"文檔標題-Exam9

            1.2 主窗口標題的改變

            主窗口的標題默認是工程的文件名,正如前面Appvvazied生成的Exam9工程執行后,標題欄的形式總為"文檔標題-Exam9。

            改變主窗口的標題方法有兩種:

            第一種方法:利用ResourceView打開工程的資源,修改String Table中的

            IDR_MAINFRAME的值。將原來的"Exam9\n\nExam9\nEXMFile(*.exm)\n.exm\nExam9.Document\nExam9 Document"改為"標題改變示例

            \n\nExam9\nEXM File(*.exm)\n.exm\nExam9.Document\nExam9 Document"。這樣改變后,主窗口標題就變為"-標題改變示例"。第二種方法:具體改變方法如下:

            改變 CMainFrame的成員函數PreCreateWindowO為:

            BOOL CMainFrame::PreCreateWindow(CREATESTRUCT&cs)

            {

            m_strTitle="上海市盧灣區業余大學 ;

            return CFrameWnd::PreCreateWindow(cs);

            }

            這樣改變后,主窗口標題的形式就為"-上海市盧灣區業余大學"。

            M_strTile是CFrameWnd的保護成員(要得到m_strTile更詳細的信息,請打開\msdev\mfc\include\afxwin.h文件)。CMainFrame則是CFrameWnd類的派生類。

            在這兩種改變方法中,第二種方法優先級高。也就是說,改變了m_strTitle的值后,IDR_MAlNFRAME的值就不起作用。

            2 對多文擋接口(MDI)類型窗口標題的改變

            MDI類型窗口中,主窗口標題和文檔標題的次序,和SDl類型窗口中次序是不同的。結合具體例子說明,用VC的AppWizard創建一個名為"MDITitle"的多文擋類型的工程。創建完工程后,編譯運行該工程,主窗口標題形式如下:"主窗口標題-文檔標題"。

            2.l 文擋標題的改變

            MDI類型窗口的文檔標題也是由相應的文檔類控制的。改變方法同SDI類型窗口類似,要改變標題,只要在相應的文檔類中利用SetTitle()函數來改變文檔標題。

            2.2 主窗口標題的改變

            MDI類型主窗口標題的改變方法同SDI類型窗口類似。改變主窗口標題也有兩種方法,通過改變IDR_MAINFRAME或m_strTitle的值就可實現改變主窗口標題的目的。同樣,改變了m_strTitle值后,IDR_MAINFRAME的值就不起作用。

            2.3 子窗口標題的改變

            在默認情況下,MFC自動將子窗口標題設為該子窗口所打開的文檔標題。但實際上,子窗口標題與該子窗口標題所打開的文檔標題可以不一樣。可做如下改動:

            利用ResourceView打開資源,修改String Table中的IDR_MAINFRAME的值為"上海市盧灣區業余大學",使得主窗口標題變成"上海市盧灣區業余大學"。

            并將BOOL CMDlTitleDoc::OnNewDocument()函數改為:

            BOOL CMDlTitleDoc::OnNewDocument()

            {

            if(!CDocument::OnNewDocument())

            return FALSE;

            static int count=0;

            char message[10];

            wsprintf(message,"%s%d","文檔",count);

            SetTitle(message);

            count++;

            return TRUE;

            }

            通過以上修改,主窗口標題欄被設置為:文檔標題為"上海市盧灣區業余大學-文擋0"、"上海市盧灣區業余大學-文檔1 ……

            一下針對子窗口標題的修改作如下改動:

            CChildFrame::PrecreateWindow()函數改為:

            BOOL CChiidFrame::PrecreateWindow(CREATESTRUCT&cs)

            cs.style &=~(LONG)FWS_ADDTOTlTLE;

            return CMDIChildWnd::PrecreateWindow(cs);

            }

            要改變窗口類型, 這步工作必須做。常量問FWS_ADDTOTITLE是在文件\msdev\mfc\include\afxwin.h中定義。

            CMDlTitleView類中增加OnlnitialUpdate()函數:

            void CMDlTitleView::OnlnitiaiUpdate()

            {

            CView::OninitialUpdate();

            Getparent()-〉SetWindowText(GetDocument()-)GetTitle()+ -上海盧灣區業余大學 );

            }

            這樣,子窗口的標題欄的形式就為"文檔名-上海盧灣區業余大學"。

            參考資料:

            [1]Michaei Morrison:Sams Tech Yourself MFC in 24Hours

            [2]David krugiinski:Programming Microsoft Visual C++,FiHh Edition

            [3]Kate Gregory:Special Edition Using Visual C++5

            posted on 2007-10-13 20:02 erran 閱讀(2815) 評論(0)  編輯 收藏 引用 所屬分類: MFC
            99麻豆久久久国产精品免费| 97久久精品人人澡人人爽| 天堂无码久久综合东京热| 无码任你躁久久久久久久| 久久无码AV中文出轨人妻| 久久精品国产一区| 亚洲欧洲久久av| 久久青青草原精品国产| 久久国产成人亚洲精品影院| 久久人人爽人人爽人人片AV东京热| 久久人人爽人人爽人人片av高请| 9191精品国产免费久久| 伊人久久精品无码二区麻豆| 97精品伊人久久久大香线蕉 | 99久久婷婷国产综合亚洲| 国产精品VIDEOSSEX久久发布| 欧美日韩精品久久久久| 青青热久久综合网伊人| 久久久亚洲欧洲日产国码aⅴ| 免费一级欧美大片久久网| 久久精品天天中文字幕人妻| 久久成人18免费网站| 国产精品久久久久久福利漫画 | 999久久久免费国产精品播放| 中文字幕亚洲综合久久菠萝蜜 | 久久久久免费精品国产| 精品久久久久久久久久久久久久久| 看久久久久久a级毛片| 一级女性全黄久久生活片免费 | 99久久99久久精品免费看蜜桃| 亚洲精品午夜国产va久久| 久久国产一片免费观看| 香蕉久久一区二区不卡无毒影院| 久久精品国产亚洲AV无码麻豆 | 人妻少妇久久中文字幕| 2021国内久久精品| 久久久久亚洲国产| 久久99久久99精品免视看动漫| 久久婷婷人人澡人人爽人人爱| 无码八A片人妻少妇久久| 噜噜噜色噜噜噜久久|