印度陆军人数知乎:VC++中CListCtrl如何更改其行高与Header高度?
来源:百度文库 编辑:神马品牌网 时间:2024/10/05 10:34:44
1、扩大字体将项高度撑大。
2、用图片将项高度撑大。
3、自画CListCtrl,要修改CListCtrl的列表项高度,需要自己添加 MeasureItem 的消息响应函数。
对CListCtrl进行自绘制
定义一个MEASUREITEMSTRUCT
MEASUREITEMSTRUCT 的结构:
typedef struct tagMEASUREITEMSTRUCT { // mis
UINT CtlType; // type of control
UINT CtlID; // combo box, list box, or button identifier
UINT itemID; // menu item, variable-height list box,
// or combo box identifier
UINT itemWidth; // width of menu item, in pixels
UINT itemHeight; // height of single item in list box menu,
// in pixels
DWORD itemData; // application-defined 32-bit value
} MEASUREITEMSTRUCT;
重载OnMeasureItem 进行自绘制
给你一个例子:
void CListCtrlEx::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
// Get the LOGFONT for the current font.
LOGFONT lf;
::ZeroMemory(&lf, sizeof(lf));
CFont* pFont = GetFont();
ASSERT_VALID(pFont);
if (pFont)
VERIFY(pFont->GetLogFont(&lf));
int nAdj(4) ;
m_nLinesPerRow = max(m_nLinesPerRow, 1);
if (lf.lfHeight < 0)
lpMeasureItemStruct->itemHeight = ((-lf.lfHeight+nAdj) * (m_nLinesPerRow));
else
lpMeasureItemStruct->itemHeight = ((lf.lfHeight+nAdj) * (m_nLinesPerRow));
}
这个函数其实相当于响应了WM_MEASUREITEM消息
然后再重载自绘制函数
void CListCtrlEx::OnMeasureItem(int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
CListCtrl::OnMeasureItem(nIDCtl, lpMeasureItemStruct);
}
如果还不太懂的话可以和我联系,我给你详细的代码