MRESULT EXPENTRY ClkWndProc (HWND hwnd, ULONG usMsg, MPARAM mp1, MPARAM mp2)
{
    switch (usMsg)
    {

    case WM_CREATE:
        ClkCreate (hwnd);
        return (WinDefWindowProc (hwnd, usMsg, mp1, mp2));

    case WM_DESTROY:
        ClkDestroy (hwnd);
        return (WinDefWindowProc (hwnd, usMsg, mp1, mp2));

    case WM_TIMER:
        ClkTimer (hwnd);
        if ( (BOOL) hDateTime)
            WinSendMsg (hDateTime, WM_TIMER, mp1, mp2);
        break;

    case WM_PAINT:
        ClkPaint (hwnd);
        break;

    case WM_MINMAXFRAME:
        ClkMinmax (hwnd, (PSWP)mp1);
        break;

    case WM_SIZE:
        ClkSize (hwnd);
        return (WinDefWindowProc (hwnd, usMsg, mp1, mp2));

    case WM_COMMAND:
        ClkCommand (hwnd, mp1,mp2);
        break;

    case WM_BUTTON1DOWN:
        return WinSendMsg (hwndFrame, WM_TRACKFRAME,
                           MPFROMSHORT((USHORT)mp2 | TF_MOVE), MPVOID);

    case WM_BUTTON1DBLCLK:
        if (cp.fControlsHidden)
            ClkShowFrameControls (hwndFrame);
        else
            ClkHideFrameControls (hwndFrame);
        break;

    case WM_TRANSLATEACCEL:
        return WinSendMsg(hwndFrame, usMsg, mp1, mp2);
        break;

    case WM_SAVEAPPLICATION:
        /***********************************************************\
        *  Task Manager option to Save Desktop sends this message.
        *  Save window state (MIN/RESTORE) and position in OS2.INI
        \***********************************************************/
        SaveApplication (hwndFrame);
        break;

     case WM_INITMENU:
         InitMenu(mp1, mp2);
         break;

    case HM_QUERY_KEYS_HELP:
        return (MRESULT)PANEL_HELPKEYS;   /* return id of key help panel */
        break;

    default:
        /* let default window procedure handle it. */
        return (WinDefWindowProc (hwnd, usMsg, mp1, mp2));
    }

    return (MRFROMLONG(0));
}
Exemplo n.º 2
0
BOOL KappaCommand(HWND hWnd, unsigned message, WORD wParam, long lParam)
{
    char stCommand[RET_BUFFER_LEN];

    switch (message) {
      case IDM_NEW:
          if (in_wait_for_input)
              return FALSE;
#ifndef RUNTIME
          if (lpKALView && (*lpKALView->Terminate)())
          {
              PostMessage(hWndKappa, WM_COMMAND, IDM_NEW, 0L);
              return FALSE;
          }
#endif
          KppNewApplication(hInstKappa);

#ifdef RUNTIME
          if (!IsWindowVisible(hWnd) && !KppGetCompiledKALInit())
              ShowWindow(hWnd, SW_SHOWNORMAL);
#endif
          break;

      case IDM_NEWLOAD:
          if (in_wait_for_input)
              return FALSE;
          if (LOWORD(lParam))
              KppSetAppChanged(FALSE);
          if (KppNewApplication(hInstKappa) && lParam)
          {
              GlobalGetAtomName(HIWORD(lParam), stCommand, RET_BUFFER_LEN);
                
#ifdef RUNTIME
              {
                  BOOL bNoShow = ProcessCmdLine(stCommand, 
                                                KppIsMultiEnabled());

                  if (!IsWindowVisible(hWnd) && !bNoShow)
                      ShowWindow(hWnd, SW_SHOWNORMAL);
              }
#else
              ProcessCmdLine(stCommand, KppIsMultiEnabled());
#endif
                    
              GlobalDeleteAtom(HIWORD(lParam));
          }
          break;

      case IDM_OPEN:
          OpenApplication(hWnd);
          break;

#ifndef LIMITED
      case IDM_SAVE:
          SaveApplication(hWnd, SAVE_MODE);
          break;

      case IDM_SAVEAS:
          SaveApplicationAs(hWnd);
          break;
#endif
          
      case IDM_SETUPPRINT:
          ConfigurePrinter();
          break;

      case IDM_EXIT:
          if (in_wait_for_input)
              return FALSE;
                
#ifdef RUNTIME
          if (hWnd != KpsGetMainSessionWindow())
          {
              ATOMID idWind = KpsGetWidgetFromWindow(hWnd);
                
              if (idWind)
                  kpc_hide_window(idWind, hWnd);
              break;
          }
#endif
          /* Postpone closing down until all DDE messages have *
           * been processed.                                   */
          if (KppDDEPendingQCB())
          {
              WaitForInputCB();
              PostMessage(hWnd, WM_COMMAND, message, lParam);
              return FALSE;
          }

#ifndef RUNTIME
          if (lpKALView && (*lpKALView->Terminate)())
          {
              PostMessage(hWnd, WM_COMMAND, IDM_EXIT, 0L);
              return FALSE;
          }
#endif
          if (lParam == kEXIT_NOPROMPT)
              MarkAppAsUnmodifiedCB();
          return KappaClose(hWnd);

      case IDM_ABOUT:
          KappaAbout(hWnd);
          break;
          
#ifndef RUNTIME
      case IDM_HELP:
          KppDoWindowHelp(hWndKappa, "d_main");
          break;
#endif

      case IDM_ONLINEHELP:
      {
          HANDLE hKapHelp = GetModuleHandle("KAPHELP");
          LPHELPFN lpfnKappaHelp = 
              (LPHELPFN) GetProcAddress(hKapHelp, "KppKappaHelp");
          
          if (lpfnKappaHelp)
              (*lpfnKappaHelp)(hWndKappa, hInstKappa);
          break;
      }

#ifndef RUNTIME
      case IDM_UNDO:
      case IDM_CUT:
      case IDM_COPY:
      case IDM_PASTE:
      case IDM_CLEAR:
          EditControlCommand(hWnd, hWndComment, message, wParam, lParam);
          break;

      case IDM_RESET:
          ClearEditWindow(hWndInterpret);
          SendMessage(hWndInterpret, IDG_UPDATEINDEX, 1, 0L);
          break;

      case IDM_KTOOLS:
#ifdef EDITORS
          KappaKToolsMode(bKToolsMode != TRUE, SW_SHOWNORMAL);
#endif
          break;
#endif
        
      case IDM_BROWSER:
          KappaBrowserMode(bBrowserMode != TRUE, SW_SHOWNORMAL);
          break;

#ifndef RUNTIME
#ifdef INFERENCE
      case IDM_INFERENCE:
          KappaInferenceMode(bInferenceMode != TRUE, SW_SHOWNORMAL);
          break;

      case IDM_RULEREL:
          KappaRuleRelMode(!bRuleRelMode, SW_SHOWNORMAL);
          break;

      case IDM_TRACE:
          KappaTraceMode(bTraceMode != TRUE, SW_SHOWNORMAL);
          break;
#endif

      case IDM_EDITORS:
          AllEditorWnds();
          break;

      case IDM_KAL:
          KappaInterpMode(!bInterpMode, SW_SHOWNORMAL);
          break;

      case IDM_FINDER:
          KappaFinderMode(!bFinderMode, SW_SHOWNORMAL);
          break;

      case IDM_KALVIEW:
          if (lpKALView)
              (*lpKALView->KALView)(!lpKALView->bKALViewMode,
                                    SW_SHOWNORMAL, 
                                    hWndKappa, hInstKappa, kalviewIcon);
          break;

      case IDM_SESSION:
          KpsAllSessionWnd();
          break;
          
      case IDM_COMMENT:
          bCommentShown = !bCommentShown;
          ShowComment(hWnd, bCommentShown);
          break;
#endif
          
      case IDM_ENTERDEBUGGER:
          DebugBreak();
          break;

      default:
          break;
    }

    return TRUE;
}