Ignore:
Timestamp:
Feb 9, 2000, 9:51:20 AM (26 years ago)
Author:
jeroen
Message:

* empty log message *

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/opengl/glut/win32_winproc.c

    r2595 r2689  
    1 
     1/* $Id: win32_winproc.c,v 1.2 2000-02-09 08:46:23 jeroen Exp $ */
    22/* Copyright (c) Nate Robins, 1997. */
    33/* portions Copyright (c) Mark Kilgard, 1997, 1998. */
     
    1010#include "glutint.h"
    1111#if defined(__WIN32OS2__)
     12#include "wgl.h"
    1213#include <ctype.h>
    1314#endif
     
    5960  LPMINMAXINFO  minmax;                 /* Minimum/maximum info structure. */
    6061  GLUTwindow*   window;                 /* GLUT window associated with message. */
    61   GLUTmenu*     menu;                   /* GLUT menu associated with message. */
     62  GLUTmenu*     menu;                 /* GLUT menu associated with message.*/
    6263  int x, y, width, height, key;
    6364  int button = -1;
     65  int fSendKeyStroke=1;
    6466
    6567  switch(msg) {
     
    6971    PostQuitMessage(0);
    7072    return 0;
    71 #if 0
     73#if defined(__WIN32OS2__)
    7274  case WM_DESTROY:
    7375    /* XXX NVidia's NT OpenGL can have problems closing down
     
    8890#endif
    8991  case WM_PAINT:
     92    dprintf(("GLUT32: WM_PAINT processing...\n"));
    9093    window = __glutGetWindow(hwnd);
    9194    if (window) {
    92       BeginPaint(hwnd, &ps);            /* Must have this for some Win32 reason. */
     95#ifndef __WIN32OS2__
     96      BeginPaint(hwnd, &ps);       /* Must have this for some Win32 reason.*/
    9397      EndPaint(hwnd, &ps);
     98#endif
    9499      if (window->win == hwnd) {
    95100        __glutPostRedisplay(window, GLUT_REPAIR_WORK);
     
    211216      __glutSetWindow(window);
    212217      __glutModifierMask = 0;
    213       if (GetKeyState(VK_SHIFT) < 0)    /* < 0 = high order bit is on */
     218      if (GetKeyState(VK_SHIFT) < 0)          /* < 0 = high order bit is on*/
    214219        __glutModifierMask |= ShiftMask;
    215220      if (GetKeyState(VK_CONTROL) < 0)
     
    293298      __glutSetWindow(window);
    294299      __glutModifierMask = 0;
    295       if (GetKeyState(VK_SHIFT) < 0)    /* < 0 = high order bit is on */
     300      if (GetKeyState(VK_SHIFT) < 0)          /* < 0 = high order bit is on*/
    296301        __glutModifierMask |= ShiftMask;
    297302      if (GetKeyState(VK_CONTROL) < 0)
     
    304309      /* Specially handle any keys that match ASCII values but
    305310         do not generate Windows WM_SYSCHAR or WM_CHAR messages. */
     311
    306312      switch (wParam) {
    307313      case VK_DELETE:
    308314      handleDelete:
    309315        /* Delete is an ASCII character. */
    310         GetCursorPos(&point);
    311         ScreenToClient(window->win, &point);
    312         __glutSetWindow(window);
    313         __glutModifierMask = 0;
    314         if (GetKeyState(VK_SHIFT) < 0)  /* < 0 = high order bit is on */
    315           __glutModifierMask |= ShiftMask;
    316         if (GetKeyState(VK_CONTROL) < 0)
    317           __glutModifierMask |= ControlMask;
    318         if (GetKeyState(VK_MENU) < 0)
    319           __glutModifierMask |= Mod1Mask;
    320         window->keyboard((unsigned char) 127, point.x, point.y);
    321         __glutModifierMask = (unsigned int) ~0;
    322         return 0;
     316        dprintf(("VK_DELETE - wParam is %d\n",wParam));
     317        key=(unsigned char)127;
     318        break;
     319
     320#ifdef __WIN32OS2__
     321        /* For some reason Odin doesn't generate WM_CHARS for 'special' keys */
     322        /* at least - none that are received here. Create 'em here!!         */
     323      case VK_F1:
     324      case VK_F2:
     325      case VK_F3:
     326      case VK_F4:
     327      case VK_F5:
     328      case VK_F6:
     329      case VK_F7:
     330      case VK_F8:
     331      case VK_F9:
     332      case VK_F10:
     333      case VK_F11:
     334      case VK_F12:
     335      case VK_LEFT:
     336      case VK_UP:
     337      case VK_RIGHT:
     338      case VK_DOWN:
     339      case VK_PRIOR:
     340      case VK_NEXT:
     341      case VK_HOME:
     342      case VK_END:
     343      case VK_INSERT:
     344      case VK_ESCAPE:
     345        key=wParam;
     346        break;
     347#endif
     348
    323349      default:
    324350        /* Let the following WM_SYSCHAR or WM_CHAR message generate
    325351           the keyboard callback. */
     352        fSendKeyStroke=0;
    326353        break;
    327354      }
     355
     356      if(fSendKeyStroke)
     357        {
     358          dprintf(("Sending keystroke %d...\n",key));
     359
     360          GetCursorPos(&point);
     361          ScreenToClient(window->win, &point);
     362          __glutSetWindow(window);
     363          __glutModifierMask = 0;
     364          if (GetKeyState(VK_SHIFT) < 0)      /* < 0 = high order bit is on*/
     365            __glutModifierMask |= ShiftMask;
     366          if (GetKeyState(VK_CONTROL) < 0)
     367            __glutModifierMask |= ControlMask;
     368          if (GetKeyState(VK_MENU) < 0)
     369            __glutModifierMask |= Mod1Mask;
     370          window->keyboard(key, point.x, point.y);
     371          __glutModifierMask = (unsigned int) ~0;
     372
     373          return 0;
     374        }
    328375    }
    329376    return 0;
     
    566613
    567614  case WM_SIZE:
     615    dprintf(("GLUT32: Handling WM_SIZE..."));
    568616    window = __glutGetWindow(hwnd);
    569617    if (window) {
     
    586634        /* A reshape should be considered like posting a
    587635           repair request. */
     636        dprintf(("GLUT32: WM_SIZE processing -> GLUT_REPAIR_WORK\n"));
    588637        __glutPostRedisplay(window, GLUT_REPAIR_WORK);
    589638      }
    590639    }
     640    dprintf(("GLUT32: Handled WM_SIZE..."));
    591641    return 0;
    592642
Note: See TracChangeset for help on using the changeset viewer.