Beispiel #1
0
void Events::Poll()
{
    GamePad::Clear();
    Joystick::Clear();
    Keyboard::Clear();
    Mouse::Clear();

    while (SDL_PollEvent(&mEvent))
    {
        switch (mEvent.type)
        {
        case SDL_QUIT:
            OnQuit();
            break;
        case SDL_APP_TERMINATING:
            OnAppTerminating();
            break;
        case SDL_APP_LOWMEMORY:
            OnAppLowMemory();
            break;
        case SDL_APP_WILLENTERBACKGROUND:
            OnAppWillEnterBackground();
            break;
        case SDL_APP_DIDENTERBACKGROUND:
            OnAppDidEnterBackground();
            break;
        case SDL_APP_WILLENTERFOREGROUND:
            OnAppWillEnterForeground();
            break;
        case SDL_APP_DIDENTERFOREGROUND:
            OnAppDidEnterForeground();
            break;
        case SDL_WINDOWEVENT:
            OnWindowEvent();
            break;
        case SDL_SYSWMEVENT:
            OnSysWMEvent();
            break;
        case SDL_KEYDOWN:
            OnKeyDown(mEvent.key.keysym.sym, mEvent.key.keysym.mod, mEvent.key.repeat);
            Keyboard::SetKey(mEvent.key.keysym.sym, true);
            break;
        case SDL_KEYUP:
            OnKeyUp(mEvent.key.keysym.sym, mEvent.key.keysym.mod, mEvent.key.repeat);
            Keyboard::SetKey(mEvent.key.keysym.sym, false);
            break;
        case SDL_TEXTEDITING:
            OnTextEditing();
            break;
        case SDL_TEXTINPUT:
            OnTextInput();
            break;
        case SDL_MOUSEMOTION:
            OnMouseMotion(mEvent.motion.x, mEvent.motion.y, mEvent.motion.xrel, mEvent.motion.yrel);
            Mouse::SetPosition(mEvent.motion.x, mEvent.motion.y);
            break;
        case SDL_MOUSEBUTTONDOWN:
            switch(mEvent.button.button)
            {
            case SDL_BUTTON_LEFT:
                OnMouseLeftButtonDown(mEvent.button.x, mEvent.button.y);
                break;
            case SDL_BUTTON_RIGHT:
                OnMouseRightButtonDown(mEvent.button.x, mEvent.button.y);
                break;
            case SDL_BUTTON_MIDDLE:
                OnMouseMiddleButtonDown(mEvent.button.x, mEvent.button.y);
                break;
            case SDL_BUTTON_X1:
                OnMouseLeftButtonDown(mEvent.button.x, mEvent.button.y);
                break;
            case SDL_BUTTON_X2:
                OnMouseLeftButtonDown(mEvent.button.x, mEvent.button.y);
                break;
            }
            break;
        case SDL_MOUSEBUTTONUP:
            switch(mEvent.button.button)
            {
            case SDL_BUTTON_LEFT:
                OnMouseLeftButtonUp(mEvent.button.x, mEvent.button.y);
                break;
            case SDL_BUTTON_RIGHT:
                OnMouseRightButtonUp(mEvent.button.x, mEvent.button.y);
                break;
            case SDL_BUTTON_MIDDLE:
                OnMouseMiddleButtonUp(mEvent.button.x, mEvent.button.y);
                break;
            case SDL_BUTTON_X1:
                OnMouseLeftButtonUp(mEvent.button.x, mEvent.button.y);
                break;
            case SDL_BUTTON_X2:
                OnMouseLeftButtonUp(mEvent.button.x, mEvent.button.y);
                break;
            }
            break;
        case SDL_MOUSEWHEEL:
            OnMouseWheel(mEvent.wheel.x, mEvent.wheel.y);
            Mouse::SetScroll(mEvent.wheel.x, mEvent.wheel.y);
            break;
        case SDL_JOYAXISMOTION:
            OnJoyAxisMotion();
            break;
        case SDL_JOYBALLMOTION:
            OnJoyBallMotion();
            break;
        case SDL_JOYHATMOTION:
            OnJoyHatMotion();
            break;
        case SDL_JOYBUTTONDOWN:
            OnJoyBallButtonDown();
            break;
        case SDL_JOYBUTTONUP:
            OnJoyBallButtonUp();
            break;
        case SDL_JOYDEVICEADDED:
            OnJoyDeviceAdded();
            break;
        case SDL_JOYDEVICEREMOVED:
            OnJoyDeviceRemoved();
            break;
        case SDL_CONTROLLERAXISMOTION:
            OnControllerAxisMotion(mEvent.caxis.axis, mEvent.caxis.value, mEvent.caxis.which);
            GamePad::SetAxis(mEvent.caxis.axis, mEvent.caxis.value, mEvent.caxis.which);
            break;
        case SDL_CONTROLLERBUTTONDOWN:
            OnControllerButtonDown(mEvent.cbutton.button, mEvent.cbutton.which);
            GamePad::SetButton(mEvent.cbutton.button, true, mEvent.cbutton.which);
            break;
        case SDL_CONTROLLERBUTTONUP:
            OnControllerButtonUp(mEvent.cbutton.button, mEvent.cbutton.which);
            GamePad::SetButton(mEvent.cbutton.button, false, mEvent.cbutton.which);
            break;
        case SDL_CONTROLLERDEVICEADDED:
            OnControllerDeviceAdded(mEvent.cdevice.which);
            GamePad::Add(mEvent.cdevice.which);
            break;
        case SDL_CONTROLLERDEVICEREMOVED:
            OnControllerDeviceRemoved(mEvent.cdevice.which);
            GamePad::Remove(mEvent.cdevice.which);
            break;
        case SDL_CONTROLLERDEVICEREMAPPED:
            OnControllerDeviceRemapped(mEvent.cdevice.which);
            break;
        case SDL_FINGERDOWN:
            OnFingerDown();
            break;
        case SDL_FINGERUP:
            OnFingerUp();
            break;
        case SDL_FINGERMOTION:
            OnFingerMotion();
            break;
        case SDL_DOLLARGESTURE:
            OnDollarGesture();
            break;
        case SDL_DOLLARRECORD:
            OnDollarRecord();
            break;
        case SDL_MULTIGESTURE:
            OnMultiGesture();
            break;
        case SDL_CLIPBOARDUPDATE:
            OnClipboardUpdate();
            break;
        case SDL_DROPFILE:
            OnDropFile();
            break;
        case SDL_USEREVENT:
            OnUserEvent();
            break;
        default:
            OnUndefined();
            break;
        }
    }
}
Beispiel #2
0
LRESULT APIENTRY MainWndProc (HWND hWnd, 
                              UINT message, 
                              DWORD wParam, 
                              LONG lParam)
   {
   LONG     lRetCode = 0L ;
   BOOL     bCallDefWinProc = FALSE ;

   switch (LOWORD (message))
      {  // switch
      case WM_LBUTTONDBLCLK:
         ShowPerfmonMenu (!Options.bMenubar) ;
         if (Options.bMenubar)
            {
            PrepareMenu (GetMenu (hWnd)) ;
            }
         break ;

	   case WM_COMMAND:
	      if (PerfmonCommand (hWnd,wParam,lParam))
	         return(0);
         else
            bCallDefWinProc = TRUE ;
         break;

      case WM_MENUSELECT:
         MenuBarHit (wParam) ;
         break ;

      case WM_NCHITTEST:
        /* if we have no title/menu bar, clicking and dragging the client
         * area moves the window. To do this, return HTCAPTION.
         * Note dragging not allowed if window maximized, or if caption
         * bar is present.
         */
        wParam = DefWindowProc(hWnd, message, wParam, lParam);
        if (!Options.bMenubar && 
            (wParam == HTCLIENT) &&
            !IsZoomed (hWndMain))
           return HTCAPTION ;
        else
           return wParam ;
        break ;

      
      case WM_SHOWWINDOW:
         PrepareMenu (GetMenu (hWnd)) ;
         break ;

      case WM_SIZE:
         OnSize (hWnd, LOWORD (lParam), HIWORD (lParam)) ;
         break ;

      case WM_GETMINMAXINFO:
         {
         MINMAXINFO   *pMinMax ;

         pMinMax = (MINMAXINFO *) lParam ;
         pMinMax->ptMinTrackSize.x = MinimumSize ;
         pMinMax->ptMinTrackSize.y = MinimumSize ;
         }
         break ;

      case WM_NOTIFY:
         {
            LPTOOLTIPTEXT lpTTT = (LPTOOLTIPTEXT)lParam;

            if (lpTTT->hdr.code == TTN_NEEDTEXT) {
                LoadString (hInstance, lpTTT->hdr.idFrom, lpTTT->szText,
                    sizeof(lpTTT->szText)/sizeof(TCHAR));
                return TRUE;
            } else {
                bCallDefWinProc = FALSE ;
                break;
            }
         }

      case WM_F1DOWN:
         if (dwCurrentDlgID)
            {
            CallWinHelp (dwCurrentDlgID) ;
            }
         else if (dwCurrentMenuID)
            {
            CallWinHelp (dwCurrentMenuID) ;
            dwCurrentMenuID = 0 ;
            }
         break ;

      case WM_CREATE:
         OnCreate (hWnd) ;
         ViewChart (hWnd) ;
         PrepareMenu (GetMenu (hWnd)) ;
         break ;

      case WM_DESTROY:
         WinHelp (hWndMain, pszHelpFile, HELP_QUIT, 0) ;
         PostQuitMessage (0);
         break ;

      case WM_QUERYENDSESSION:
         // please shut it down
         return (1) ;
         break ;

      case WM_ENDSESSION:
         if (wParam == TRUE)
            {
            // close any log file before closing down
            PerfmonClose (hWnd) ;
            return (1) ;
            }
         else
            bCallDefWinProc = TRUE ;
         break ;

      case WM_CLOSE:
         PerfmonClose (hWnd) ;
         break ;

      case WM_ACTIVATE:
         {
         int   fActivate = LOWORD (wParam) ;

         bPerfmonIconic = (BOOL) HIWORD (wParam) ;
         if (bPerfmonIconic == 0 && fActivate != WA_INACTIVE)
            {
            // set focus on the Legend window
            if (iPerfmonView == IDM_VIEWCHART)
               {
               SetFocus (hWndGraphLegend) ;
               }
            else if (iPerfmonView == IDM_VIEWALERT)
               {
               SetFocus (hWndAlertLegend) ;
               }
            else if (iPerfmonView == IDM_VIEWLOG)
               {
               SetFocus (hWndLogEntries) ;
               }
            else if (iPerfmonView == IDM_VIEWREPORT)
               {
               SetFocus (hWndReport) ;
               }
            }
         }
         break ;

      case WM_SYSCOLORCHANGE:
         DeletePerfmonSystemObjects () ;
         CreatePerfmonSystemObjects () ;
         WindowInvalidate (PerfmonViewWindow()) ;
         break ;

      case WM_WININICHANGE:
         if (!lParam || strsamei((LPTSTR)lParam, szInternational))
            {
            GetDateTimeFormats () ;
            }
         break ;

      case WM_DROPFILES:
         OnDropFile (wParam) ;
         return (0) ;
         break ;

      default:
         bCallDefWinProc = TRUE ;
         break;

      }  // switch

   if (bCallDefWinProc)
      {
      lRetCode = DefWindowProc (hWnd, message, wParam, lParam) ;
      }
   return (lRetCode);
   }  // MainWndProc