[转] 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消息。

浙公网安备 33010602011771号