MFC/BCGP:更新 CEditView 的选项卡标签而不更改 CEditView 的内容?

Posted

技术标签:

【中文标题】MFC/BCGP:更新 CEditView 的选项卡标签而不更改 CEditView 的内容?【英文标题】:MFC/BCGP: Update CEditView's tab label without changing the contents of the CEditView? 【发布时间】:2021-07-01 18:16:22 【问题描述】:

当我有一个使用CBCGPTabView 作为主视图的 SDI Document-View MFC 应用程序时,其中一个选项卡是CEditView。如果我向CBCGPTabView 派生类发送自定义消息并使用GetTabControl().SetTabLabel(),它不仅会更改选项卡标签,还会更改CEditView 的内容。有没有办法防止这种情况发生?

【问题讨论】:

自定义消息的价值是什么? 基于WM_APP 【参考方案1】:

这是我目前的解决方法:

  // hack to work around ceditview getting its window contents changed
  CView* pview=GetView(tabi);
  if (pview->IsKindOf(RUNTIME_CLASS(CEditView))) 
    CString strexistingtext;
    pview->GetWindowText(strexistingtext);
    // change label
    tabctrl.SetTabLabel(tabi, strlabel);
    // put back text
    pview->SetWindowText(strexistingtext);
  
  else 
    // change label
    tabctrl.SetTabLabel(tabi, strlabel);
  

【讨论】:

【参考方案2】:

另一种方法是覆盖

virtual CString CBCGPMDIChildWnd::GetFrameText() const

然后把你需要的东西放在那里。

【讨论】:

以上是关于MFC/BCGP:更新 CEditView 的选项卡标签而不更改 CEditView 的内容?的主要内容,如果未能解决你的问题,请参考以下文章