如何在MFCStatusBar进度条中显示不同的文本

问题描述 投票:0回答:1

我希望在 MFC 状态栏中有一个进度条,它以百分比形式显示已用计数量(例如 15/235)的进度,同时仍显示彩色进度条。

但是,我似乎可以显示金额而不是彩色进度,反之亦然。 通过执行

EnablePaneProgressBar(1, 150, TRUE)
,仅显示百分比:

enter image description here

有什么方法可以做到吗?谢谢你。

c++ mfc
1个回答
0
投票

搜索MFC源代码以了解其工作原理,并找到其实现。它实际上不在

CMFCStatusBar
代码中,而是在文件 afxvisualmanager.cpp 第 1897 行,函数
CMFCVisualManager::OnDrawStatusBarProgress()
中。也就是说,这是一个 MFC 功能(MFC 库绘制进度条),并且似乎没有一些 Win32 Progerss Bar 控件 - 这些无论如何都不显示文本。

不知道是否可以改变,但可能的实现是:

  • 定义一个新的
    CMFCVisualManager
    派生类,覆盖
    OnDrawStatusBarProgress()
    成员 - 幸运的是它是虚拟的。
  • 在覆盖中将
    Format()
    调用更改为
    strText.Format(_T("%d%/%d"), nProgressCurr,  nProgressTotal);
  • 最后,您必须用覆盖的视觉管理器替换
    CMFCVisualManager
    实例。这并不容易做到,因为视觉管理器是一个单实例对象,由 MFC 框架创建和维护,这有点棘手。不过
    CMFCVisualManager::SetDefaultManager()
    方法似乎可以正确执行此操作。请参阅此处此处

缺点是这会改变状态栏中所有进度条的行为(如果只有一个进度条则不是问题)。但它仍然可以更改(即根据其窗格编号以不同的方式绘制每个进度条)。

我无法判断这是否值得付出努力,这取决于您的项目要求、时间表、预算等。

© www.soinside.com 2019 - 2024. All rights reserved.