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.}