92978b58

Сообщения от полосы просмотра


Горизонтальные полосы просмотра, определенные для окна (одним из описанных выше способов) посылают в окно сообщение WM_HSCROLL , а все вертикальные - WM_VSCROLL .

Если полоса просмотра была создана первым способом (как орган управления), эти сообщения будет получать функция родительского окна. Если полоса просмотра была создана вторым способом (определена при создании окна), сообщения от нее будут поступать в функцию окна, имеющего полосы просмотра.

Опишем параметры сообщений WM_HSCROLL и WM_VSCROLL.

Как мы уже говорили, через параметр mp1 этих сообщений передается идентификатор полосы просмотра, через младшее слово параметра mp1 - текущая позиция движка полосы просмотра, а через старшее слово этого же параметра - код операции, выполненной пользователем над полосой просмотра. Вы можете извлечь перечисленные выше параметры следующим образом:

usidentifier = (USHORT) mp1; // идентификатор окна sslider = SHORT1FROMMP(mp2); // позиция движка uscmd = SHORT2FROMMP(mp2); // код операции

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

Ниже мы перечислим коды команд, которые могут поступать от полос просмотра.

Код комады Описание
SB_LINELEFT Пользователь сделал щелчок мышью по левой кнопке горизонтальной полосы просмотра. Значение позиции полосы просмотра уменьшается на единицу
SB_LINERIGHT Аналогично предыдущему, но по правой кнопке. Значение позиции полосы просмотра увеличивается на единицу
SB_PAGELEFT Пользователь сделал щелчок по полосе просмотра слева от движка
SB_PAGERIGHT Аналогично предыдущему, но щелчок сделан справа от движка
SB_LINEUP Пользователь сделал щелчок мышью по верхней кнопке горизонтальной полосы просмотра. Значение позиции полосы просмотра уменьшается на единицу
SB_LINEDOWN Аналогично предыдущему, но щелчок сделан по нижней кнопке полосы просмотра. Значение позиции полосы просмотра увеличивается на единицу
SB_SLIDERPOSITION Движок установлен в конечную позицию
SB_SLIDERTRACK Сообщение с этим кодом непрерывно поступает в процессе перемещения движка полосы просмотра при помощи мыши
SB_ENDSCROLL Сообщение с кодом SB_ENDSCROLL посылается в том случае, если пользователь завершил перемещение движка полосы просмотра
<


Начало  Назад  Вперед