MFC中MDI框架的CChildFrame多文档标题修改 - 小众知识

MFC中MDI框架的CChildFrame多文档标题修改

2013年01月27日 14:18:05 苏内容
  标签: MDI/Frame/MFC
阅读:744

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

修改主框架标题的方式主要有一下两种:

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

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

    afx_msg LRESULT OnSetText( WPARAM wParam, LPARAM lParam);

    ON_MESSAGE(WM_SETTEXT, &CMainFrame::OnSetText)

    LRESULT CMainFrame::OnSetText( WPARAM wParam, LPARAM lParam)
{
 lParam = (LPARAM)"主窗口标题";
 DefWindowProc (WM_SETTEXT, wParam, lParam);
 Invalidate();
 return 0;
}

修改子框架标题的方式主要是重载CView的virtual void OnTitleChange(LPCTSTR lpszText);方法:

void C...View::OnTitleChange(LPCTSTR lpszText) 
{
 // TODO: Add your specialized code here and/or call the base class
 if (m_pDocument != NULL)
  m_pDocument->SetTitle(lpszText);
// CHtmlView::OnTitleChange(lpszText);
}
若视图类是继承CHtmlView,则该方法会在加载完网页后自动调用,lpszText值为网页的title。

 

若不想把子框架标题添加到主框架标题后,即不显示横杠及以后的内容,可以在CChildFrame::PreCreateWindow(CREATESTRUCT& cs)中添加cs.style &= ~FWS_ADDTOTITLE;

若cs.style &= ~FWS_ADDTOTITLE;添加到CMainFrame::PreCreateWindow(CREATESTRUCT& cs)中,则在主框架中就不会再处理WM_SETTEXT消息


当然这个只能在创建窗口的时候起作用,在程序运行过程中,需要用OnUpdateFrameTitle来更新窗口的标题

扩展阅读
© CopyRight 2010-2021, PREDREAM.ORG, Inc.All Rights Reserved. 京ICP备13045924号-1