我希望在 MFC 状态栏中有一个进度条,它以百分比形式显示已用计数量(例如 15/235)的进度,同时仍显示彩色进度条。
但是,我似乎可以显示金额而不是彩色进度,反之亦然。 通过执行
EnablePaneProgressBar(1, 150, TRUE)
,仅显示百分比:
有什么方法可以做到吗?谢谢你。
搜索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()
方法似乎可以正确执行此操作。请参阅此处和此处。缺点是这会改变状态栏中所有进度条的行为(如果只有一个进度条则不是问题)。但它仍然可以更改(即根据其窗格编号以不同的方式绘制每个进度条)。
我无法判断这是否值得付出努力,这取决于您的项目要求、时间表、预算等。