我画了一个CListCtrl ,然后呢。我想改变行头的高度。
需要继承CHeaderCtrl类,自己写。我就在网上找了一个例子
按照他的写法继承了CHeaderCtrl类,但是我看他的代码里面有这段代码
BEGIN_MESSAGE_MAP(CHeaderCtrlCl, CHeaderCtrl)
ON_MESSAGE(HDM_LAYOUT, OnLayout)
END_MESSAGE_MAP()//这段代码是根据你传过来的倍数 进行设定行的高度的。
LRESULT CHeaderCtrlCl::OnLayout( WPARAM wParam, LPARAM lParam )
{
LRESULT lResult = CHeaderCtrl::DefWindowProc(HDM_LAYOUT, 0, lParam);
HD_LAYOUT &hdl = *( HD_LAYOUT * ) lParam;
RECT *prc = hdl.prc;
WINDOWPOS *pwpos = hdl.pwpos; int nHeight = (int)(pwpos->cy * m_Height);
pwpos->cy = nHeight;
prc->top = nHeight;
return lResult;
}
我debug了一下。发现他的工程可以走到这个方法里面,我的却不能。BEGIN_MESSAGE_MAP(CHeaderCtrlCl, CHeaderCtrl)
ON_MESSAGE(HDM_LAYOUT, OnLayout)
END_MESSAGE_MAP()
这段代码 我那没有自动生成 ,是我自己拷贝过去的。问题应该出在这个地方 哪个高手可以帮我解决一下。不胜感激!!!
需要继承CHeaderCtrl类,自己写。我就在网上找了一个例子
按照他的写法继承了CHeaderCtrl类,但是我看他的代码里面有这段代码
BEGIN_MESSAGE_MAP(CHeaderCtrlCl, CHeaderCtrl)
ON_MESSAGE(HDM_LAYOUT, OnLayout)
END_MESSAGE_MAP()//这段代码是根据你传过来的倍数 进行设定行的高度的。
LRESULT CHeaderCtrlCl::OnLayout( WPARAM wParam, LPARAM lParam )
{
LRESULT lResult = CHeaderCtrl::DefWindowProc(HDM_LAYOUT, 0, lParam);
HD_LAYOUT &hdl = *( HD_LAYOUT * ) lParam;
RECT *prc = hdl.prc;
WINDOWPOS *pwpos = hdl.pwpos; int nHeight = (int)(pwpos->cy * m_Height);
pwpos->cy = nHeight;
prc->top = nHeight;
return lResult;
}
我debug了一下。发现他的工程可以走到这个方法里面,我的却不能。BEGIN_MESSAGE_MAP(CHeaderCtrlCl, CHeaderCtrl)
ON_MESSAGE(HDM_LAYOUT, OnLayout)
END_MESSAGE_MAP()
这段代码 我那没有自动生成 ,是我自己拷贝过去的。问题应该出在这个地方 哪个高手可以帮我解决一下。不胜感激!!!
给你我的代码
BEGIN_MESSAGE_MAP(CHeaderCtrlEx, CHeaderCtrl)
ON_MESSAGE(HDM_LAYOUT, OnLayout)
END_MESSAGE_MAP() LRESULT CHeaderCtrlEx::OnLayout(WPARAM wParam, LPARAM lParam)
{
LRESULT lResult = CHeaderCtrl::DefWindowProc(HDM_LAYOUT, wParam, lParam); HDLAYOUT& hdLayout = *reinterpret_cast<LPHDLAYOUT>(lParam);
LPRECT lpRect = hdLayout.prc;
LPWINDOWPOS lpWindowPos = hdLayout.pwpos; lpRect->top = lpWindowPos->cy = 整数,你的高度; return lResult;
}
View设置为Report