在 MFC 中,CMFCVisualManagerOffice2003 类的 OnDrawStatusBarProgress 方法用于绘制状态栏中的进度条。通过重写这个方法,你可以自定义状态栏进度条的样式、颜色等。

以下是一个简单的示例,展示如何使用 OnDrawStatusBarProgress 方法:
void CMyVisualManager::OnDrawStatusBarProgress(CDC* pDC, CMFCStatusBar* pStatusBar, CMFCStatusBarPaneInfo* pPaneInfo, CRect rectProgress, int nProgressTotal, int nProgressCurr, COLORREF clrBar, COLORREF clrProgressBarDest, COLORREF clrProgressBar, BOOL bProgressText)
{
    // 在这里添加你的绘制逻辑
    // 使用 pDC 绘制状态栏中的进度条
    // pStatusBar 表示状态栏对象
    // pPaneInfo 表示包含进度条的状态栏窗格的信息
    // rectProgress 表示进度条的矩形区域
    // nProgressTotal 表示总进度
    // nProgressCurr 表示当前进度
    // clrBar 表示进度条背景颜色
    // clrProgressBarDest 表示进度条的目标颜色
    // clrProgressBar 表示进度条的颜色
    // bProgressText 表示是否显示进度文本

    // 示例:绘制一个简单的进度条背景
    pDC->FillSolidRect(rectProgress, clrBar);

    // 示例:绘制当前进度的矩形
    int nProgressBarWidth = rectProgress.Width() * nProgressCurr / nProgressTotal;
    CRect rectProgressBar(rectProgress.left, rectProgress.top, rectProgress.left + nProgressBarWidth, rectProgress.bottom);
    pDC->FillSolidRect(rectProgressBar, clrProgressBar);

    // 示例:绘制进度文本
    if (bProgressText)
    {
        CString strProgress;
        strProgress.Format(_T("%d%%"), (nProgressCurr * 100) / nProgressTotal);
        pDC->SetTextColor(clrProgressBarDest);
        pDC->DrawText(strProgress, rectProgress, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
    }
}

在这个例子中,我使用 FillSolidRect 方法填充了整个进度条的背景,然后使用 FillSolidRect 方法绘制了当前进度的矩形。如果需要显示进度文本,我使用 DrawText 方法在进度条中央绘制了进度文本。你可以根据需要修改颜色、调整形状、自定义进度文本等,以满足你的具体设计需求。

请注意,方法的参数可能包含更多有关状态栏、进度条和状态的信息,你可以根据需要进行更多的定制。


转载请注明出处:http://www.zyzy.cn/article/detail/20674/MFC/CMFCVisualManagerOffice2003