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); }
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; }