Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема со скроллом listbox, mfc

32K
16 сентября 2008 года
Denis1986
27 / / 25.08.2008
Я создаю ScrollBar для класса, наследованного от ListBox, вручную. При этом я располагаю окно скролла в неклиентской части окна ListBox. Затем при скроллировании я в том числе вызываю метод CListBox::OnVScroll() для того, чтобы элементы ListBox были проскроллированы автоматически. Этот метод кроме всего прочего перемещает окно скролла на высоту одного элемента вверх. Поскольку мой скролл расположен в неклиентской части окна, то такое перемещение окна скролла является аномальным поведением контрола. С этим я научился худо-бедно бороться, вызывая метод SetWindowPos после CListBox::OnVScroll() (хотя это тоже, конечно, хак).
Проблема заключается в том, что когда я выполняю следующую последовательность действий:
1. "разворачиваю" список;
2. скроллирую список вниз;
3. "сворачиваю" список;
4. "разворачиваю" список;
При выполнении действия 4 - повтороного "разворачивания" списка - окно скролла автоматически опускается на высоту одного элемента listboxа вниз (компенсируя поднятие окна скролла вверх после скроллинга вниз). Так вот это опускание окна скролла я никак не могу предотвратить. Я пытаюсь делать так:
Код:
void CSkinnedComboBox::ShowDropDown(BOOL bShowIt)
{
    __super::ShowDropDown(bShowIt);

    m_my_list_box.HandleShowDropDown(bShowIt);
}

void CSkinnedListBox::HandleShowDropDown(BOOL bShowIt)
{
...
m_v_scroll.SetWindowPos(NULL, l_list_box_rect.right - l_scroll_rect.Width(), 0, 0, 0, SWP_NOACTIVATE | SWP_NOSIZE);
...
}


но это, как будто никак не влияет на расположение окна скролла и он всё равно после действия (4) распологается ниже положенного на высоту одного элемента listboxа.
Может быть можно как-то запретить менять размер и расположение окна скролла (начиная с определённого момента)?
Или ещё каким-то образом предотвратить перемещение окна скролла вверх-вниз?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог