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重绘,总结一下,免得又搞忘了,
发布评论