VC如何更改單文檔應用程序的標題

1·文檔標題的改變   
          
 文檔標題在是由工程中相應的文檔類所控制的,我們可做如下實驗。運行AppWizard生成的程序SDITitle,選擇選單中的“文件”“打開”選項,打開“SDITitile.h”文件,則標題欄變成“SDITitle.h - SDITitle”。這一切動作都是MFC類自動進行的。瞭解這一點,我們可在相應的文檔類中,利用SetTitle函數來改變文檔標題。   
 例:改變CSDITitleDoc::OnNewDocument()函數爲:   
  BOOL   CSDITitleDoc::OnNewDocument()   
  {   
          if   (!CDocument::OnNewDocument())   
                          return   FALSE;   
         
 SetTitle   ("   文檔標題   "   );   
          return   TRUE;   
  }   
  運行程序,則每次選擇選單中的“文件”的“新建”選項時,文檔標題就變成“文檔標題-   SDITitle”。   
    
2·主窗口標題的改變   
            
  主窗口的標題默認是工程的文件名,正如前面AppWazied生成的SDITitle工程執行後,標題欄的形式總爲“(文檔名)-   SDITitle”。   
    
  改變主窗口的標題有兩種:   
    
  第一種方法:   
    
  利用ResourceView打開工程的資源,修改String   Table中的IDR_MAINFRAME的值。   
  將原來的“SDITitle\n\nTitle\n\n\nTitle.Document\nTitleDocument”改爲   
  “標題改變示例\n\nTitle\n\n\nTitle.Document\nTitleDocument”。這樣   
  改變後,主窗口標題欄的形式就爲“...-標題改變示例”。   
    
  第二種方法:   
    
  具體改變方法如下:在框架類mainframe的PreCreateWindow函數前面加入一條語句:修改m_strTile的值,將其賦值成要改變的標題字符串。例:

  BOOL   CMainFrame::PreCreateWindow(CREATESTRUCT&  cs)   
  {   
          m_strTitle   =   "開發工具";  //“開發工具”即爲新標題
          if( !CFrameWnd::PreCreateWindow(cs) )
          return FALSE;  
  }   
  這改變後,標題欄的形式就爲“...-開發工具”。   
  m_strTile是CFrameWnd的保護成員(令人驚奇的是,Visual C++  Books Online 4.0 不顯示類的保護和私有的成員及函數。所以在m_strTile處按F1鍵,得不到相應的幫助。要得到m_strTile更詳細的信息,請打開\msdev\mfc  \include\afxwin.h文件)。CSDIMainFrame則是CFrameWnd類的派生類。   
  在這兩種改變方法中,第二種方法優先級高。也就是說,改變了m_strTitle的值後,IDR_MAINFRAME的值就不起作用。

3.整個標題的修改:

  先在框架類mainframe的PreCreateWindow函數前面加入一條語句:cs.style   &=   ~FWS_ADDTOTITLE;則函數變爲:
  BOOL   CMainFrame::PreCreateWindow(CREATESTRUCT& cs)   
  {   
         
cs.style   &= ~FWS_ADDTOTITLE;  // 把cs.style中的FWS_ADDTOTITLE風格去掉 
         if( !CFrameWnd::PreCreateWindow(cs) )
         return FALSE;

  }   
    
  然後再在mainframe的OnCreate中使用語句:“SetWindowText("XXX");”, 則整個標題內容變爲:XXX。

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