0

我有一个使用 MFC 功能包编写的应用程序。它使用文档/视图。由于这些类派生自“普通”MFC 类,因此这些问题可能不是 Feature Pack 特定的。

进行更改后,我在选项卡上的名称中添加星号,并使用以下代码*将单词添加到主窗口标题:(modified)

tabval = "Report_" + pDoc->rptData.reportId.Strip();
winval = tabval;
if (changed) {
    tabval += " *";
    winval += " (modified)";
}
frame->SetTitle(tabval);
frame->SetWindowText(tabval);
name = mainFrame->GetTitle();
mainFrame->SetWindowText(name + " - " + winval);

但是在选项卡之间切换时,原始文本又回来了。第一个问题:如何使更改具有粘性?

第二个问题:左边有一个树视图,右边有一个属性窗口。在它们之间切换(取消)突出显示标题栏以显示哪个是活动的。用户还可以激活文档窗口并与之交互,但似乎没有任何方法可以提供文档窗口实际上处于活动状态的视觉反馈。我怎样才能做到这一点?

4

2 回答 2

0

目前尚不清楚您的变量是什么类型,但正如您所拥有的那样pDocframe我假设前者是您的CDocument派生类,而后者可能是派生类CFrameWndCMDIFrameWnd派生类。

如果我没看错,那么标签标题没有粘住的原因是你应该调用每个标签视图后面SetTitleCDocument那个,所以像

tabval = "Report_" + pDoc->rptData.reportId.Strip();
winval = tabval;
if (changed) {
    tabval += " *";
    winval += " (modified)";
}
pDoc->SetTitle(tabval);    // set tab title on CDocument
于 2013-05-05T08:12:59.690 回答
0

我过去也遇到过类似的问题。主窗口标题文本变回的原因是函数CFrameWndEx::OnUpdateFrameTitle。由于它是虚拟的,因此您可以在自己的派生类上覆盖它以获得您想要的行为。这是一个对我有用的解决方案。

于 2016-02-19T01:15:45.177 回答