Операционная система Windows 95 для программиста

Обработка извещений


Когда пользователь перемещает движок органа управления Trackbar, родительское окно получает извещения в форме сообщения WM_HSCROLL (или WM_VSCROLL для горизонтального расположения). Эти извещения аналогичны извещениям, поступающим от полосы просмотра Scrollbar.

Младшее слово параметра wParam сообщения WM_HSCROLL может содержать один из следующих кодов извещения:



Код извещения Описание
TB_PAGEUP Извещение поступает, когда пользователь сделал щелчок мышью по полосе Trackbar слева или сверху от движка, либо нажал клавишу с кодом VK_PRIOR (клавишу <PgUp>)
TB_PAGEDOWN Пользователь сделал щелчок справа или снизу от движка, либо нажал клавишу с кодом VK_NEXT (клавишу <PgDn>)
TB_LINEUP Была нажата клавиша с кодом VK_LEFT или VK_UP (клавиша перемещения курсора влево или вверх)
TB_LINEDOWN Была нажата клавиша с кодом VK_RIGHT или VK_DOWN (клавиша перемещения курсора вправо или вниз)
TB_TOP Пользователь нажал клавишу с кодом VK_HOME (клавишу <Home>)
TB_BOTTOM Пользователь нажал клавишу с кодом VK_END (клавишу <End>)
TB_THUMBPOSITION Это извещение приходит, когда пользователь переместил мышью движок в новое положение
TB_THUMBTRACK Извещение TB_THUMBTRACK приходит в процессе перемещения движка
TB_ENDTRACK Извещение приходит после завершения перемещения движка мышью или отпускания клавиши, с помощью которой перемещался движок

Ниже мы привели функцию DlgProc_OnHScroll из приложения Compact Disk Player, обрабатывающую извещения от органа управления Trackbar:

void DlgProc_OnHScroll(HWND hdlg, HWND hwndCtl, UINT code, int pos) { switch(code) { case TB_LINEDOWN: case TB_PAGEDOWN: CdPlayNext(hdlg); break; case TB_LINEUP: case TB_PAGEUP: CdPlayPrev(hdlg); break; case TB_BOTTOM: CdPlay(hdlg, nTrackCnt); break; case TB_TOP: CdPlay(hdlg, 1); break; case TB_THUMBPOSITION: CdPlay(hdlg, pos); break; default: break; } }

Как видите, здесь все очень просто.

Функции DlgProc_OnHScroll передаются преобразованные параметры сообщения WM_HSCROLL. Код извещения находится в параметре code, а новое значение позиции (которое нужно для обработки извещения TB_THUMBPOSITION) - в параметре pos.



Содержание раздела