![]()
ATL/WTLアプリケーションウイザードでプロジェクトを作成する際に、プロジェクトウイザードの3枚目のユーザーインターフェース機能の設定画面でビューウインドウの形式として「リストビュー」を選択する。
BEGIN_MSG_MAP(CMainFrame) (...省略...) REFLECT_NOTIFICATIONS() END_MSG_MAP()
次にビュークラスのメッセージマップに2行追加して下記のようにする。ここではプロジェクト名を「Test99」としたためクラス名が「CTest99View」になっている。
BEGIN_MSG_MAP(CTest99View) REFLECTED_NOTIFY_CODE_HANDLER(NM_CUSTOMDRAW, OnCustomDraw) MESSAGE_HANDLER(WM_CREATE, OnCreate) END_MSG_MAP()
さらに同じくビュークラスの中に新しいメンバー変数を追加する。
LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
LRESULT lRet = DefWindowProc();
SetViewType(LVS_REPORT);
SetExtendedListViewStyle(LVS_EX_INFOTIP | LVS_EX_FULLROWSELECT);
InsertColumn(0, _T("カラム"), LVCFMT_LEFT, 100, -1);
AddItem(0,0,_T("アイテム1"));
AddItem(1,0,_T("アイテム2"));
AddItem(2,0,_T("アイテム3"));
AddItem(3,0,_T("アイテム4"));
AddItem(4,0,_T("アイテム5"));
return lRet;
}
LRESULT OnCustomDraw(int /*idCtrl*/, LPNMHDR pnmh, BOOL& bHandled)
{
LPNMLVCUSTOMDRAW pCustomDraw;
pCustomDraw = (LPNMLVCUSTOMDRAW)pnmh;
switch(pCustomDraw->nmcd.dwDrawStage)
{
case CDDS_PREPAINT:
return CDRF_NOTIFYITEMDRAW;
case CDDS_ITEMPREPAINT:
if(pCustomDraw->nmcd.dwItemSpec % 2)
{
pCustomDraw->clrTextBk = RGB(250, 240, 150);
pCustomDraw->clrText = RGB(0, 0, 200);
return CDRF_NEWFONT;
}
}
bHandled = FALSE;
return 0;
}
