要實(shí)現(xiàn)MFC帶進(jìn)度條的狀態(tài)欄,可以按照以下步驟進(jìn)行:
打開(kāi)你的MFC應(yīng)用程序的資源文件(.RC),在其中找到你想要顯示進(jìn)度條的狀態(tài)欄對(duì)應(yīng)的ID。假設(shè)該ID為ID_STATUSBAR_PROGRESS。
在你的CMainFrame類(lèi)(或者其他你想要顯示進(jìn)度條的窗口類(lèi))的頭文件中添加一個(gè)CProgressCtrl成員變量,用于控制進(jìn)度條的顯示和更新。例如:
class CMainFrame : public CFrameWnd
{
// ...
CProgressCtrl m_progressCtrl;
// ...
};
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
// ...
if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status bar\n");
return -1; // fail to create
}
// 將進(jìn)度條與狀態(tài)欄項(xiàng)相關(guān)聯(lián)
m_wndStatusBar.SetPaneInfo(m_wndStatusBar.CommandToIndex(ID_STATUSBAR_PROGRESS), ID_STATUSBAR_PROGRESS, SBPS_NORMAL, 100);
m_wndStatusBar.GetStatusBarCtrl().SetMinHeight(20);
// 創(chuàng)建并設(shè)置進(jìn)度條
m_progressCtrl.Create(WS_CHILD | WS_VISIBLE | PBS_SMOOTH, CRect(0, 0, 0, 0), &m_wndStatusBar, ID_STATUSBAR_PROGRESS);
m_progressCtrl.SetRange(0, 100);
m_progressCtrl.SetPos(0);
// ...
}
void CMainFrame::OnSomeButtonClicked()
{
// 更新進(jìn)度條
m_progressCtrl.SetPos(50); // 設(shè)置進(jìn)度條的當(dāng)前位置為50%
}
這樣,你的MFC應(yīng)用程序就可以在狀態(tài)欄上顯示帶有進(jìn)度條的效果了。你可以根據(jù)需要使用其他的進(jìn)度條相關(guān)函數(shù)來(lái)更新進(jìn)度條的狀態(tài)。