home *** CD-ROM | disk | FTP | other *** search
/ Microsoft Programmer's Library 1.3 / Microsoft-Programers-Library-v1.3.iso / sampcode / msj / msjv4_6 / newwave / nwfig22.c < prev    next >
Encoding:
Text File  |  1989-11-07  |  3.6 KB  |  98 lines

  1. /********************************************************************/
  2. /*                         ActionProcessor                          */
  3. /*                                                                  */
  4. /* Handle all of the user actions - set up intCmd for Cmd Processor */
  5. /*                                                                  */
  6. /*          COPYRIGHT HEWLETT-PACKARD COMPANY 1987, 1988            */
  7. /********************************************************************/
  8.  
  9. void PASCAL  ActionProcessor (hWnd, message, wParam, lParam, intCmd,
  10.                               pRtn)
  11.     HWND          hWnd;
  12.     unsigned      message;
  13.     WORD          wParam;
  14.     LONG          lParam;
  15.     PINTCMDSTRUCT intCmd;
  16.     LONG          *pRtn;    /* the return value of the procedure */
  17. {
  18.     PAINTSTRUCT   ps ;         /* the paint structure */
  19.                                 
  20.     /* this routine actually builds a command */
  21.     switch( message )
  22.         {
  23.         /* was a paint message sent to update the screen */
  24.         case WM_PAINT:
  25.             BeginPaint   (hWnd, (LPPAINTSTRUCT)&ps);
  26.             ShapePaint(hWnd, (LPPAINTSTRUCT)&ps);
  27.             EndPaint     (hWnd, (LPPAINTSTRUCT)&ps);
  28.             break;
  29.                                                            
  30.         /* was there a menu selection */
  31.         case WM_COMMAND:     
  32.             /* was the close option chosen */
  33.             if (wParam == IDDCLOSE)
  34.                 intCmd->wCmd = API_CLOSE_WINDOW_CDCMD;
  35.             else {                      
  36.                  /* something was selected from the shape menu */
  37.                  intCmd->wCmd = NEW_SHAPE;
  38.                  intCmd->internal.ICmd = wParam;
  39.                  } 
  40.             break;                           
  41.  
  42.         /* the window being closed */
  43.         case WM_CLOSE:
  44.             intCmd->wCmd = API_CLOSE_WINDOW_CDCMD;
  45.             break;              
  46.                                      
  47.         /* selection from system menu or minimize/maximize */
  48.         case WM_SYSCOMMAND:
  49.             switch (wParam)
  50.                 {
  51.                 case SC_MINIMIZE:
  52.                     intCmd->wCmd = API_MINIMIZE_WINDOW_CDCMD;
  53.                     break;
  54.  
  55.                 case SC_MAXIMIZE:
  56.                     intCmd->wCmd = API_MAXIMIZE_WINDOW_CDCMD;
  57.                     break;
  58.                                                              
  59.                 /* request for saving previous coordinates */
  60.                 case SC_RESTORE:
  61.                     intCmd->wCmd = API_RESTORE_WINDOW_CDCMD;
  62.                     break;
  63.  
  64.                 default:                                     
  65.                     /* let windows handle it */
  66.                     *pRtn = DefWindowProc(hWnd, message, wParam,
  67.                                                             lParam);
  68.                     break;
  69.  
  70.                 }  /* End of case WM_SYSCOMMAND */
  71.              break;
  72.  
  73.         case API_INTERROGATE_MSG:
  74.  
  75.             /* The message has come via the API */
  76.             *pRtn = InterrogateFromAPI(wParam, lParam);
  77.             break;
  78.  
  79.         case  API_SET_MODE_FLAGS_MSG:
  80.              if (wParam == API_SET_MODE_ON_FLAG)
  81.                  gAPIModeFlags = gAPIModeFlags | lParam;
  82.              else
  83.                  gAPIModeFlags = gAPIModeFlags & lParam;
  84.              break;
  85.  
  86.         case WM_OMF:
  87.  
  88.             /* The message has come via the OMF */
  89.             *pRtn = MessageFromOMF(hWnd, wParam, lParam);
  90.             break;
  91.  
  92.         default:
  93.             *pRtn = DefWindowProc(hWnd, message, wParam, lParam);
  94.             break;
  95.         }
  96. }  /* end of action processor */
  97.  
  98.