Программирование для IBM OS2




Приложение SLIDER - часть 3


WinSendMsg(hWndCirc2, CSM_SETINCREMENT, MPFROMLONG(10L), MPFROMLONG(2L));

WinSendMsg(hWndCirc2, CSM_SETVALUE, MPFROMLONG(255L), NULL);

// Создаем регулятор синего цвета // и настраиваем его параметры hWndCirc3 = WinCreateWindow(hWnd, WC_CIRCULARSLIDER, "Синий", WS_VISIBLE, 0, 0, 0, 0, hWnd, HWND_TOP, CIRCSLD3_ID, NULL, NULL);

WinSendMsg(hWndCirc3, CSM_SETRANGE, MPFROMLONG(0L), MPFROMLONG(255L));

WinSendMsg(hWndCirc3, CSM_SETINCREMENT, MPFROMLONG(10L), MPFROMLONG(2L));

WinSendMsg(hWndCirc3, CSM_SETVALUE, MPFROMLONG(255L), NULL);

return FALSE; }

// Изменяем размер и расположение регуляторов case WM_SIZE: { WinSetWindowPos(hWndCirc1, HWND_TOP, 0, 0, 150, 150, SWP_SIZE | SWP_MOVE | SWP_ZORDER);

WinSetWindowPos(hWndCirc2, HWND_TOP, 150, 0, 150, 150, SWP_SIZE | SWP_MOVE | SWP_ZORDER);

WinSetWindowPos(hWndCirc3, HWND_TOP, 300, 0, 150, 150, SWP_SIZE | SWP_MOVE | SWP_ZORDER);

// Перерисовываем окно приложения WinInvalidateRect(hWnd, NULL, TRUE); return 0; }

case WM_PAINT: { // Получаем пространство отображения hps = WinBeginPaint(hWnd, NULLHANDLE, &rec);

// Переключаем таблицу цветов в режим RGB GpiCreateLogColorTable(hps, LCOL_RESET, LCOLF_RGB, 0L, 0L, NULL);

// Закрашиваем область, требующую обновление WinFillRect(hps, &rec, (ULONG)sColorR << 16 | (ULONG)sColorG << 8 | (ULONG)sColorB);

// Возвращаем пространство отображения WinEndPaint(hps); return 0; }

case WM_ERASEBACKGROUND: return(MRFROMLONG(1L));

case WM_CONTROL: { // Сообщение пришло от красного регулятора if(SHORT1FROMMP(mp1) == CIRCSLD1_ID) { // Выделяем код извещения if(SHORT2FROMMP(mp1) == CSN_CHANGED) { // Устанавливаем новое значение цвета sColorR = (SHORT)mp2;

// Перерисовываем окно WinInvalidateRect(hWnd, NULL, TRUE); } }

// Сообщение от зеленого регулятора else if(SHORT1FROMMP(mp1) == CIRCSLD2_ID) { if(SHORT2FROMMP(mp1) == CSN_CHANGED) { sColorG = (SHORT)mp2; WinInvalidateRect(hWnd, NULL, TRUE); } }

// Сообщение от синего регулятора else if(SHORT1FROMMP(mp1) == CIRCSLD3_ID) { if(SHORT2FROMMP(mp1) == CSN_CHANGED) { sColorB = (SHORT)mp2; WinInvalidateRect(hWnd, NULL, TRUE); } } return 0; } default: return(WinDefWindowProc(hWnd, msg, mp1, mp2)); } }




Содержание  Назад  Вперед