(25条消息) CListViewCtrl和CListCtrl设置滚动条的隐藏和显示
先了解下滚动条出现的情况:
(1)ICON形式中,如果设置属性中对齐方式为LVS_ALIGNTOP,那么当内容容纳不下时,只会出现竖直滚动条(Vertical Scroll)
(2)ICON形式中,如果设置属性中对齐方式为LVS_ALIGNLEFT,那么当内容容纳不下时,只会出现水平滚动条(Vertical Scroll)
(3)Report形式中,当行容纳不下时,出现竖直滚动条;当列容纳不下时,出现水平滚动条
有些时候,如果要强烈禁止出现水平滚动条或者竖直滚动条,那么可以用下面的方法:
响应WM_NCCALCSIZE消息,设置响应函数:
void CThumbnailViewList::OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpncsp)
{
// TODO: Add your message handler code here and/or call default
ModifyStyle(WS_HSCROLL,0); // 强烈禁止
ShowScrollBar(SB_VERT,1); // 强烈打开
CListCtrl::OnNcCalcSize(bCalcValidRects, lpncsp);
}
例如在WTL中响应消息:
MESSAGE_HANDLER(WM_NCCALCSIZE, OnNcCalcSize)
直接设置响应函数:
LRESULT OnNcCalcSize(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled) { return S_OK; };
此时,滚动条将都不显示。
还有另外一种方式(我暂时没有测试):
DWORD dwStyle=::GetWindowLong(m_CameraList.GetSafeHwnd(),GWL_STYLE) ;
dwStyle =dwStyle^CS_VREDRAW;
::SetWindowLong(m_CameraList.GetSafeHwnd(),GWL_STYLE,dwStyle|WS_VISIBLE );
以上转自: http://hi.baidu.com/luoshupeng/item/d1120f1bc2310917e2f98610