VC++更改標題

一、單文檔接口 (SDI) 類型窗口標題的改變

首先,我們來看Windows SDI類型窗口標題欄的結構形式。結合具體例子說明:用 VC 的 AppWizard 創建一個名爲“SDITitle”的單文檔類型的工程,創建完工程後,編譯運行該工程,程序主窗口標題形式如下:

文檔標題 主窗口標題

1、文檔標題的改變

文檔標題在是由工程中相應的文檔類所控制的,因此我們可以利用SetTitle()函數來改變文檔標題。

例:改變CSDITitleDoc::OnNewDocument() 函數爲:

BOOL CSDITitleDoc::OnNewDocument()

{

    if (!CDocument::OnNewDocument())

    return FALSE;

    SetTitle ("文檔標題");

    return TRUE;

}

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

2、主窗口標題的改變

主窗口的標題默認是工程的文件名,正如前面AppWazied生成的SDITitle工程執行後,標題欄的形式總爲“(文檔名)- SDITitle”。

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

第一種方法:利用ResourceView打開工程的資源,修改String Table中的IDR_MAINFRAME的值。將原來的“SDITitlennTitlennnTitle.DocumentnTitle.Document”改爲“標題改變示例 nnTitlenn nTitle.DocumentnTitle.Document”。這樣改變後,主窗口標題欄的形式就爲“....-標題改變示例”。

第二種方法:具體改變方法如下:

改變CSDIMainFrame的成員函數PreCreateWindow()爲:

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)

{

    mstrTitle = "vc在線編程網";

    return CFrameWnd::PreCreateWindow(cs);

}

這改變後,標題欄的形式就爲“....-vc在線編程網”。

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

二、對多文檔接口(MDI)類型窗口標題的改變

MDI類型窗口標題中,主窗口標題和文檔標題的次序,和SDI類型窗口中次序是不同的。結合具體例子說明,用VC的AppWizard創建一個名爲“MDITitle”的多文擋類型的工程。創建完工程後,編譯運行該工程,主窗口標題形式如下:主窗口標題 (當前打開的)文檔標題

1、文檔標題的改變

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

2、主窗口標題的改變

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

3、子窗口標題的改變

在默認情況下,MFC自動將子窗口標題設爲該子窗口所打開的文檔標題。但實際上,子窗口標題與該子窗口標題所打開的文檔標題並不是同一回事。我們可做如下實驗:

(利用ResourceView打開資源,修改String Table中的IDR_MAINFRAME的值爲“vc在線編程網”,使得主窗口標題變成“vc在線編程網”。

(將BOOL CMDITitleDoc::OnNewDocument()函數改爲:

BOOL CMDITitleDoc::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”... 。

(r)將CChildFrame ::PreCreateWindow() 函數改爲:

BOOL CChildFrame::PreCreateWindow(CREATESTRUCT& cs)

{

    cs.style &=~ (LONG) FWSADDTOTITLE;

   return CMDIChildWnd::PreCreateWindow(cs);

}

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

(在CMDITitleView類中增加OnInitialUpdate () 函數:

void CMDITitleView::OnInitialUpdate()

{

    CView::OnInitialUpdate();

    GetParent()->SetWindowText(GetDocument()->GetTitle() + "-vc窗口標題示例");

}

這樣,子窗口的標題欄的形式就爲“文檔名(- vc窗口標題示例”。

修改後的程序運行效果如下:上面例子也可做修改MDI類型窗口的各中標題作參考。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章