SendMessage (hSlider, TBM_SETRANGE, TRUE, MAKELONG(0,10));
//установить движок в начальную позицию 5
SendMessage (hSlider, TBM_SETPOS, TRUE, 5);
//Обработка сообщений от вертикальной полосы прокрутки, вертикального тредбара
//он посылает сообщение WM_VSCROLL, но при этом в LPARAM находится его хендел
//кроме того СПИН тоже посылает аналогичное сообщение, но со своим хенделом
//поэтому в примере продемонстрирована разделение сообщений сразу от линейки
//прокрутки, спина и слайдера
//список извещений от слайдера: TB_ смотри в MSDN
//СПИН извещений не имеет:
case WM_VSCROLL:
if (lParam == (LPARAM)hSlider || lParam == (LPARAM)hSpin)
switch (LOWORD(wParam))
{
case TB_PAGEUP: MessageBox(hWnd, "SLAIDER", "TRECBAR", MB_OK ); break;
}
else {
switch (LOWORD(wParam))
{
case SB_PAGEUP: nTekV=max(0, nTekV-10); break;
case SB_LINEUP: nTekV=max(0, nTekV-1); break;
case SB_PAGEDOWN: nTekV=min(100, nTekV+10); break;
case SB_LINEDOWN: nTekV=min(100, nTekV+1); break;
case SB_THUMBPOSITION:
case SB_THUMBTRACK: nTekV=HIWORD(wParam); break;
}
SetScrollPos((HWND)lParam,SB_CTL,nTekV,TRUE);
}
break;
//Для демонстрации получения данных от слайдера сделаем еще одну кнопку на форме
//с надписью СЛАЙДЕР и к ней присоединим следующий программный код:
case WM_COMMAND:
//обработка сообщений от элементов диалогового окна
switch (LOWORD (wParam))
{
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
case IDC_BUTTON2:
//Для управления кнопкой используются сообщения BM_
//получаем данные СЛАЙДЕРА
ListIndex= SendMessage (hSlider, TBM_GETPOS , 0, 0);
sprintf(szListText, "n= %d", ListIndex);
MessageBox(hWnd, szListText, "ЗНАЧЕНИЕ CLIDERS", MB_OK );
break;
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
}
Создадим новый элемент на форме – вертикальную линейку прогресса:
Пишем дополнительные строки программы управления линейкой прогресса.
switch (wMsg)
{
case WM_INITDIALOG:
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
//Инициализация прогрессной линейки
//все сообщения для линейки прогресса начинаются на PBM_
//их состав и назначение см. в MSDN
//С помощью спец.функции устанавливается диапазон работы прогресса
SendDlgItemMessage(hWnd, IDC_PROGRESS1, PBM_SETRANGE, 0, MAKELONG(0,100));
//и начальное состояние линейки прогресса
SendDlgItemMessage(hWnd, IDC_PROGRESS1, PBM_SETPOS, 50, 0);
//Для иллюстрации управления прогрессной линейкой мы вставили строку
//изменения позиции прогресса в блок управления вертикальной линейки прокрутки
//так, что теперь прогресс в точности отслеживает положение движка этой линейки
//Вертикальная полоса прокрутки
case WM_VSCROLL:
if (lParam == (LPARAM)hSlider || lParam == (LPARAM)hSpin)
switch (LOWORD(wParam))
{
case TB_PAGEUP: MessageBox(hWnd, "SLAIDER", "TRECBAR", MB_OK ); break;
}
else {
switch (LOWORD(wParam))
{
case SB_PAGEUP: nTekV=max(0, nTekV-10); break;
case SB_LINEUP: nTekV=max(0, nTekV-1); break;
case SB_PAGEDOWN: nTekV=min(100, nTekV+10); break;
case SB_LINEDOWN: nTekV=min(100, nTekV+1); break;
case SB_THUMBPOSITION:
case SB_THUMBTRACK: nTekV=HIWORD(wParam); break;
}
SetScrollPos((HWND)lParam,SB_CTL,nTekV,TRUE);
// и изменить прогрессную линейку
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.