Народный учебник по OpenGL

         

WM_KEYDOWN вызывается всякий раз при


                case WM_DESTROY:

                case WM_CLOSE:

                ChangeDisplaySettings(NULL, 0);

                wglMakeCurrent(hDC,NULL);

                wglDeleteContext(hRC);

                ReleaseDC(hWnd,hDC);

                PostQuitMessage(0);

                break;
WM_KEYDOWN вызывается всякий раз при нажатии клавиши. Клавиша, которая была нажата, сохраняется в переменной wParam. Итак, что же делает следующий код... Скажем, я нажал 'A'. Буква фактически – это число, которое ее представляет. Поэтому в ячейку, которая представляет 'A' заносится TRUE. Позднее, в коде, если я проверю состояние ячейки и увижу TRUE, то я знаю, что клавиша 'A' действительно в этот момент нажата.
                case WM_KEYDOWN:

                keys[wParam] = TRUE;

                break;
WM_KEYUP вызывается всякий раз, когда клавиша отпускается. Клавиша, которая отжата, также сохраняется в переменной wParam. Поэтому, когда я отпускаю клавишу 'A', это делает ячейку для клавиши 'A' равной FALSE. Когда я проверю ячейку, для того чтобы увидеть нажата ли клавиша 'A', она вернет FALSE, что означает "нет, она не нажата".
                case WM_KEYUP:

                keys[wParam] = FALSE;

                break;
И последнее, что я сделаю - обработаю изменение размеров окна. Возможно, кажется, что бесмыслено добавлять этот код, когда программа запущена в полноэкранном режиме, но без этого кода, экран OpenGL не появится. Поверьте, мне это очень важно.
Всякий раз сообщение WM_SIZE посылается Windows с двумя параметрами - новая ширина, и новая высота экрана. Эти параметры сохранены в LOWORD(lParam) и HIWORD(lParam). Поэтому вызов ReSizeGLScene изменяет размеры экрана. Это передает высоту и ширину в эту секцию кода.
                case WM_SIZE:

                ReSizeGLScene(LOWORD(lParam),HIWORD(lParam));

                break;
Затем, дадим Windows обработать все сообщения, которые мы не обрабатываем и завершим процедуру.
        default:

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







Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий