Сообщения для органа управления 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 перемещает движок автоматически.