关于clistctrl改变行高度的代码,高手帮忙看看他是怎么工作的?

goo_foo 2003-07-09 05:16:26
// 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;
}

...全文
37 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
HighTech 2003-10-17
  • 打赏
  • 举报
回复
当ListCtrl创建的时候发送,WM_MESURMENT消息,此时调用CMyListCtrl::MeasureItem 函数,此后发送WM_DRAWITEM消息,调用DrawItem函数。如果设置了Control的LBS_OWNERDRAWFIXED属性,WM_MESURMENT消息只在第一个WM_DRAWITEM消息到来前发送一次。
FuzzyControl 2003-10-16
  • 打赏
  • 举报
回复
对!
lmphp 2003-07-09
  • 打赏
  • 举报
回复
也可以改变图标实现!
kosuke 2003-07-09
  • 打赏
  • 举报
回复
这有什么,就是把行高设为字体高度
homeg 2003-07-09
  • 打赏
  • 举报
回复
BOOL b = f.CreatePointFont(150, "System");
pListCtrl->SetFont(&f);

通过改变字体高度可以改变行高

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧