2013-05-04 56 views
0

我有使用MFC功能包编写的应用程序。它使用文档/视图。由于这些类是从“正常”MFC类派生的,因此这些问题可能不是Feature Pack的特定功能。VS 2008 MFC功能包 - 我如何

当做出改变,我一个星号*添加到标签上的名称,并使用下面的代码字(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

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

如果我不远矣,那么为什么标签的标题都没有坚持的理由是,你应该在CDocument这是每个标签查看后面叫SetTitle,所以像

tabval = "Report_" + pDoc->rptData.reportId.Strip(); 
winval = tabval; 
if (changed) { 
    tabval += " *"; 
    winval += " (modified)"; 
} 
pDoc->SetTitle(tabval); // set tab title on CDocument 
+0

照顾了选项卡,但主窗口标题只有'*'而不是'(修改)'。如果有必要,我可以接受这一点,但有什么方法可以覆盖它吗?谢谢! – 2013-05-05 17:47:02

+0

我做了一些挖掘工作,并且发现了几种修改主窗口标题的方法,但它们都相当参与,不值得麻烦。 – 2013-05-05 18:45:10

0

我过去也有类似的问题。主窗口标题文本改回的原因是功能CFrameWndEx::OnUpdateFrameTitle。由于它是虚拟的,你可以在你自己的派生类上覆盖它以获得你想要的行为。这是一个为我工作的解决方案。