Как уведомить родительское окно о событии прокрутки элемента управления списком дочернего окна в WIN32 API?

Как «уведомить» родительское окно о «событии прокрутки» его дочернего окна, элемента управления «список», каждый раз, когда оно прокручивается вверх или вниз в WIN32 API?

Я пытаюсь создать словарь с помощью WIN32 API. Я создал родительское окно, а затем создал в нем элемент управления списком дочернего окна.

Я хочу добавлять «списки из 50 слов» за один раз в элемент управления списком из базы данных, чтобы приложение вообще не занимало времени при запуске.

Затем я хочу отслеживать «положение полосы прокрутки» (значение nPos структуры «SCROLLINFO») элемент управления списком, когда пользователь прокручивает списки слов вверх или вниз, так что я могу вызвать функцию, которая добавляет еще 50 слов в конец окна списка, когда оно почти прокручено до самого низа.

В функции процедуры главного окна внутри оператора "switch" я использовал сообщение окна "WM_VSCROLL", надеясь поймать список дочернего окна. событие прокрутки элемента управления. Элемент управления списком дочернего окна имеет стиль «LBS_NOTIFY». Но все напрасно! Событие прокрутки элемента управления списком не уведомляется его родительскому окну. Родительское окно также ничего не делает в сообщении "WM_VSCROLL" для события прокрутки элемента управления списком дочернего окна.

Пожалуйста, помогите мне, направьте меня, покажите мне на примерах кода, как «уведомить» родительское окно о «событии прокрутки» его дочернего окна, элемент управления "список" каждый раз, когда он прокручивается вверх или вниз в WIN32 API.


person Bhaddiya Tanchangya    schedule 15.08.2013    source источник


Ответы (1)


Сообщения прокрутки отправляются только в то окно, которое фактически прокручивается, в данном случае ListBox. LBS_NOTIFY применяется только к нескольким избранным сообщениям, которые не включают сообщения с прокруткой. Вам нужно будет создать подкласс ListBox либо через SetWindowLongPtr(GWL_WNDPROC), либо через SetWindowSubclass(), и ваша процедура подкласса будет перехватывать сообщения прокрутки и перенаправлять информацию в родительское окно по мере необходимости.

person Remy Lebeau    schedule 15.08.2013
comment
Большое спасибо за ваш ответ. Я также нашел здесь очень полезную ссылку: stackoverflow.com/questions/239866/ - person Bhaddiya Tanchangya; 16.08.2013