- 4
- 0
- 约2.01千字
- 约 2页
- 2023-07-29 发布于山东
- 举报
改变CListCtrl、CHeaderCtrl高度、字体、颜色和背景
一、实现过程
表头改正
新建一个MFC类CHeaderCtrlCl,其基类为CHeaderCtrl,响应OnPaint消息实现自绘,实现代码请看源代码(由于代码较占篇幅,所以就不贴上来了,对不起),在头文件中定义函数
LRESULTOnLayout(WPARAMwParam,LPARAMlParam,)之后手动增添消息响应ON_MESSAGE(HDM_LAYOUT,OnLayout),在消息响应中改变高度,实现代码如下:
LRESULTCHeaderCtrlCl::OnLayout(WPARAMwParam,LPARAMlParam)
{
LRESULTlResult=CHeaderCtrl::DefWindowProc(HDM_LAYOUT,0,lParam);HD_LAYOUThdl=*(HD_LAYOUT*)lParam;
RECT*prc=hdl.prc;
WINDOWPOS*pwpos=hdl.pwpos;
intnHeight=(int)(pwpos-cy*m_Height);//改变高度,m_Height为倍数pwpos-cy=nHeight;
prc-top=nHeight;
returnlResult;
}
表的改正
新建一个MFC类CListCtrlCl,其基类为CListCtrl,定义一个CHeaderCtrlCl的成员变量m_Header,重载
PreSubclassWindow( ),在函数中改正控件种类为自绘模式,然后子类化表头,代码如下:
voidCListCtrlCl::PreSubclassWindow( )
{
TODO:在此增添专用代码和/或调用基类
ModifyStyle(0,LVS_OWNERDRAWFIXED);
CListCtrl::PreSubclassWindow( );
CHeaderCtrl*pHeader=GetHeaderCtrl( );
m_Header.SubclassWindow(pHeader-GetSafeHwnd( ));
}
增添成员变量,保留一些基本信息。
CPtrListm_ptrListCol;
//保留列颜色
CPtrListm_ptrListItem;//
保留Item颜色表
CPtrListm_colTextColor;//
保留列字体颜色
CPtrListm_ItemTextColor;//
保留单元格字体颜色
重载DrawItem( )实现自绘,实现代码请参照代码。手动增添消息宏ON_WM_MEASUREITEM_REFLECT( ),增添下面的函数,实现修转行高。
voidCListCtrlCl::MeasureItem(LPMEASUREITEMSTRUCTlpMeasureItemStruct)
{
if(m_nRowHeight0)
{
lpMeasureItemStruct-itemHeight=m_nRowHeight;
}
}增添消息办理OnMeasureItem( )voidCListCtrlCl::OnMeasureItem(intnIDCtl,LPMEASUREITEMSTRUCTlpMeasureItemStruct)
{
TODO:在此增添消息办理程序代码和/或调用默认值
CListCtrl::OnMeasureItem(nIDCtl,lpMeasureItemStruct);
}
覆盖基类InsertColumn进队列信息保留
intCListCtrlCl::InsertColumn(intnCol,LPCTSTRlpszColumnHeading,
intnFormat/*=LVCFMT_LEFT*/,
intnWidth/*=-1*/,
intnSubItem/*=-1*/)
{
m_Header.m_HChar.Add(lpszColumnHeading);
if(nFormat==LVCFMT_LEFT)
{
m_Header.m_Format=m_Header.m_Format+0;
}
elseif(nFormat==LVCFMT_CENTER)
{
m_Header.m_Format=m_Header.m_Format+1;
}
elseif(nFormat==LVCFMT_RIGHT)
{
m_Header.m_Format=m_Header.m_Format+2;
}
else
{
m_Header.m_Format=m_Header.m_Format+1;
}
returnCListCtrl::InsertColumn(nCol,lpszColumnHeading,nFormat,nWidth,nSubItem);
}
原创力文档

文档评论(0)