2013-12-02 4 views
2

У меня есть элемент управления списком и отключите полосу прокрутки, используя следующий код.Как получить полосу прокрутки окна?

InitializeFlatSB(this->m_hWnd); 
FlatSB_EnableScrollBar(this->m_hWnd, SB_BOTH, ESB_DISABLE_BOTH); 

Полосы прокрутки не исчезают, они просто становятся белыми, что это то, что мне нужно, потому что я хочу, чтобы перерисовать свои собственные полосы прокрутки на их первоначального прямоугольника региона. Таким образом, мои собственные полосы прокрутки не будут охватывать содержимое списка, и я могу добавить функциональность, чтобы функция колесика мыши была включена.

Но как я могу получить область прямоугольника полос прокрутки?

+0

Я знаю, что это не ваш вопрос, но если вы хотите удалить их, а не отключить их, вам понадобится [FlatSB_ShowScrollBar] (http://msdn.microsoft.com/en-us/library/windows/desktop/bb775441 (v = vs.85) .aspx). –

+0

@RogerRowland Я хочу отключить их и перерисовать свои собственные полосы прокрутки на их исходной области прямоугольника. Поэтому мои собственные полосы прокрутки не будут отображаться в содержимом списка, а функция колесика мыши будет включена. – Merlin

+0

Хорошо, я взял на себя смелость отредактировать ваш вопрос, чтобы это было ясно - возможно, вы можете проверить, правильно ли я понял и переделать, если необходимо. Кроме того, возможно, вы можете посмотреть [FlatSB_GetScrollProp] (http://msdn.microsoft.com/en-us/library/windows/desktop/bb775433%28v=vs.85%29.aspx), если это поможет найти размер полосы прокрутки. –

ответ

0

Как указано в комментариях, можете ли вы попытаться вывести прямоугольник из GetWindowRect и GetClientRect? Кажется, что простой расчет делает вычитания и получает прямоугольник Non Client для вертикальной полосы прокрутки, а другой для горизонтали.

Смежные вопросы