MFC CListView响应HDN_ITEMCHANGING后改变列宽无法自动显示隐藏水平滚动条

我想通过响应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);

}

以上是 MFC CListView响应HDN_ITEMCHANGING后改变列宽无法自动显示隐藏水平滚动条 的全部内容, 来源链接: utcz.com/a/39269.html

回到顶部