首页 新闻 搜索 专区 学院

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

0
悬赏园豆:10 [已解决问题] 解决于 2020-08-18 09:46

我想通过响应HDN_ITEMCHANGING,控制列表控件中列的最小宽度,但是在使用类向导创建了以后,不进行任何代码的修改,即以下代码:

void CMyView::OnHdnItemchanging(NMHDR* pNMHDR, LRESULT* pResult)
{
	LPNMHEADER phdr = reinterpret_cast<LPNMHEADER>(pNMHDR);
	*pResult = 0;
}

这个时候运行,大幅增大列宽后,水平滚动条不会因为列超出范围而出现(不响应该消息前,水平滚动条能正常自动地显示和隐藏),如图:

并且更换选中行,着色也会出现问题:

我找了好多资料想刷新滚动条都没找到,希望各位大佬能给个解决方法

fenggwsx的主页 fenggwsx | 菜鸟二级 | 园豆:269
提问于:2020-08-18 08:17
< >
分享
最佳答案
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);
}
fenggwsx | 菜鸟二级 |园豆:269 | 2020-08-18 09:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册