ソフトウェア開発 Win32プログラミング

リストビューが空のとき文字列を表示

戻る


リストビュー(ListView)が空のとき(つまり要素の個数が0個のとき)、メッセージを表示したいと思ったことはないだろうか。 そんなときは、リストビューをサブクラス化して、WM_ERASEBKGNDメッセージを受けたときに、 既定のメッセージ処理を行った後で、LVM_GETITEMCOUNTで要素の個数がゼロかどうか調べ、 ゼロであれば、WM_ERASEBKGNDで受け取ったDCを使ってクライアント領域に文字列を描画することで実現できる。 このことをコードで書くと以下のようになる。

mzc_msg BOOL CMyListView::OnEraseBkgnd(CDC* pDC)
{
    CListViewCtrl::OnEraseBkgnd(pDC);
    if (GetItemCount() == 0)
    {
        HFONT hFontOld = pDC->SelectFont(GetFont());
        pDC->TextOut(0, 0, _T("空です!でもそらじゃないよ。"), -1);
        pDC->SelectFont(hFontOld);
    }
    return TRUE;
}

実際に描画するときは、GetSysColor、SetTextColor、SetBkColorでシステムカラーをセットすることを忘れずに。 背景色はCOLOR_WINDOW、文字色はCOLOR_WINDOWTEXTである。


戻る

©片山博文MZ
katayama.hirofumi.mz@gmail.com

inserted by FC2 system