Вертикальный scroll в скинабельном listbox
Главная задача состоит в том, чтобы написать скинабельный CComboBox. Подзадачей является написание скинабельного CListBox. Я сделал скинабельную рамку у Listbox и сейчас пытаюсь присобачить к нему скинабельный вертикальный скролл. Я поместил ScrollBar в non-client часть ListBox (ListBox является родительским окном для ScrollBar). За счёт этого я могу не перерисовывать ScrollBar каждый раз после вызова метода DrawItem().
Проблема заключается в том, что когда я нажимаю на ScrollBar, то ListBox закрывается (так, как будто бы я нажал не на non-client часть самого ListBox а вне контрола). Перед закрытием ListBox можно заметить, что скроллинг происходит нормально. При этом если я не создаю ScrollBar, но выделяю под него non-client область, то при нажатии на неё ничего не происходит (окно ListBox не закрывается).
Есть и другие проблемы со скинабельным CComboBox, но эта является самой критичной.
Кода в SkinedListBox и SkinedComboBox получилось довольно много, так что если что-то конкретное понадобится - выложу.
Оказалось, что скинабельный scrollbar вызывал методы SetCapture() и ReleaseCapture(). При вызове ReleaseCapture() listBox закрывался, будучи всплывающим окном.
Хм.. А как связаны ReleaseCapture() и всплывающие окна, можно поподробнее?