keyup_test.c
上传用户:xk288cn
上传日期:2007-05-28
资源大小:4876k
文件大小:2k
源码类别:

GIS编程

开发平台:

Visual C++

  1. /* Copyright (c) Mark J. Kilgard, 1997. */
  2. /* This program is freely distributable without licensing fees 
  3.    and is provided without guarantee or warrantee expressed or 
  4.    implied. This program is -not- in the public domain. */
  5. #include <stdio.h>
  6. #include <GL/glut.h>
  7. void
  8. key(unsigned char key, int x, int y)
  9. {
  10.   printf("kDN: %c <%d> @ (%d,%d)n", key, key, x, y);
  11. }
  12. void
  13. keyup(unsigned char key, int x, int y)
  14. {
  15.   printf("kUP: %c <%d> @ (%d,%d)n", key, key, x, y);
  16. }
  17. void
  18. special(int key, int x, int y)
  19. {
  20.   printf("sDN: %d @ (%d,%d)n", key, x, y);
  21. }
  22. void
  23. specialup(int key, int x, int y)
  24. {
  25.   printf("sUP: %d @ (%d,%d)n", key, x, y);
  26. }
  27. void
  28. menu(int value)
  29. {
  30.   switch(value) {
  31.   case 1:
  32.     glutIgnoreKeyRepeat(1);
  33.     break;
  34.   case 2:
  35.     glutIgnoreKeyRepeat(0);
  36.     break;
  37.   case 3:
  38.     glutKeyboardFunc(NULL);
  39.     break;
  40.   case 4:
  41.     glutKeyboardFunc(key);
  42.     break;
  43.   case 5:
  44.     glutKeyboardUpFunc(NULL);
  45.     break;
  46.   case 6:
  47.     glutKeyboardUpFunc(keyup);
  48.     break;
  49.   case 7:
  50.     glutSpecialFunc(NULL);
  51.     break;
  52.   case 8:
  53.     glutSpecialFunc(special);
  54.     break;
  55.   case 9:
  56.     glutSpecialUpFunc(NULL);
  57.     break;
  58.   case 10:
  59.     glutSpecialUpFunc(specialup);
  60.     break;
  61.   }
  62. }
  63. void
  64. display(void)
  65. {
  66.   glClear(GL_COLOR_BUFFER_BIT);
  67.   glFlush();
  68. }
  69. int
  70. main(int argc, char **argv)
  71. {
  72.   glutInit(&argc, argv);
  73.   glutCreateWindow("keyup test");
  74.   glClearColor(0.49, 0.62, 0.75, 0.0);
  75.   glutDisplayFunc(display);
  76.   glutKeyboardFunc(key);
  77.   glutKeyboardUpFunc(keyup);
  78.   glutSpecialFunc(special);
  79.   glutSpecialUpFunc(specialup);
  80.   glutCreateMenu(menu);
  81.   glutAddMenuEntry("Ignore autorepeat", 1);
  82.   glutAddMenuEntry("Accept autorepeat", 2);
  83.   glutAddMenuEntry("Stop key", 3);
  84.   glutAddMenuEntry("Start key", 4);
  85.   glutAddMenuEntry("Stop key up", 5);
  86.   glutAddMenuEntry("Start key up", 6);
  87.   glutAddMenuEntry("Stop special", 7);
  88.   glutAddMenuEntry("Start special", 8);
  89.   glutAddMenuEntry("Stop special up", 9);
  90.   glutAddMenuEntry("Start special up", 10);
  91.   glutAttachMenu(GLUT_RIGHT_BUTTON);
  92.   glutMainLoop();
  93.   return 0;             /* ANSI C requires main to return int. */
  94. }