MFC的Ribbon界面状态栏加添进度条

首先在VS环境下新建一个MFC的Ribbon风格的项目,在CMainFrame::OnCreate()中的状态栏创建位置添加如下代码:

    m_wndStatusBar.AddElement(newCMFCRibbonStatusBarPane(ID_STATUSBAR_PANE1, strTitlePane1,TRUE), strTitlePane1);

    progress = new CMFCRibbonProgressBar(113); 

    m_wndStatusBar.AddElement(progress, _T("进度条"));

即实现了进度条创建。但是比较不完善。

第一是我希望界面能在需要的时候显示和隐藏进度条,但是发现这样创建的进度条始终无法立即隐藏。创建隐藏按钮,响应的实现代码如下:

    CMainFrame* pMain = (CMainFrame*)AfxGetMainWnd();

    pMain->progress->SetVisible(FALSE);

    pMain->progress->Redraw(); 

    pMain->m_wndStatusBar.RedrawWindow();

    pMain->RedrawWindow();

即使让整个界面重绘,进度条也没法立即隐藏,而是需要进行一次向下还原或者最大化以后才能成功。

第二,进度条宽度没办法随界面变化。我的需求是除了状态栏左边和右边,其余都设置成进度条位置,虽然CMFCRibbonProgressBar的构造函数有宽度的设置,但是必须让状态栏CMFCRibbonStatusBar的其他面板绘制之后,才能计算进度条宽度并加入进度条。但这种办法在窗口最大化的时候才有效,如果是界面一开始是小窗口,这种办法就失效了。

你可能感兴趣的:(C++)