Annotation of mstools/samples/sdktools/perfmon/timefrm.c, revision 1.1.1.1

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: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.