前回作成した「WTLでリストビューをオーナードローする 」を元にリストビューの行サイズを指定できるようにする。
まずMainFrm.hのメッセージマップでWM_MEASUREITEMメッセージをビュー内で処理するように指定する。if(uMsg == WM_MEASUREITEM && ((LPMEASUREITEMSTRUCT)lParam)->CtlType == ODT_LISTVIEW) return m_view.ProcessWindowMessage(hWnd, uMsg, wParam, lParam, lResult, dwMsgMapID);
そしてビュークラス内のメッセージマップにメッセージハンドラを追加する。
BEGIN_MSG_MAP(CTest100View) (...省略...) MESSAGE_HANDLER(WM_MEASUREITEM, OnMeasureItem) END_MSG_MAP()
最後にビュークラスにメンバー関数を追加する。
LRESULT OnMeasureItem(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& bHandled)
{
LPMEASUREITEMSTRUCT lpMeasureItemStruct = (LPMEASUREITEMSTRUCT)lParam;
//行の高さを指定
lpMeasureItemStruct->itemHeight = 100;
return 0;
}
