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 的内容?的主要内容,如果未能解决你的问题,请参考以下文章

Visual C++编程技巧之三

在 Play 商店更新 React Native 应用程序时,仍然显示卸载和打开选项。不显示更新选项

更新 ACF 选项页面时,以编程方式更新所有帖子的 ACF 字段

如何在选项卡栏控制器中更新选项卡上的视图

Jquery 将表单 SELECT 更新为新选项

更新日期排序选项