2016-11-07 3 views
1

Мне пришлось заменить старый элемент управления MFCSharpGrid на CCheckListBox.Вертикальная полоса прокрутки MFC CCheckListBox не обновляется

Теперь, после отображения вертикальной полосы прокрутки для списка, она, кажется, отправляет правильные события (линия вверх/вниз и страница вверх/вниз) в клиентскую область списка, и это позволяет колесу мыши прокрутка, которая недоступна при скрытой полосе прокрутки.

Однако полоса прокрутки не обновляется сама собой: большой палец не перемещается при прокрутке клиентской области (даже не в ответ на свитки из полосы прокрутки), а размер большого пальца не пропорционален размеру страницы, размер.

Список ящик создается более или менее, как это:

m_grid.Create(LBS_HASSTRINGS | LBS_OWNERDRAWFIXED | LBS_NOTIFY, m_gridRect, this, IDC_GRID1); 

Строки добавляются итеративно, а затем мы спрашиваем отображение полосы прокрутки, как это:

m_grid.ShowScrollBar(SB_VERT, TRUE); 

Попытка установить SCROLLINFO для min/max/page-size не решает проблему обновления позиции.

Что мне здесь не хватает?

ответ

1

Вы не хотите вручную использовать ShowScrollBar. Удалите это и скорее создайте список с помощью стиля WS_VSCROLL.

m_grid.Create(WS_VSCROLL | LBS_HASSTRINGS | LBS_OWNERDRAWFIXED | LBS_NOTIFY, m_gridRect, this, IDC_GRID1); 

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

+0

@ arcraig5075 - все было правильно, спасибо! –