//自绘的控件从CWindowImpl和COwnerDraw 继承
class CListViewCtrlEx : public CWindowImpl<CListViewCtrlEx,CListViewCtrl>,
public COwnerDraw<CListViewCtrlEx>
void DrawItem(LPDRAWITEMSTRUCT /*lpDrawItemStruct*/) { // must be implemented ATLASSERT(FALSE); } void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct) { if(lpMeasureItemStruct->CtlType != ODT_MENU) { HWND hWnd = GetDlgItem(lpMeasureItemStruct->CtlID); CClientDC dc(hWnd); TEXTMETRIC tm = { 0 }; dc.GetTextMetrics(&tm); lpMeasureItemStruct->itemHeight = tm.tmHeight+30; } else lpMeasureItemStruct->itemHeight = ::GetSystemMetrics(SM_CYMENU); } int CompareItem(LPCOMPAREITEMSTRUCT /*lpCompareItemStruct*/) { // all items are equal return 0; } void DeleteItem(LPDELETEITEMSTRUCT /*lpDeleteItemStruct*/) { // default - nothing }
m_listCtrl.SubclassWindow(GetDlgItem( IDC_LIST1 ));
m_listCtrl.ModifyStyle(0, LVS_OWNERDRAWFIXED);
REFLECT_NOTIFICATIONS() //消息反射通知宏 必须要加的