Азбука программирования в Win32 API


Азбука программирования в Win32 API - стр. 48


Характер воздействия оконная функция может определить по пара­метрам сообщения. Младшее слово wParam, которое и определяет харак-i ср воздействия на полосу прокрутки, может принимать значения, приве­денные в табл. 10. В таблице показано, что прокрутка при нажатии клавиши мыши в некоторых случаях производится на одну строку и одну страницу. В данном случае необходимо осознать, что понятия «строка» и «страница» ничего общего с текстовой строкой и страницей не имеют. Этими понятиями я заменит! условные единицы, на которые про­кручивается изображение в окне. К примеру, в приведенной программе строке соответствует один пиксель, а понятие страницы вовсе не опреде­лено (что есть страница для картинки?).

После ознакомления с таблицей становится ясно, какие •xl.OWORD(wParam)» должна обрабатывать прикладная программа.

Старшее слово wParam используется только в тех случаях, когда LOWORD(wParam) равен SBJTHUMBPOSITION или SB THUMBTRACK. В этих случаях оно хранит позицию слайдера. В остальных случаях это значение не используется.

В тех случаях, когда полосы прокрутки реализованы как дочерние ок­на, IParam содержит хэндл окна полосы прокрутки. Если полоса реализо­вана как часть окна, этот параметр не используется.

После того, как мы зафиксировали факт произведенного с полосой прокрутки действия и характер действия, программа должна правильно отреагировать на него и при необходимости изменить позицию слайдера в соответствии с произведенным воздействием. Делается это с помощью обращения к функции SetScrollPosQ, которая следующим образом описа­на в файле winuser.h:

WINUSERAPI int WINAPI SetScrolIPos(HWND hWnd, int nBar. int nPos,

BOOL bRcdraw);

55

Таблица 10. Идентификаторы характером воздействия на полосы прокрутки

Окончание табл. 10

Парамеф

Значение

 

Описание

 

 

 

SBJLINF.UP

 

0

 

Используется только с WM_VSCROLL;

 

 

 

 

 

щелчок мытью на стрелке вверх; приво-

 

 

 

SB_LUNELEFT

 

0

 

дит к прокрутке на одну «строку» вверх Используется только с WM   HSCROLL,

 

 

 

 

 

 

 

щелчок мышью на стрелке влево; приво-

 

 

 

SBJLINEDOWN

 

1

 

дит к прокрутке на одну «колонку» влево Используется только с \VM  VSCROLL,

 

 

 

 

 

 

 

щелчок мытью на стрелке ьни i; приводит к

 

 

 

SBJJNERIGHT

 

1

 

прокрутке на одну «строку» вниз Используется только с WM HSCROLL.,

 

 

 

 

 

 

 

щелчок мышью на стрелке вправо; приводит к

 

 

 

SB_PAGFUP

 

2

 

прокрутке на олну «колонку» вправо Используется •! ,ль„о с WMJVSCROLL,

 

 

 

 

 

 

 

щелчок мышью на полосе прокрутки выше

 

 

 

 

 

 

 

слайдера; приводит к прокрутке на одну

 

 

 

SB PAGELEFT

 

2

 

«страницу» вверх Используется ю.Т1,кос\\'М HSCROLL,

 

 

 

 

 

 

 

щелчок мышью на полосе прокрутки левее

 

 

 

 

 

 

 

слайдера; приводит к прокрутке на одну

 

 

 

SB PAGEDOWN

 

3

 

«страницу» влево Используется только с WM VSCROLL,

 

 

 

 

 

 

 

щелчок мышью на полосе прокрутки ниже

 

 

 

 

 

 

 

слайдера; приводит к прокрутке на одну

 

 

 

SB_PAGERIGHT

 

j

 

«страницу» вниз Используется только с WM  HSCROLL,

 

 

 

 

 

 

 

щелчок мышью на полоее прокрутки правее

 

 

 

 

 

 

 

слайдера. прпво.ттп к прокрутке на одну

 

 

 

SB_THUMBPOSITION

 

4

 

«страницу» вправо Перетаскивание слайдера закопчено, пользова-

 

 

 

SB_THUMBTRACK

 

5

 

тель отжал клавишу мыши Слайдер перетаскивается с помощью мыши,

 

 

 

 

 

 

 

приводит к перемещению содержимого

 

 

 

SB TOP

 

6

 

чкрана Используется только с вертикальными полоса-

 

 

 

SBJ.EFT

 

6

 

ми прокрутки, реализованными как дочерние окна, пользователь нажал клавишу «Ноте» Используется только с горизонтальными

 

 

 

 

 

 

 

полосами прокрутки, реализованными как

 

 

 

 

 

 

 

дочерние окна, пользователь нажал клавишу «Ноте»

 

 

 

SB BOTTOM

 

7

 

Используется только с вертикальными полоса-

 

 

 

 

 

 

 

ми прокрутки, реализованными как дочерние окна, пользователь нажал клавишу «bnd»

 

 

 

I lapasieip

 

Значение

 

Опиеание

 

 

I SB  RIGHT SBJ-NDSCROLL

 

7 8

 

Используется только с горизонтальными полосами прокрутки, реализованными как дочерние окна, пользователь нажал клавишу «End» Пользователь отпустил клавишу мыши после удержания се нажатой на стрелке или на полосе прокрутки

 

 

<


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



Книжный магазин