WTLでリストビューでアイテムの高さを指定する

前回作成した「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;
	}

test101.gif
要はWM_MEASUREITEMでitemHeightに新しい行の高さを代入するだけでいい。

プロジェクトファイルをダウンロード


カテゴリー「ウインドウ操作」 のエントリー