我想通过响应HDN_ITEMCHANGING
,控制列表控件中列的最小宽度,但是在使用类向导创建了以后,不进行任何代码的修改,即以下代码:
void CMyView::OnHdnItemchanging(NMHDR* pNMHDR, LRESULT* pResult)
{
LPNMHEADER phdr = reinterpret_cast<LPNMHEADER>(pNMHDR);
*pResult = 0;
}
这个时候运行,大幅增大列宽后,水平滚动条不会因为列超出范围而出现(不响应该消息前,水平滚动条能正常自动地显示和隐藏),如图:
并且更换选中行,着色也会出现问题:
我找了好多资料想刷新滚动条都没找到,希望各位大佬能给个解决方法
已解决:不要使用HDN_ITEMCHANGING
,重写虚函数OnNotify
:
BOOL CMyView::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
HD_NOTIFY* pHDN = (HD_NOTIFY*)lParam;
if ((pHDN->hdr.code == HDN_ITEMCHANGINGW || pHDN->hdr.code == HDN_ITEMCHANGINGA)
&& pHDN->pitem->cxy < 80)
{
*pResult = TRUE; // disable change
return TRUE; // Processed message
}
return CListView::OnNotify(wParam, lParam, pResult);
}