clistctrl重绘,总结一下,免得又搞忘了,

编程入门 行业动态 更新时间:2024-10-05 13:25:05

<a href=https://www.elefans.com/category/jswz/34/1762150.html style=clistctrl重绘,总结一下,免得又搞忘了,"/>

clistctrl重绘,总结一下,免得又搞忘了,



1. 要设置LVS_OWNERDRAWFIXED风格,并且重绘
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
在看的到行变高的效果
在GetColumn(),GetSubItemRect(),等可以重绘所用的东西

2. 在cpp文件中要设置这两个消息,进行响应
ON_WM_MEASUREITEM()
ON_WM_MEASUREITEM_REFLECT()
对应的是
void xxxxxx::OnMeasureItem(int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
    // TODO: Add your message handler code here and/or call default    
    CListCtrl::OnMeasureItem(nIDCtl, lpMeasureItemStruct);
}

void xxxxx::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
    lpMeasureItemStruct->itemHeight = 80;
}

3. 在调用WM_WINDOWPOSCHANGED消息后,函数MeasureItem()才会被调用,从而改变行的高度
所以一般做以下设置,来改变行的高度
void xxxxx::SetRowHeigt(int nHeight) //高置行高
{
    m_nRowHeight = nHeight;

    CRect rcWin;
    GetWindowRect(&rcWin);
    WINDOWPOS wp;
    wp.hwnd = m_hWnd;
    wp.cx = rcWin.Width();
    wp.cy = rcWin.Height();
    wp.flags = SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOOWNERZORDER | SWP_NOZORDER;
    SendMessage(WM_WINDOWPOSCHANGED, 0, (LPARAM)&wp);
}


更多推荐

clistctrl重绘,总结一下,免得又搞忘了,

本文发布于:2024-02-07 06:00:56,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1754350.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:clistctrl   又搞忘

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!