重载了一个CListCtrl类对其做如下操作:BOOL CMyList::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
// TODO: 在此添加专用代码和/或调用基类
HD_NOTIFY *pHDN = (HD_NOTIFY*)lParam;
if( (HDN_ITEMCHANGINGW == ((NMHDR*)lParam)->code) || (HDN_ITEMCHANGINGA == ((NMHDR*)lParam)->code) )
{
int iWidth = GetColumnWidth(pHDN->iItem);//获得当前操作的列的宽度
//此处,本意是想做如下处理:
//当该列的宽度小于20的时候,就将其设置为20,并且返回TRUE。
//问题----->会报错,貌似死循环了?
if( iWidth < 20 )
{
SetColumnWidth(pHDN->iItem,20); //这个地方貌似会引起崩溃?死循环了?
return *pResult = TRUE;
}
} return CListCtrl::OnNotify(wParam, lParam, pResult);
}
本意是想在OnNotify这个里面随时对当前列宽的改变进行监控,让其在小于20的时候就不能继续小了,也就是,最小是20的宽度。但是,使用 SetColumnWidth(pHDN->iItem,20) 这句后,会出现报错?那请问,我应该怎么做呢?谢谢!
我就是希望能控制列宽,让其在20以下。
{
// TODO: 在此添加专用代码和/或调用基类
HD_NOTIFY *pHDN = (HD_NOTIFY*)lParam;
if( (HDN_ITEMCHANGINGW == ((NMHDR*)lParam)->code) || (HDN_ITEMCHANGINGA == ((NMHDR*)lParam)->code) )
{
int iWidth = GetColumnWidth(pHDN->iItem);//获得当前操作的列的宽度
//此处,本意是想做如下处理:
//当该列的宽度小于20的时候,就将其设置为20,并且返回TRUE。
//问题----->会报错,貌似死循环了?
if( iWidth < 20 )
{
SetColumnWidth(pHDN->iItem,20); //这个地方貌似会引起崩溃?死循环了?
return *pResult = TRUE;
}
} return CListCtrl::OnNotify(wParam, lParam, pResult);
}
本意是想在OnNotify这个里面随时对当前列宽的改变进行监控,让其在小于20的时候就不能继续小了,也就是,最小是20的宽度。但是,使用 SetColumnWidth(pHDN->iItem,20) 这句后,会出现报错?那请问,我应该怎么做呢?谢谢!
我就是希望能控制列宽,让其在20以下。
HDN_ITEMCHANGINGW和HDN_ITEMCHANGINGA这两个值是不一样的。
写成if(HDN_ITEMCHANGING == ((NMHDR*)lParam)->code))
{
HD_NOTIFY *pHDN = (HD_NOTIFY*)lParam;
if((pHDN-> hdr.code == HDN_ITEMCHANGINGW||pHDN-> hdr.code == HDN_ITEMCHANGINGA)&& pHDN-> pitem-> cxy < 120)
{
pHDN->pitem->cxy = 120;
return TRUE; } return CListCtrl::OnNotify(wParam, lParam, pResult);}
BOOL bRet = FALSE;
BOOL CMyList::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
// TODO: Add your specialized code here and/or call the base class
HD_NOTIFY *pHDN = (HD_NOTIFY*)lParam;
if(!bRet && (HDN_ITEMCHANGEDA == ((NMHDR*)lParam)->code) || (HDN_ITEMCHANGEDW == ((NMHDR*)lParam)->code) )
{
int iWidth = GetColumnWidth(pHDN->iItem); if( iWidth < 50 )
{
SetColumnWidth(pHDN->iItem, 50);
bRet = TRUE;
return *pResult = FALSE;
}
else
{
bRet = FALSE;
}
}
return CListCtrl::OnNotify(wParam, lParam, pResult);
}