(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

(0)

相关推荐