关于clistctrl改变行高度的代码,高手帮忙看看他是怎么工作的?
// In the header file
//{{AFX_MSG(CMyListCtrl)
afx_msg LRESULT OnSetFont(WPARAM wParam, LPARAM);
afx_msg void MeasureItem (LPMEASUREITEMSTRUCT lpMeasureItemStruct );
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
//////////////////////////////////////////////////////////////////////
// In the cpp file
BEGIN_MESSAGE_MAP(CMyListCtrl, CListCtrl)
//{{AFX_MSG_MAP(CMyListCtrl)
ON_MESSAGE(WM_SETFONT, OnSetFont)
ON_WM_MEASUREITEM_REFLECT( )
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
LRESULT CMyListCtrl::OnSetFont(WPARAM wParam, LPARAM)
{
LRESULT res = Default();
CRect rc;
GetWindowRect( &rc );
WINDOWPOS wp;
wp.hwnd = m_hWnd;
wp.cx = rc.Width();
wp.cy = rc.Height();
wp.flags = SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOOWNERZORDER | SWP_NOZORDER;
SendMessage( WM_WINDOWPOSCHANGED, 0, (LPARAM)&wp );
return res;
}
void CMyListCtrl::MeasureItem ( LPMEASUREITEMSTRUCT lpMeasureItemStruct )
{
LOGFONT lf;
GetFont()->GetLogFont( &lf );
if( lf.lfHeight < 0 )
lpMeasureItemStruct->itemHeight = -lf.lfHeight;
else
lpMeasureItemStruct->itemHeight = lf.lfHeight;
}