读书人

VC中使用OpenGL怎么开启方向键

发布时间: 2012-10-19 16:53:35 作者: rapoo

VC中使用OpenGL如何开启方向键
如题,先谢谢大家了!

[解决办法]
参考nene的教程

C/C++ code
int WINAPI WinMain( HINSTANCE   hInstance,              // 当前窗口实例   486.            HINSTANCE   hPrevInstance,              // 前一个窗口实例   487.            LPSTR       lpCmdLine,              // 命令行参数   488.            int     nCmdShow)               // 窗口显示状态   489.{  490.  491.    MSG msg;                                // Windowsx消息结构   492.    BOOL    done=FALSE;                         // 用来退出循环的Bool 变量   493.        // 提示用户选择运行模式   494.    if (MessageBox(NULL,"你想在全屏模式下运行么?", "设置全屏模式",MB_YESNO|MB_ICONQUESTION)==IDNO)  495.    {  496.        fullscreen=FALSE;                       // FALSE为窗口模式   497.    }  498.        // 创建OpenGL窗口   499.    if (!CreateGLWindow("shiter's OpenGL程序框架",640,480,16,fullscreen))  500.    {  501.        return 0;                           // 失败退出   502.    }  503.    while(!done)                                // 保持循环直到 done=TRUE   504.    {  505.  506.   507.    if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))           // 有消息在等待吗?   508.        {  509.    if (msg.message==WM_QUIT)               // 收到退出消息?   510.            {  511.                done=TRUE;                  // 是,则done=TRUE   512.            }  513.            else                            // 不是,处理窗口消息   514.            {  515.                TranslateMessage(&msg);             // 翻译消息   516.                DispatchMessage(&msg);              // 发送消息   517.            }  518.        }  519.        else                                // 如果没有消息   520.        {  521.                // 绘制场景。监视ESC键和来自DrawGLScene()的退出消息   522.            if (active)                     // 程序激活的么?   523.            {  524.                if (keys[VK_ESCAPE])                // ESC 按下了么?   525.                {  526.                    done=TRUE;              // ESC 发出退出信号   527.                }  528.                else                        // 不是退出的时候,刷新屏幕   529.                {  530.                    DrawGLScene();              // 绘制场景   531.                    SwapBuffers(hDC);           // 交换缓存 (双缓存)   532.  533.  534.                    if (keys['T'] && !tp)               // 是否T 键已按下并且 tp值为 FALSE   535.                    {  536.                        tp=TRUE;                // 若是,将tp设为TRUE   537.                        twinkle=!twinkle;           // 翻转 twinkle的值   538.                    }  539.                    if (!keys['T'])                 // T 键已松开了么?   540.                    {  541.                        tp=FALSE;               // 若是 ,tp为 FALSE   542.                    }  543.                    if (keys[VK_UP])                // 上方向键按下了么?   544.                    {  545.                        tilt-=0.5f;             // 屏幕向上倾斜   546.                    }  547.  548.                    if (keys[VK_DOWN])              // 下方向键按下了么?   549.                    {  550.                        tilt+=0.5f;             // 屏幕向下倾斜   551.                    }  552.      553.                    if (keys[VK_PRIOR])             // 向上翻页键按下了么   554.                    {  555.                        zoom-=0.2f;             // 缩小   556.                    }  557.  558.                    if (keys[VK_NEXT])              // 向下翻页键按下了么?   559.                    {  560.                        zoom+=0.2f;             // 放大   561.                    }  562.  563.                }  564.            }  565.  566.            if (keys[VK_F1])                    // F1键按下了么?   567.            {  568.                keys[VK_F1]=FALSE;              // 若是,使对应的Key数组中的值为 FALSE   569.                KillGLWindow();                 // 销毁当前的窗口   570.                fullscreen=!fullscreen;             // 切换 全屏 / 窗口 模式   571.                // 重建 OpenGL 窗口   572.                if (!CreateGLWindow("NeHe's OpenGL 程序框架",640,480,16,fullscreen))  573.                {  574.                    return 0;               // 如果窗口未能创建,程序退出   575.                }  576.            }  577.        }  578.    }  579.// 关闭程序   580.  581.    KillGLWindow();                             // 销毁窗口   582.    return (msg.wParam);                            // 退出程序   583.  584.} 

读书人网 >C语言

热点推荐