[转] MFC多文档标题修改

多文档标题格式为 “主框架标题 - 子框架标题”

 

修改主框架标题

主要有以下两种:

1. 在CMainFrame::PreCreateWindow(CREATESTRUCT& cs)中对成员变量m_strTitle进行直接赋值修改,如m_strTitle = TEXT("My Title")

2. 根据标题栏标题被修改时窗口会接收WM_SETTEXT消息的原理,可以修改处理该消息的函数,如下:

 1 afx_msg LRESULT OnSetText( WPARAM wParam, LPARAM lParam);
 2 
 3 ON_MESSAGE(WM_SETTEXT, &CMainFrame::OnSetText)
 4 
 5 LRESULT CMainFrame::OnSetText( WPARAM wParam, LPARAM lParam)
 6 {
 7     lParam = (LPARAM)"主窗口标题";
 8     DefWindowProc (WM_SETTEXT, wParam, lParam);
 9     Invalidate();
10     return 0;
11 }

 

  

修改子框架标题

主要是重载CView的virtual void OnTitleChange(LPCTSTR lpszText);

1 void C...View::OnTitleChange(LPCTSTR lpszText) 
2 {
3  // TODO: Add your specialized code here and/or call the base class
4  if (m_pDocument != NULL)
5   m_pDocument->SetTitle(lpszText);
6 // CHtmlView::OnTitleChange(lpszText);
7 }

 

若视图类是继承CHtmlView,则该方法会在加载完网页后自动调用,lpszText值为网页的title。

 

若不想把子框架标题添加到主框架标题后,即不显示横杠及以后的内容,可以在

CChildFrame::PreCreateWindow(CREATESTRUCT& cs)

中添加

cs.style &= ~FWS_ADDTOTITLE;

cs.style &= ~FWS_ADDTOTITLE;

添加到

CMainFrame::PreCreateWindow(CREATESTRUCT& cs)

中,则在主框架中就不会再处理WM_SETTEXT消息。

posted @ 2015-02-08 21:41  yangxin4894  阅读(607)  评论(0)    收藏  举报