原文链接:http://jingyan.baidu.com/article/5bbb5a1b38af1113eaa17910.html
CYJHeaderCtrl是继承CHeaderCtrl的自定义类,重载OnChildNotify,以下代码可以禁止指定列数的列被拖动改变列宽,从而实现锁定例的功能。
BOOL CYJHeaderCtrl::OnChildNotify(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pLResult)
{
// TODO: 在此添加专用代码和/或调用基类
//变量定义
NMHEADER * pNMHearder=(NMHEADER*)lParam;
//拖动消息
if ((HDN_BEGINTRACKA == pNMHearder->hdr.code) || (HDN_BEGINTRACKW == pNMHearder->hdr.code))
{
//禁止拖动
if (pNMHearder->iItem<(int)m_uFixedCols) // 另外添加函数用于动态设置m_uFixedCols的值
{
*pLResult=TRUE;
return TRUE;
}
}
return __super::OnChildNotify(message,wParam,lParam,pLResult);
// return CHeaderCtrl::OnChildNotify(message, wParam, lParam, pLResult);
}
通过此方法也可以实现锁定某一列
//拖动消息
if ((HDN_BEGINTRACKA == pNMHearder->hdr.code) || (HDN_BEGINTRACKW == pNMHearder->hdr.code))
{
//禁止拖动
if (pNMHearder->iItem == 3) // 禁止改变第4列的宽度,即锁定第4列
{
*pLResult=TRUE;
return TRUE;
}
}