Реакции на сообщения Windows
Вспомните, как вы ранее вводили в различные классы реакции на сообщения Windows и повторите эти действия для класса cOGView столько раз, сколько необходимо, чтобы в нем появились стартовые заготовки функций обработки следующих сообщений:
- WM_CREATE – приложение требует создать окно вызовом CreateEx или Create;
- WM_DESTROY – окно исчезло с экрана, но не из памяти;
- WM_ERASEBKGND – фон окна должен быть стерт;
- WM_LBUTTONDOWN – нажата левая кнопка мыши;
- WM_LBUTTONUP – отпущена левая кнопка мыши;
- WM_MOUSEMOVE – курсор мыши перемещается;
- WM_RBUTTONDOWN – нажата правая кнопка мыши;
- WM_RBUTTONUP – отпущена правая кнопка мыши;
- WM_SIZE – изменился размер окна;
- WM_TIMER – истек квант времени какого-то из таймеров.
В конструктор класса вставьте код установки начальных значений переменных:
COGView::COGView() { //====== Контекст передачи пока отсутствует m_hRC = 0; //====== Начальный разворот изображения m_AngleX = 35.f; m_AngleY = 20.f; //====== Угол зрения для матрицы проекции m_AngleView = 45.f; //====== Начальный цвет фона m_BkClr = RGB(0, 0, 96); // Начальный режим заполнения внутренних точек полигона m_FillMode = GL_FILL; //====== Подготовка графика по умолчанию DefaultGraphic(); //====== Начальное смещение относительно центра сцены //====== Сдвиг назад на полуторный размер объекта m_zTrans = – 1.5f*m_fRangeX; m_xTrans = m_yTrans = 0.f; //== Начальные значения квантов смещения (для анимации) m_dx = m_dy = 0.f; //====== Мышь не захвачена m_bCaptured = false; //====== Правая кнопка не была нажата m_bRightButton = false; //====== Рисуем четырехугольниками m_bQuad = true; //====== Начальный значения параметров освещения m_LightParam[0] = 50; // X position m_LightParam[1] = 80; // Y position m_LightParam[2] = 100; // Z position m_LightParam[3] = 15; // Ambient light m_LightParam[4] = 70; // Diffuse light m_LightParam[5] = 100; // Specular light m_LightParam[6] = 100; // Ambient material m_LightParam[7] = 100; // Diffuse material m_LightParam[8] = 40; // Specular material m_LightParam[9] = 70; // Shininess material m_LightParam[10] =0; // Emission material }