|
|
1.1 ! root 1: //==========================================================================// ! 2: // Includes // ! 3: //==========================================================================// ! 4: ! 5: #include <stdio.h> ! 6: ! 7: #include "perfmon.h" // included by all source ! 8: #include "timefrm.h" // external declarations for this file ! 9: ! 10: #include "alert.h" // for PlaybackAlert ! 11: #include "grafdata.h" // for PlaybackChart ! 12: #include "perfmops.h" // for PerfmonViewWindow ! 13: #include "playback.h" // for PlaybackIndexN ! 14: #include "report.h" // for PlaybackReport ! 15: #include "timeline.h" // for TL_INTERVAL ! 16: #include "utils.h" ! 17: #include "pmhelpid.h" // for Help IDs ! 18: ! 19: //==========================================================================// ! 20: // Local Data // ! 21: //==========================================================================// ! 22: ! 23: ! 24: ! 25: static RECT TFrameRectWindow ; ! 26: ! 27: //==========================================================================// ! 28: // Local Functions // ! 29: //==========================================================================// ! 30: ! 31: ! 32: void ClearSystemTime (SYSTEMTIME *pSystemTime) ! 33: { // ClearSystemTime ! 34: pSystemTime->wYear = 0 ; ! 35: pSystemTime->wMonth = 0 ; ! 36: pSystemTime->wDayOfWeek = 0 ; ! 37: pSystemTime->wDay = 0 ; ! 38: pSystemTime->wHour = 0 ; ! 39: pSystemTime->wMinute = 0 ; ! 40: pSystemTime->wSecond = 0 ; ! 41: pSystemTime->wMilliseconds = 0 ; ! 42: } // ClearSystemTime ! 43: ! 44: ! 45: //==========================================================================// ! 46: // Message Handlers // ! 47: //==========================================================================// ! 48: ! 49: ! 50: void static OnInitDialog (HDLG hDlg) ! 51: { // OnInitDialog ! 52: PBOOKMARK pBookmark ; ! 53: int iIndex ; ! 54: TCHAR szText [20+20+BookmarkCommentLen] ; ! 55: TCHAR szDate [20] ; ! 56: TCHAR szTime [20] ; ! 57: int iBookmarksNum ; ! 58: HWND hWndTLine ; ! 59: HWND hWndBookmarks ; ! 60: int currentTextExtent = 0 ; ! 61: int maxTextExtent = 0 ; ! 62: HDC hDC = 0 ; ! 63: HFONT hFont ; ! 64: ! 65: hWndTLine = DialogControl (hDlg, IDD_TIMEFRAMETIMELINE) ; ! 66: hWndBookmarks = DialogControl (hDlg, IDD_TIMEFRAMEBOOKMARKS) ; ! 67: SetFont (hWndBookmarks, hFontScales) ; ! 68: LBSetHorzExtent (hWndBookmarks, 0) ; ! 69: ! 70: TLineSetRange (hWndTLine, 0, PlaybackLog.iTotalTics - 1) ; ! 71: TLineSetStart (hWndTLine, PlaybackLog.StartIndexPos.iPosition) ; ! 72: TLineSetStop (hWndTLine, PlaybackLog.StopIndexPos.iPosition) ; ! 73: ! 74: iBookmarksNum = 0 ; ! 75: pBookmark = PlaybackLog.pBookmarkFirst ; ! 76: ! 77: if (pBookmark) ! 78: { ! 79: hDC = GetDC (hWndBookmarks) ; ! 80: if (hDC) ! 81: { ! 82: hFont = (HFONT)SendMessage(hWndBookmarks, WM_GETFONT, 0, 0L); ! 83: if (hFont) ! 84: SelectObject(hDC, hFont); ! 85: } ! 86: ! 87: while (pBookmark) ! 88: { ! 89: SystemTimeDateString (&(pBookmark->SystemTime), szDate) ; ! 90: SystemTimeTimeString (&(pBookmark->SystemTime), szTime) ; ! 91: TSPRINTF (szText, TEXT(" %s %s %s"), ! 92: szDate, szTime, ! 93: pBookmark->szComment) ; ! 94: iIndex = LBAdd (hWndBookmarks, szText) ; ! 95: LBSetData (hWndBookmarks, iIndex, pBookmark->iTic) ; ! 96: ! 97: // get the biggest text width ! 98: if (hDC) ! 99: { ! 100: currentTextExtent = TextWidth (hDC, szText) + xScrollWidth / 2 ; ! 101: if (currentTextExtent > maxTextExtent) ! 102: { ! 103: maxTextExtent = currentTextExtent ; ! 104: } ! 105: } ! 106: ! 107: pBookmark = pBookmark->pBookmarkNext ; ! 108: } ! 109: ! 110: LBSetSelection (hWndBookmarks, 0) ; ! 111: ! 112: iBookmarksNum = LBNumItems (hWndBookmarks) ; ! 113: } ! 114: ! 115: if (iBookmarksNum == 0) ! 116: { ! 117: DialogEnable (hDlg, IDD_TIMEFRAMEBOOKMARKS, FALSE) ; ! 118: DialogEnable (hDlg, IDD_TIMEFRAMEBOOKMARKGRP, FALSE) ; ! 119: DialogEnable (hDlg, IDD_TIMEFRAMESETSTART, FALSE) ; ! 120: DialogEnable (hDlg, IDD_TIMEFRAMESETSTOP, FALSE) ; ! 121: } ! 122: else ! 123: { ! 124: LBSetHorzExtent (hWndBookmarks, maxTextExtent) ; ! 125: } ! 126: ! 127: if (hDC) ! 128: { ! 129: ReleaseDC (hWndBookmarks, hDC) ; ! 130: } ! 131: ! 132: if (TFrameRectWindow.right == TFrameRectWindow.left) ! 133: { ! 134: // we have not initialize this data yet. ! 135: // will get init. after the first time frame window invoke ! 136: WindowCenter (hDlg) ; ! 137: } ! 138: else ! 139: { ! 140: // show it in its previous position ! 141: MoveWindow (hDlg, ! 142: TFrameRectWindow.left, ! 143: TFrameRectWindow.top, ! 144: TFrameRectWindow.right - TFrameRectWindow.left, ! 145: TFrameRectWindow.bottom - TFrameRectWindow.top, ! 146: TRUE) ; ! 147: } ! 148: ! 149: dwCurrentDlgID = HC_PM_idDlgEditTimeFrame ; ! 150: ! 151: } // OnInitDialog ! 152: ! 153: ! 154: void static OnTLineInterval (HDLG hDlg, ! 155: int iInterval, ! 156: SYSTEMTIME *pSystemTime) ! 157: { // OnTLineInterval ! 158: PLOGINDEX pIndex ; ! 159: ! 160: ! 161: pIndex = PlaybackIndexN (iInterval) ; ! 162: ! 163: if (pIndex) ! 164: *pSystemTime = pIndex->SystemTime ; ! 165: else ! 166: ClearSystemTime (pSystemTime) ; ! 167: } // OnTLineInterval ! 168: ! 169: ! 170: void static OnOK (HDLG hDlg) ! 171: { // OnOK ! 172: LOGPOSITION lp ; ! 173: int iIndex ; ! 174: HWND hWndTLine = DialogControl (hDlg, IDD_TIMEFRAMETIMELINE) ; ! 175: ! 176: iIndex = TLineStart (hWndTLine) ; ! 177: if (LogPositionN (iIndex, &lp)) ; ! 178: PlaybackLog.StartIndexPos = lp ; ! 179: ! 180: iIndex = TLineStop (hWndTLine) ; ! 181: if (LogPositionN (iIndex, &lp)) ! 182: PlaybackLog.StopIndexPos = lp ; ! 183: ! 184: ! 185: PlaybackLog.iSelectedTics = ! 186: PlaybackLog.StopIndexPos.iPosition - ! 187: PlaybackLog.StartIndexPos.iPosition + 1 ; ! 188: ! 189: PlaybackChart (hWndGraph) ; ! 190: PlaybackAlert (hWndAlert, 0) ; ! 191: PlaybackReport (hWndReport) ; ! 192: ! 193: WindowInvalidate (PerfmonViewWindow ()) ; ! 194: ! 195: GetWindowRect (hDlg, &TFrameRectWindow) ; ! 196: ! 197: dwCurrentDlgID = 0 ; ! 198: } // OnOK ! 199: ! 200: void static OnCancel (HWND hWnd) ! 201: { ! 202: HDC hGraphDC ; ! 203: PGRAPHSTRUCT pGraph ; ! 204: ! 205: pGraph = GraphData (hWndGraph) ; ! 206: hGraphDC = GetDC (hWndGraph) ; ! 207: if (!hGraphDC || !pGraph) ! 208: { ! 209: return ; ! 210: } ! 211: ! 212: TLineRedraw (hGraphDC, pGraph) ; ! 213: ! 214: GetWindowRect (hWnd, &TFrameRectWindow) ; ! 215: ! 216: dwCurrentDlgID = 0 ; ! 217: } ! 218: ! 219: ! 220: void OnSetStartStop (HWND hDlg, BOOL bSetStart) ! 221: { ! 222: int iTic ; ! 223: int iStopTic ; ! 224: int iStartTic ; ! 225: HWND hWndTLine = DialogControl (hDlg, IDD_TIMEFRAMETIMELINE) ; ! 226: HWND hWndBookmarks = DialogControl (hDlg, IDD_TIMEFRAMEBOOKMARKS) ; ! 227: ! 228: iStartTic = TLineStart (hWndTLine) ; ! 229: iStopTic = TLineStop (hWndTLine) ; ! 230: ! 231: iTic = LBData (hWndBookmarks, LBSelection (hWndBookmarks)) ; ! 232: if ((bSetStart && iStopTic <= iTic) || ! 233: (!bSetStart && iStartTic >= iTic)) ! 234: { ! 235: DlgErrorBox (hDlg, ERR_STOPBEFORESTART) ; ! 236: } ! 237: else ! 238: { ! 239: if (bSetStart) ! 240: { ! 241: TLineSetStart (hWndTLine, iTic) ; ! 242: } ! 243: else ! 244: { ! 245: TLineSetStop (hWndTLine, iTic) ; ! 246: } ! 247: WindowInvalidate (hWndTLine) ; ! 248: } ! 249: } // OnSetStartStop ! 250: ! 251: ! 252: //==========================================================================// ! 253: // Exported Functions // ! 254: //==========================================================================// ! 255: ! 256: ! 257: int FAR WINAPI TimeframeDlgProc (HWND hDlg, ! 258: unsigned iMessage, ! 259: WPARAM wParam, ! 260: LONG lParam) ! 261: { ! 262: BOOL bHandled ; ! 263: ! 264: bHandled = TRUE ; ! 265: switch (iMessage) ! 266: { ! 267: case TL_INTERVAL: ! 268: OnTLineInterval (hDlg, wParam, (SYSTEMTIME *) lParam) ; ! 269: break ; ! 270: ! 271: case WM_INITDIALOG: ! 272: OnInitDialog (hDlg) ; ! 273: return (TRUE) ; ! 274: ! 275: case WM_CLOSE: ! 276: OnCancel (hDlg) ; ! 277: EndDialog (hDlg, 0) ; ! 278: break ; ! 279: ! 280: case WM_COMMAND: ! 281: switch(wParam) ! 282: { ! 283: case IDD_OK: ! 284: SetHourglassCursor() ; ! 285: OnOK (hDlg) ; ! 286: SetArrowCursor() ; ! 287: EndDialog (hDlg, 1) ; ! 288: break ; ! 289: ! 290: case IDD_TIMEFRAMESETSTART: ! 291: case IDD_TIMEFRAMESETSTOP: ! 292: OnSetStartStop (hDlg, wParam == IDD_TIMEFRAMESETSTART) ; ! 293: break ; ! 294: ! 295: case IDD_CANCEL: ! 296: OnCancel (hDlg) ; ! 297: GetWindowRect (hDlg, &TFrameRectWindow) ; ! 298: EndDialog (hDlg, 0) ; ! 299: break ; ! 300: ! 301: case IDD_TIMEFRAMEHELP: ! 302: CallWinHelp (dwCurrentDlgID) ; ! 303: break ; ! 304: ! 305: default: ! 306: bHandled = FALSE ; ! 307: break; ! 308: } ! 309: break; ! 310: ! 311: ! 312: default: ! 313: bHandled = FALSE ; ! 314: break ; ! 315: } // switch ! 316: ! 317: return (bHandled) ; ! 318: } // TimeframeDlgProc ! 319: ! 320: ! 321: ! 322: BOOL SetTimeframe (HWND hWndParent) ! 323: { // SetTimeframe ! 324: if (DialogBox (hInstance, idDlgTimeframe, ! 325: hWndParent, (DLGPROC) TimeframeDlgProc)) ! 326: { ! 327: return (TRUE) ; ! 328: } ! 329: return (FALSE) ; ! 330: } ! 331: ! 332: ! 333:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.