MFC のステータスバーに進行状況バーを実装する方法
進捗バー付き MFC のステータスバーを実装するには、以下の手順に従います。
- MFCアプリケーションのリソースファイル(.RC)を開き、ステータスバーに表示するプログレスバーに対応するIDを見つけます。仮にこのIDがID_STATUSBAR_PROGRESSであるとします。
- CMainFrame クラス(または進捗状況インジケータを表示する他のウィンドウ クラス)のヘッダー ファイルに、進捗状況インジケータの表示と更新を行う CProgressCtrl メンバー変数を追加します。例:
class CMainFrame : public CFrameWnd
{
// ...
CProgressCtrl m_progressCtrl;
// ...
};
- OnCreate()関数で、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
}
// 将进度条与状态栏项相关联
m_wndStatusBar.SetPaneInfo(m_wndStatusBar.CommandToIndex(ID_STATUSBAR_PROGRESS), ID_STATUSBAR_PROGRESS, SBPS_NORMAL, 100);
m_wndStatusBar.GetStatusBarCtrl().SetMinHeight(20);
// 创建并设置进度条
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);
// ...
}
- 進捗バーの更新が必要になったら、m_progressCtrl の関連する関数を用いて更新を行います。例えば、
void CMainFrame::OnSomeButtonClicked()
{
// 更新进度条
m_progressCtrl.SetPos(50); // 设置进度条的当前位置为50%
}
このようにすれば、MFCアプリケーションの状態バーに進行状況を示すプログレスバーを表示できます。必要に応じて他のプログレスバー関連関数を使用してプログレスバーのステータスを更新できます。