Esempio n. 1
0
static MRESULT EXPENTRY PSListProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
{
   PPRINTSETUP pPrintSetup = WinQueryWindowPtr(hwnd, QWL_USER);
   HWND hwndListbox;
   int i, index;
   char *psz;
   PPRQINFO3 pqi;

   switch(msg)
   {
      case WM_INITDLG:
         pPrintSetup = (PPRINTSETUP) mp2;
         WinSetWindowPtr(hwnd, QWL_USER, pPrintSetup);

         // fill listbox with print queues
         hwndListbox = WinWindowFromID( hwnd, IDD_PS_LIST+2 );

         for( i = 0; i < pPrintSetup->cQueues; i++ )
         {
           // Display printer comment if possible, else use queue name for display.
           psz = *pPrintSetup->pQueueInfo[i].pszComment ? pPrintSetup->pQueueInfo[i].pszComment : pPrintSetup->pQueueInfo[i].pszName;

           index = (LONG) WinSendMsg( hwndListbox, LM_INSERTITEM, (MPARAM)LIT_END, (MPARAM)psz );

           if( 0 == strcmp( pPrintSetup->pQueueInfo[i].pszName, pPrintSetup->szPreferredQueue ))
           {
             // Hilight preferred queue.
             WinSendMsg( hwndListbox, LM_SELECTITEM, (MPARAM)index, (MPARAM)TRUE );
           }
         }
         if (pPrintSetup->cQueues)
            WinEnableControl(hwnd, IDD_PS_LIST+3, TRUE);
         break;

      case WM_COMMAND:
         switch(SHORT1FROMMP(mp1))
         {
            case IDD_PS_LIST+3:
               hwndListbox = WinWindowFromID( hwnd, IDD_PS_LIST+2 );
               ConfigurePrinter(hwndListbox, pPrintSetup);
               return (MRESULT) FALSE;

            default:
               return (MRESULT) FALSE;
         }

      case WM_CONTROL:
         if (SHORT1FROMMP(mp1) == IDD_PS_LIST+2 &&
             SHORT2FROMMP(mp1) == LN_ENTER)
            ConfigurePrinter((HWND) mp2, pPrintSetup);
         break;

      case WM_DESTROY:
         hwndListbox = WinWindowFromID( hwnd, IDD_PS_LIST+2 );

         index = (LONG) WinSendMsg( hwndListbox, LM_QUERYSELECTION, (MPARAM)LIT_FIRST, 0 );
         if (index != LIT_NONE)
         {
            pqi = &pPrintSetup->pQueueInfo[ index ];

            if (pPrintSetup->pDriverData)
               free(pPrintSetup->pDriverData);
            pPrintSetup->pDriverData = malloc(pqi->pDriverData->cb);
            memcpy(pPrintSetup->pDriverData, pqi->pDriverData, pqi->pDriverData->cb);

            // New preferred queue. Modify the one in the PRINTERSETUP structure.
            strcpy( pPrintSetup->szPreferredQueue, pqi->pszName );
            pPrintSetup->bDirty = TRUE;
         }
         break;

      default:
         break;
   }
   return WinDefDlgProc(hwnd, msg, mp1, mp2);
}
Esempio 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;
}