VS 2008 MFC功能包 - 我该怎么做

时间:2013-05-04 21:16:17

标签: mfc mfc-feature-pack document-view

我有一个应用程序,我正在使用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)会突出显示标题栏以显示哪一个处于活动状态。用户还可以激活文档窗口并与文档窗口交互,但似乎没有任何方式可以提供文档窗口实际上是活动的视觉反馈。我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

不清楚你的变量是什么类型,但是你有pDocframe,我假设前者是你的CDocument派生类,而后者可能是CFrameWndCMDIFrameWnd派生类。

如果我没有错,那么标签标题不坚持的原因是你应该在每个标签视图后面的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。因为它是虚拟的,所以您可以在自己的派生类上覆盖它以获得所需的行为。这是一个对我有用的解决方案。