|
ダイアログにステータスバーをつける
今回はダイアログにステータスバーをつけてみましょう。ステータスバーというのはウィンドウの下側にある情報表示用のバーのことです。ウィンドウサイズ変更時にドラッグするグリップ表示をすることもできます。
今回もダイアログベースでプロジェクトを作成します。ステータスバーを追加するのは簡単です。ダイアログクラスにCStasutBarクラスのメンバを追加し、ダイアログ初期化時にステータスバーを初期化します。
では、ダイアログクラスにCStasutBarクラスのメンバを追加しましょう。クラスビューからダイアログクラスを右クリックし、「追加」→「変数の追加」を選択します。

「アクセス」はprivate、「変数の種類」にCStatusBarを入力します。メンバ変数となるのでm_で始まる変数名にするとよいでしょう。

では、初期化処理を実装します。OnInitDialog()で次のように処理します。
BOOL CStatusBarDlg::OnInitDialog()
{
CDialog::OnInitDialog();
SetIcon(m_hIcon, TRUE); // 大きいアイコンの設定
SetIcon(m_hIcon, FALSE); // 小さいアイコンの設定
// TODO: 初期化をここに追加します。
{
int err = 0;
// ステータスバー初期化
if (!err) if (!m_statusBar.Create(this)) err = 1;
if (!err) RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);
}
return TRUE;
} |
まず、CStatusBar::Create()関数で、ステータスバーを作成します。Create()関数には、親ウィンドウ(この場合はダイアログ)のポインタを渡します。
次にCWnd::RepositionBars()関数を実行します。この関数は、ステータスバーなどの位置と大きさを再計算して表示してくれます。
では、ビルドして実行してみましょう。ステータスバーが表示されました。
せっかくなので、ダイアログサイズを変更するためのグリップもつけてみましょう。まず、ダイアログリソースのプロパティで、「Border」を「サイズ変更枠」にします。これでダイアログがサイズ変更可能になります。

次に、サイズ変更のイベントハンドラを追加します。ダイアログクラスのプロパティで、メッセージから「WM_SIZE」を選択し、OnSize()関数を追加します。

OnSize()関数は、ダイアログのサイズが変更されるときに呼び出されます。この関数では、次のようにRepositionBars()関数を呼び出して、ステータスバーの位置とサイズを再計算して表示します。
void CStatusBarDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);
} |
では、ビルドして実行してみましょう。サイズ変更のグリップが表示されました。ドラッグするとダイアログのサイズが変更されます。

|