# // ProcessMessage < PSTRUCT 'Reply, P_PROGRAM_STATE '/State, P_MSG Msg > 
+
  select Msg->Message
  +
    case WM_BUTTON_1_UP, WM_BUTTON_2_UP
    +
      ProcessMouseMessage (State, Msg)
    ;

    case WM_CHAR
    +
      ProcessKeyboardMessage (State, Msg)
    ;

    case WM_PAINT
    +
      Presentation_space = BeginPaint (Msg->Window)
      ProcessPaintMessage (State, Msg, Presentation_space)
    ,
      Free (&Presentation_space)
    ;
  ; 
  else 
  +
    .
  ;
;
