VS 2008 MFC功能包-如何

VS 2008 MFC功能包-如何,mfc,mfc-feature-pack,document-view,Mfc,Mfc Feature Pack,Document View,我正在使用MFC功能包编写一个应用程序。它使用文档/视图。由于这些类派生自“普通”MFC类,因此这些问题可能不是特定于功能包的 进行更改时,我使用以下代码在选项卡上的名称中添加星号*,并在主窗口标题中添加单词(已修改): tabval = "Report_" + pDoc->rptData.reportId.Strip(); winval = tabval; if (changed) { tabval += " *"; winval += " (modified)"; }

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

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

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)将突出显示标题栏,以显示哪个标题栏处于活动状态。用户还可以激活文档窗口并与之交互,但似乎没有任何方法可以提供可视反馈,说明文档窗口实际上是活动的。我该怎么做呢?

不清楚您的变量是什么类型,但是由于您有
pDoc
frame
,我假设前者是您的
CDocument
派生类,后者可能是
CFrameWnd
CMDIFrameWnd
派生类

如果我没有大错特错的话,那么选项卡标题没有粘住的原因是您应该在每个选项卡视图后面的
CDocument
上调用
SetTitle
,比如

tabval=“Report_”+pDoc->rptData.reportId.Strip();
winval=tabval;
如果(更改){
tabval+=“*”;
winval+=“(已修改)”;
}
pDoc->SetTitle(tabval);//在CDocument上设置选项卡标题

我过去也遇到过类似的问题。主窗口标题文本变回的原因是函数。由于它是虚拟的,您可以在自己的派生类上重写它以获得所需的行为。这是一个适合我的解决方案。

解决了选项卡的问题,但主窗口标题只有
*
,而没有
(修改)
。如果有必要的话,我可以接受,但有什么办法可以推翻这一点吗?谢谢我做了一些挖掘,发现了几种修改主窗口标题的方法,但它们都相当复杂,不值得费心。