我画了一个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()
这段代码 我那没有自动生成 ,是我自己拷贝过去的。问题应该出在这个地方 哪个高手可以帮我解决一下。不胜感激!!!

解决方案 »

  1.   

    干嘛要搞什么倍数不倍数的,直接指定不就行了?
    给你我的代码
    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;
    }
      

  2.   

    是不是倍数 都不重要,重要的是 怎么能响应OnLayout方法
      

  3.   

    是不是没有设置属性啊!
    View设置为Report