多文檔中怎麼更改MainFrme和各個視圖(子窗口)的名字

下面的提供的方法可以修改單文檔/多文檔的MainFrame的名字,和視圖/子視圖(子窗口)顯示的名字。

論壇上搜索了很久,也很多網站上的都相當模糊,或者無法實現,有一天同事給了一個網址,研讀了之後發現方法可行,csdn是很多寫程序的人必來的論壇,轉過來與大家分享。下面的內容爲轉載,再次向原創的前輩致敬!

修改窗口標題的方法1:

有些時候,我們不得不改變所編Windows應用程序窗口的標題。比如,想編一個標題名爲“Communication Soft”的軟件。雖然在Windows95Windows NT下,Visual C++(以下簡稱VC)可以生成以“Communication Soft”爲名的工程,但該工程下的C++類的名稱也要帶上這麼多的字符,給編程帶來不便。所以我採用的方法是生成以“CS”爲名的工程,再把程序的標題改成“Communication Soft”。再比如,我希望每個子窗口的標題並不是“(((1”“(((2”這種類型,而是象採甲1通風量通戊4瓦斯量這樣子窗口與子窗口標題無關。這些都需要改變各種窗口標題。下面我介紹我改變窗口標題所用的方法,我所用的開發平臺是Visual C++ 4.0
  一·單文檔接口(SDI)類型窗口標題的改變
  首先,我們來看Windows SDI類型窗口標題欄的結構形式。結合具體例子說明:用VCAppWizard創建一個名爲“SDITitle”的單文檔類型的工程,創建完工程後,編譯運行該工程,程序主窗口標題形式如下:
  文檔標題主窗口標題
文檔標題的改變
  文檔標題在是由工程中相應的文檔類所控制的,我們可做如下實驗。運行上面AppWizard生成的程序SDITitle,選擇選單中的文件”“打開選項,打開“SDITitile.h”文件,則標題欄變成“SDITitle.h - SDITitle”。這一切動作都是MFC類自動進行的。瞭解這一點,我們可在相應的文檔類中,利用SetTitle ()函數來改變文檔標題。例:改變CSDITitleDoc::OnNewDocument()函數爲:BOOL CSDITitleDoc::OnNewDocument()
{if (!CDocument::OnNewDocument())return FALSE;SetTitle ("文檔標題 " );
return TRUE;
}
  運行程序,則每次選擇選單中的文件新建選項時,文檔標題就變成文檔標題- SDITitle”
主窗口標題的改變
  主窗口的標題默認是工程的文件名,正如前面AppWazied生成的SDITitle工程執行後,標題欄的形式總爲(文檔名)- SDITitle”
  改變主窗口的標題有兩種:
  第一種方法:利用ResourceView打開工程的資源,修改String Table中的IDR_MAINFRAME的值。將原來的“SDITitle//n//nTitle//n//n//nTitle.Document//nTitle Document”改爲“標題改變示例//n//nTitle//n//n //nTitle. Document//nTitle Document”。這樣改變後,主窗口標題欄的形式就爲“((((-標題改變示例”。
  第二種方法:具體改變方法如下:
  改變CSDIMainFrame的成員函數PreCreateWindow()爲:BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{m_strTitle = " 中國礦業大學 ";return CFrameWnd::PreCreateWindow(cs);
}
  這改變後,標題欄的形式就爲“((((-中國礦業大學
m_strTileCFrameWnd的保護成員(令人驚奇的是,Visual C++ Books Online 4.0不顯示類的保護和私有的成員及函數。所以在m_strTil

e處按F1鍵,得不到相應的幫助。要得到m_strTile更詳細的信息,請打開// msdev // mfc //include //afxwin.h文件)。CSDIMainFrame則是CFrameWnd類的派生類。
  在這兩種改變方法中,第二種方法優先級高。也就是說,改變了m_strTitle的值後,IDR_MAINFRAME的值就不起作用。
  二·對多文檔接口(MDI)類型窗口標題的改變
MDI類型窗口標題中,主窗口標題和文檔標題的次序,和SDI類型窗口中次序是不同的。結合具體例子說明,用VCAppWizard創建一個名爲“MDITitle”的多文擋類型的工程。創建完工程後,編譯運行該工程,主窗口標題形式如下:主窗口標題(當前打開的)文檔標題
文檔標題的改變
MDI類型窗口的文檔標題也是由相應的文檔類控制的。改變方法同SDI類型窗口類似,要改變標題,只要在相應的文檔類中利用SetTitle()函數來改變文檔標題。
主窗口標題的改變
MDI類型主窗口標題的改變方法同SDI類型窗口類似。改變主窗口標題也有兩種方法,通過改變IDR_MAINFRAMEm_strTitle的值就可實現改變主窗口標題的目的。同樣,改變了m_strTitle值後,IDR_MAINFRAME的值就不起作用。
子窗口標題的改變
  在默認情況下,MFC自動將子窗口標題設爲該子窗口所打開的文檔標題。但實際上,子窗口標題與該子窗口標題所打開的文檔標題並不是同一回事。我們可做如下實驗:
(利用ResourceView打開資源,修改String Table中的IDR_MAINFRAME的值爲中國礦業大學,使得主窗口標題變成中國礦業大學
(BOOL CMDITitleDoc::OnNewDocument()函數改爲:
BOOL CMDITitleDoc::OnNewDocument()
{if (!CDocument::OnNewDocument())

return FALSE;

 static int count=0;
 char message[10];
 wsprintf ((LPWSTR)message,_T("%s%d"),_T("文檔-"),count);
 SetTitle((LPWSTR)message);
 count++;

return TRUE;
}
  設置文檔標題爲文檔0”文檔1”...
(r)CChildFrame::PreCreateWindow()函數改爲:BOOL CChildFrame::PreCreateWindow(CREATESTRUCT& cs)
{cs.style &=~ (LONG) FWS_ADDTOTITLE;return CMDIChildWnd::PreCreateWindow(cs);
}改變窗口類型,這步工作必須做。常量FWS_ADDTOTITLE是在文件// msdev // mfc //include //afxwin.h中定義。
(CMDITitleView類中增加OnInitialUpdate ()函數:void CMDITitleView::OnInitialUpdate()
{CView::OnInitialUpdate();GetParent()->SetWindowText(GetDocument()->GetTitle()+"-多媒體測控中心");
}這樣,子窗口的標題欄的形式就爲文檔名(-多媒體測控中心
  修改後的程序運行效果如下:上面例子也可做修改MDI類型窗口的各種標題參考

來源 http://zx.china-b.com/zgkydx/zixun_53386.html

修改窗口標題的方法2

·文檔標題的改變
  文檔標題在是由工程中相應的文檔類所控制的,我們可做如下實驗。運行上面AppWizard生成的程序SDITitle,選擇選單中的文件”“打開選項,打開“SDITitile.h”文件,則標題欄變成“SDITitle.h - SDITitle”。這一切動作都是MFC類自動進行的。瞭解這一點,我們可在相應的文檔類中,利用SetTitle ()函數來改變文檔標題。
  例:改變CSDITitleDoc::OnNewDocument() //FileView函數爲:
BOOL CSDITitleDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
return FALSE;
SetTitle (" 文檔標題 " );
return TRUE;
}
  運行程序,則每次選擇選單中的文件新建選項時,文檔標題就變成文檔標題- SDITitle”
主窗口標題的改變
  主窗口的標題默認是工程的文件名,正如前面AppWazied生成的SDITitle工程執行後,標題欄的形式總爲(文檔名)- SDITitle”
  改變主窗口的標題有兩種:
  第一種方法:
  利用ResourceView打開工程的資源,修改String Table中的IDR_MAINFRAME的值。將原來的“SDITitle//n//nTitle//n//n//nTitle.Document//nTitle Document”改爲標題改變示例//n//nTitle//n//n //nTitle. Document//nTitle Document”。這樣改變後,主窗口標題欄的形式就爲“((((-標題改變示例
  第二種方法:
  具體改變方法如下:
  改變CSDIMainFrame的成員函數PreCreateWindow()爲:
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
m_strTitle = " 中國礦業大學 ";
return CFrameWnd::PreCreateWindow(cs);
}
  這改變後,標題欄的形式就爲“((((-中國礦業大學
m_strTileCFrameWnd的保護成員(令人驚奇的是,Visual C++ Books Online 4.0不顯示類的保護和私有的成員及函數。所以在m_strTile處按F1鍵,得不到相應的幫助。要得到m_strTile更詳細的信息,請打開// msdev // mfc //include //afxwin.h文件)。CSDIMainFrame則是CFrameWnd類的派生類。
  在這兩種改變方法中,第二種方法優先級高。也就是說,改變了m_strTitle的值後,IDR_MAINFRAME的值就不起作用。
  二·對多文檔接口(MDI)類型窗口標題的改變
MDI類型窗口標題中,主窗口標題和文檔標題的次序,和SDI類型窗口中次序是不同的。結合具體例子說明,用VCAppWizard創建一個名爲“MDITitle”的多文擋類型的工程。創建完工程後,編譯運行該工程,主窗口標題形式如下:
  主窗口標題(當前打開的)文檔標題
文檔標題的改變
MDI類型窗口的文檔標題也是由相應的文檔類控制的。改變方法同SDI類型窗口類似,要改變標題,只要在相應的文檔類。

中利用SetTitle()函數來改變文檔標題。
主窗口標題的改變
MDI類型主窗口標題的改變方法同SDI類型窗口類似。改變主窗口標題也有兩種方法,通過改變IDR_MAINFRAMEm_strTitle的值就可實現改變主窗口標題的目的。同樣,改變了m_strTitle值後,IDR_MAINFRAME的值就不起作用。
子窗口標題的改變
  在默認情況下,MFC自動將子窗口標題設爲該子窗口所打開的文檔標題。但實際上,子窗口標題與該子窗口標題所打開的文檔標題並不是同一回事。我們可做如下實驗:
(利用ResourceView打開資源,修改String Table中的IDR_MAINFRAME的值爲中國礦業大學,使得主窗口標題變成中國礦業大學
(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) FWS_ADDTOTITLE;
return CMDIChildWnd::PreCreateWindow(cs);
}
  改變窗口類型,這步工作必須做。常量FWS_ADDTOTITLE是在文件// msdev // mfc //include //afxwin.h中定義。
(CMDITitleView類中增加OnInitialUpdate ()函數:
void CMDITitleView::OnInitialUpdate()
{
CView::OnInitialUpdate();
GetParent()->SetWindowText(GetDocument()->GetTitle()+"-多媒體測控中心");
}
  這樣,子窗口的標題欄的形式就爲文檔名(-多媒體測控中心
  二,怎麼樣把無標題去掉!1.在主程序中的InitInstance():
m_pMainWnd->SetWindowText("你要顯示的東西如果不想顯示置空就行") 2.在框架類的PreCreateWindow函數裏修改風格
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
cs.style &= ~FWS_ADDTOTITLE; //去除標題條中的文檔名
return CFrameWnd::PreCreateWindow(cs);

資料來源:同上。

發佈了18 篇原創文章 · 獲贊 4 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章