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

Сообщения для органа управления Trackbar


Ниже мы перечислили сообщения, которые приложение может посылать органу управления Trackbar при помощи функции SendMessage :



Сообщение Описание
TBM_CLEARSEL Отмена выделения диапазона значений в окне Trackbar
TBM_CLEARTICS Удаление рисок
TBM_GETCHANNELRECT Определение координат и размеров воображаемого прямоугольника, ограничивающего область перемещения движка
TBM_GETLINESIZE Определение величины (в рисках) на которую перемещается движок, если пользователь нажимает клавиши с кодами VK_LEFT, VK_RIGHT, VK_UP или VK_DOWN
TBM_GETNUMTICS Определение количества рисок в окне Trackbar
TBM_GETPAGESIZE Определение величины (в рисках) на которую перемещается движок, если пользователь нажимает клавиши с кодами VK_PRIOR или VK_NEXT
TBM_GETPOS Определение текущего положения движка
TBM_GETPTICS Функция SendMessage, посылающая это сообщение, возвращает указатель на массив позиций рисок
TBM_GETRANGEMAX Определение максимальной позиции движка
TBM_GETRANGEMIN Определение минимальной позиции движка
TBM_GETSELEND Определение конечной позиции выделенной области
TBM_GETSELSTART Определение начальной позиции выделенной области
TBM_GETTHUMBLENGTH Определение длины движка в пикселах
TBM_GETTHUMBRECT Определение расположения и размеров движка
TBM_GETTIC Определение позиции риски с заданным номером
TBM_GETTICPOS Определение физического расположения указанной риски в системе координат внутренней области окна
TBM_SETLINESIZE Установка величины (в рисках) на которую перемещается движок, если пользователь нажимает клавиши с кодами VK_LEFT, VK_RIGHT, VK_UP или VK_DOWN
TBM_SETPAGESIZE Установка величины (в рисках) на которую перемещается движок, если пользователь нажимает клавиши с кодами VK_PRIOR или VK_NEXT
TBM_SETPOS Установка текущего положения движка
TBM_SETRANGE Установка минимальной и максимальной позиции движка в окне Trackbar
TBM_SETRANGEMAX Установка максимальной позиции движка в окне Trackbar
TBM_SETRANGEMIN Установка минимальной позиции движка в окне Trackbar
TBM_SETSEL Установка начальной и конечной позиции выделенной области
TBM_SETSELEND Установка конечной позиции выделенной области
TBM_SETSELSTART Установка начальной позиции выделенной области
TBM_SETTHUMBLENGTH Установка длины движка в пикселах
TBM_SETTIC Установка позиции риски с заданным номером. Не используется для первой и последней риски, которые создаются автоматически
TBM_SETTICFREQ Установка интервала, с которым располагаются риски
<
Детальное описание параметров этих сообщений вы найдете в SDK. Из-за недостатка места мы подробно рассмотрим только самые важные из них.

Прежде всего, если оран управления Trackbar расположен в диалоговой панели, вы должны определить его идентификатор. Это можно сделать с помощью функции GetDlgItem (описанной в 12 томе "Библиотеки системного программиста"):

hTrackBar = GetDlgItem(hdlg, IDC_TRACKBAR);

В этом примере в переменную hTrackBar записывается идентификатор окна органа управления Trackbar, который определен в диалоговой панели с идентификатором IDC_TRACKBAR (рис. 7.4).

При инициализации органа управления Trackbar вы должны определить диапазон изменения значений, т. е. минимальную и максимальную позицию движка в окне Trackbar. Это можно сделать с помощью сообщения TBM_SETRANGE :

SendMessage(hTrackBar, TBM_SETRANGE, TRUE, MAKELPARAM(1, nTrackCnt));

Через параметр wParam вместе с этим сообщением передается флаг перерисовки. Если он равен TRUE, сразу после установки диапазона окно органа управления будет перерисовано, если FALSE - нет.

Значение MAKELPARAM(min, max), записанное в lParam, определяет минимальное min и максимальное max значения позиции движка.

Затем нужно установить расстояние, на которое перемещается движок при управлении им с помощью мыши и клавиатуры. Для этого окну органа управления Trackbar нужно послать сообщения TBM_SETPAGESIZE и TBM_SETLINESIZE , например:

SendMessage(hTrackBar, TBM_SETPAGESIZE, 0, 1); SendMessage(hTrackBar, TBM_SETLINESIZE, 0, 1);

Для этих сообщений параметр wParam должен быть равен нулю. В параметр lParam следует записать значение шага.

В данном случае мы устанавливаем одинаковый шаг, однако вы можете использовать и разные шаги. Например, для грубого позиционирования вы можете указать в сообщении TBM_SETPAGESIZE шаг, равный 10, а для тонкого - указать в сообщении TBM_SETLINESIZE шаг, равный 1.

Для принудительной установки движка Trackbar в новую позицию используйте сообщение TBM_SETPOS :

SendMessage(hTrackBar, TBM_SETPOS, TRUE, nCurTrack);

Параметр wParam этого сообщения содержит флаг позиционирования. Если он равен TRUE (как в приведенном выше примере), движок устанавливается в позицию, указанную параметром lParam. Если же этот флаг равен FALSE, движок не перемещается.

Заметьте, что есть одно отличие между полосой просмотра Scrollbar и органом управления Trackbar. Когда пользователь делает щелчок мышью по полосе просмотра, приложение должно в ответ на это установить новое положение движка с помощью функции SetScrollPos . В противоположность этому, в указанной ситуации орган управления Trackbar перемещает движок автоматически.


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