ホーム » MFC » CDialog に CStatusBarCtrl 追加

CDialog に CStatusBarCtrl 追加

最近やっているダイアログベースの exe で,動作結果をわかるようにしたかった.
メッセージボックスは簡単だか,それだと「OK」などを押す必要があるので,そうではないもの.
個人的に,他のツールでやっているタイトルバーを使う方法もあるが,他のものを試したくなった.
ステータスバーを使えることは知っていたが,ダイアログベースで使うには面倒なイメージがあった.
それで調べてみると,意外と簡単に実装できそうなことがわかった.


やり方としては,次のような手順.
ダイアログに変数を追加.

    CStatusBarCtrl	m_StatusBar;

OnInitDialog で Create .

    if (m_StatusBar.Create(WS_CHILD | WS_VISIBLE | SBT_NOBORDERS,
            CRect(0,0,0,0), this, AFX_IDW_STATUS_BAR)) {
        int parts[] = { -1 };
        m_StatusBar.SetParts(1, parts);
        m_StatusBar.SetText(_T(" ready "), 0, 0);
        }

OnSize で SendMessage .

void CXxxDlg::OnSize(UINT nType, int cx, int cy) 
{
    CDialog::OnSize(nType, cx, cy);
    if (::IsWindow(m_StatusBar.m_hWnd))    {
        m_StatusBar.SendMessage(WM_SIZE, 0, 0);
        }
    }

あとは適当なタイミングで描画すれば良い.

void CXxxDlg::OnTest() 
{
    if (::IsWindow(m_StatusBar.m_hWnd))	{
        m_StatusBar.SetText(_T(" Test "), 0, 0);
        ::Sleep(500) ;
        #ifdef MessageBar
        {
            int         count_max = 1000 ;
            MessageBar  bar(_T("Test"),count_max) ;
            for (int index=0 ; index<count_max ; index++) {
                ::Sleep(5) ;
                bar.SetBarInc() ;
                }
            }
        #endif
        m_StatusBar.SetText(_T("  "), 0, 0);
        }
    }

CDialog に CStatusBarCtrl の追加
個人的なクラスの MessageMFC もうまく動作した.

この投稿は役に立ちましたか ? 0 人中 0 人がこの 投稿 は役に立ったと言っています。
© 2009-2026 mish.work All Rights Reserved.

Powered by WordPress / Academica WordPress Theme by WPZOOM