我有一个应用程序,我正在使用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);
但是当在标签之间切换时,原始文字会回来。第一个问题:如何使更改变得粘滞?
第二个问题:左边是树状视图,右边是属性窗口。在它们之间切换(un)会突出显示标题栏以显示哪一个处于活动状态。用户还可以激活文档窗口并与文档窗口交互,但似乎没有任何方式可以提供文档窗口实际上是活动的视觉反馈。我怎么能这样做?
答案 0 :(得分:0)
不清楚你的变量是什么类型,但是你有pDoc
和frame
,我假设前者是你的CDocument
派生类,而后者可能是CFrameWnd
或CMDIFrameWnd
派生类。
如果我没有错,那么标签标题不坚持的原因是你应该在每个标签视图后面的SetTitle
上调用CDocument
,所以像< / p>
tabval = "Report_" + pDoc->rptData.reportId.Strip();
winval = tabval;
if (changed) {
tabval += " *";
winval += " (modified)";
}
pDoc->SetTitle(tabval); // set tab title on CDocument
答案 1 :(得分:0)
过去我遇到过类似的问题。主窗口标题文本更改的原因是函数CFrameWndEx::OnUpdateFrameTitle。因为它是虚拟的,所以您可以在自己的派生类上覆盖它以获得所需的行为。这是一个对我有用的解决方案。