【问题标题】:VS 2008 MFC Feature Pack - How do IVS 2008 MFC 功能包 - 我该怎么做
【发布时间】:2013-04-29 01:05:48
【问题描述】:

我有一个使用 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);

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

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

【问题讨论】:

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


    【解决方案1】:

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

    如果我没有大错特错,那么标签标题没有粘贴的原因是您应该在每个标签视图后面的 CDocument 上调用 SetTitle,所以类似于

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

    【讨论】:

    • 这处理了选项卡,但主窗口标题只有* 而不是(modified)。如有必要,我可以忍受,但是有什么办法可以覆盖吗?谢谢!
    • 我做了一些挖掘,找到了几种修改主窗口标题的方法,但它们都相当复杂,不值得麻烦。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-30
      • 1970-01-01
      • 2018-01-16
      • 2011-03-15
      • 2012-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多