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_PAINT: ClkPaint (hwnd); break; case WM_SIZE: ClkSize (hwnd); return (WinDefWindowProc (hwnd, usMsg, mp1, mp2)); default: /* let default window procedure handle it. */ return (WinDefWindowProc (hwnd, usMsg, mp1, mp2)); } return (MRFROMLONG(0)); }
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)); }
/****************************************************************\ * *-------------------------------------------------------------- * * Name:ClkCommand() * * Purpose:Handle WM_COMMAND events. * * * * Usage: * * Method: * - * * - * - * * - * - * * Returns: * VOID * \****************************************************************/ VOID ClkCommand ( HWND hwnd , MPARAM mp1, MPARAM mp2 ) { DATETIME dtNew ; switch ( SHORT1FROMMP ( mp1 ) ) { case IDM_TICKS : WinDlgBox ( HWND_DESKTOP , hwndFrame , ClkTicksDlgProc , NULLHANDLE , IDD_TICKS , (PVOID )NULL ) ; break; case IDM_EXIT: /* *post the event semaphore *for our alarm thread */ fEndThread = TRUE; DosPostEventSem(TimerResources.hTimerDev); WinPostMsg(hwnd, WM_QUIT,MPVOID, MPVOID); break; case IDM_COLORS : WinDlgBox ( HWND_DESKTOP , hwndFrame ,ClkColorsDlgProc , NULLHANDLE , IDD_COLORS , NULL ) ; SetRGBColors(); ClkSize(hwnd); break ; case IDM_TOGGLECONTROLS : if (cp.fControlsHidden) { ClkShowFrameControls( hwndFrame ); } else { ClkHideFrameControls ( hwndFrame ) ; } break ; case IDM_DATETIME: if (hDateTime == NULLHANDLE) { WinDlgBox(HWND_DESKTOP,hwndFrame,TimeDlgProc, NULLHANDLE,IDD_TIME ,NULL); dt.minutes += 2; /*Fool the ClkTimer proc. It will now think it have to redraw*/ } else { WinSetFocus (HWND_DESKTOP, hDateTime); } break; case IDM_ALARM: if (hAlarmTime == (HWND)NULL) { WinDlgBox(HWND_DESKTOP,hwndFrame,AlarmDlgProc, NULLHANDLE,IDD_ALARM ,NULL); } else { WinSetFocus(HWND_DESKTOP,hAlarmTime); } break; case IDM_SECONDHAND: cp.usDispMode = ((cp.usDispMode & DM_SECONDHAND) ? (cp.usDispMode & (~DM_SECONDHAND)) : (cp.usDispMode | DM_SECONDHAND)); GpiSetMix(hps, FM_INVERT); /* * Depending on the current mode draw or remove the second hand. */ if (cp.usDispMode & DM_SECONDHAND) { DosGetDateTime(&dtNew); ClkDrawHand(hps, HT_SECOND, dtNew.seconds); dt.seconds = dtNew.seconds; } else { ClkDrawHand(hps, HT_SECOND, dt.seconds); } WinSendMsg( hwndMenu, MM_SETITEMATTR, MPFROM2SHORT( IDM_SECONDHAND, TRUE), MPFROM2SHORT( MIA_CHECKED, ( (cp.usDispMode & DM_SECONDHAND)? MIA_CHECKED : ~MIA_CHECKED) ) ); break; case IDM_TIME: cp.usDispMode = ((cp.usDispMode & DM_TIME) ? (cp.usDispMode & (~DM_TIME)) : (cp.usDispMode | DM_TIME)); WinSendMsg(hwndMenu, MM_SETITEMATTR, MPFROM2SHORT(IDM_TIME, TRUE), MPFROM2SHORT(MIA_CHECKED, ((cp.usDispMode & DM_TIME) ? MIA_CHECKED : ~MIA_CHECKED))); WinSendMsg( hwndMenu, MM_SETITEMATTR, MPFROM2SHORT( IDM_DATE, TRUE), MPFROM2SHORT( MIA_DISABLED, ( (!(cp.usDispMode & DM_TIME)) ? MIA_DISABLED : ~MIA_DISABLED) ) ); ClkSize(hwnd); WinInvalidateRect(hwnd, NULL, TRUE); break; case IDM_DATE: cp.usDispMode = ((cp.usDispMode & DM_DATE) ? (cp.usDispMode & (~DM_DATE)) : (cp.usDispMode | DM_DATE)); WinSendMsg( hwndMenu, MM_SETITEMATTR, MPFROM2SHORT( IDM_DATE, TRUE), MPFROM2SHORT( MIA_CHECKED, ( (cp.usDispMode & DM_DATE)? MIA_CHECKED : ~MIA_CHECKED) ) ); WinSendMsg( hwndMenu, MM_SETITEMATTR, MPFROM2SHORT( IDM_TIME, TRUE), MPFROM2SHORT( MIA_DISABLED, ( ((!(cp.usDispMode & DM_DATE)) || (cp.usDispMode & DM_ANALOG))? MIA_DISABLED : ~MIA_DISABLED) ) ); ClkSize(hwnd); WinInvalidateRect(hwnd,(PRECTL)NULL,TRUE); break; case IDM_DIGITAL: cp.usDispMode |= DM_DIGITAL; cp.usDispMode &= (~DM_ANALOG); WinSendMsg( hwndMenu, MM_SETITEMATTR, MPFROM2SHORT( IDM_DIGITAL, TRUE), MPFROM2SHORT( MIA_CHECKED, MIA_CHECKED)); WinSendMsg( hwndMenu, MM_SETITEMATTR, MPFROM2SHORT( IDM_ANALOG , TRUE), MPFROM2SHORT( MIA_CHECKED, ~MIA_CHECKED)); WinSendMsg( hwndMenu, MM_SETITEMATTR, MPFROM2SHORT( IDM_SECONDHAND, TRUE), MPFROM2SHORT( MIA_DISABLED, MIA_DISABLED)); WinSendMsg( hwndMenu, MM_SETITEMATTR, MPFROM2SHORT( IDM_TICKS, TRUE), MPFROM2SHORT( MIA_DISABLED, MIA_DISABLED)); WinSendMsg( hwndMenu, MM_SETITEMATTR, MPFROM2SHORT( IDM_TIME, TRUE), MPFROM2SHORT( MIA_DISABLED, ( ((!(cp.usDispMode & DM_DATE)) || (cp.usDispMode & DM_ANALOG))? MIA_DISABLED : ~MIA_DISABLED) ) ); WinInvalidateRect(hwnd,(PRECTL)NULL,TRUE); break; case IDM_ANALOG : cp.usDispMode |= DM_ANALOG; cp.usDispMode &= (~DM_DIGITAL); WinSendMsg( hwndMenu, MM_SETITEMATTR, MPFROM2SHORT( IDM_ANALOG, TRUE), MPFROM2SHORT( MIA_CHECKED, MIA_CHECKED)); WinSendMsg( hwndMenu, MM_SETITEMATTR, MPFROM2SHORT( IDM_DIGITAL, TRUE), MPFROM2SHORT( MIA_CHECKED, ~MIA_CHECKED)); WinSendMsg( hwndMenu, MM_SETITEMATTR, MPFROM2SHORT( IDM_TIME, TRUE), MPFROM2SHORT( MIA_DISABLED, MIA_DISABLED)); WinSendMsg( hwndMenu, MM_SETITEMATTR, MPFROM2SHORT( IDM_DATE, TRUE), MPFROM2SHORT( MIA_DISABLED, ~MIA_DISABLED)); WinSendMsg( hwndMenu, MM_SETITEMATTR, MPFROM2SHORT( IDM_SECONDHAND, TRUE), MPFROM2SHORT( MIA_DISABLED, ~MIA_DISABLED)); WinSendMsg( hwndMenu, MM_SETITEMATTR, MPFROM2SHORT( IDM_TICKS, TRUE), MPFROM2SHORT( MIA_DISABLED, ~MIA_DISABLED)); cp.usDispMode |= DM_TIME; WinSendMsg( hwndMenu, MM_SETITEMATTR, MPFROM2SHORT( IDM_TIME, TRUE), MPFROM2SHORT( MIA_CHECKED, MIA_CHECKED)); WinInvalidateRect(hwnd,(PRECTL)NULL,TRUE); break; case IDM_HELPHELPFORHELP: HelpHelpForHelp(mp2); break; case IDM_HELPEXTENDED: HelpExtended(mp2); break; case IDM_HELPKEYS: HelpKeys(mp2); break; case IDM_HELPINDEX: HelpIndex(mp2); break; case IDM_HELPTUTORIAL: HelpTutorial(mp2); break; case IDM_HELPABOUT: HelpAbout(mp2); break; case IDM_ALARM_EXPIRED: WinMessageBox(HWND_DESKTOP, hwndFrame, (PSZ)"Alarm Expired", (PSZ)"The Bells Are Ringing", 0, MB_OK); break; } }