通过重写虚函数OnNotify实现,OnNotify函数是CListCtrl类中的虚函数,通过重载该函数,来修改ListCtrl控件的一些属性。
具体方法:
假设有类A:
class A : B
{}
class B:CListCtrl
{}
在类A的头文件中:
//头文件中
virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult);
在类A的cpp文件中:
//禁止控件列宽可变
BOOL A::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
HD_NOTIFY *pHDN = (HD_NOTIFY*)lParam;
switch(((NMHDR*)lParam)->code)
{
case HDN_BEGINTRACKW://拖动
case HDN_BEGINTRACKA:
if (pHDN->iItem == Col) // Col—设定为自己不想改变的列值,比如Col=0,就是第1列
{
*pResult = TRUE;
return TRUE;
}
break;
}
return B::OnNotify(wParam, lParam, pResult); //注意这里
}
至此,我们类A中的ListCtrl控件的列宽便是固定不可变的了。(注意:OnNotify函数不需要我们自己去调用)