home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / sdktools / winnt / perfmon / rptoptns.c < prev    next >
Text File  |  1994-10-13  |  5KB  |  162 lines

  1.  
  2. #include "perfmon.h"
  3.  
  4. #include "report.h"     // for ReportData
  5. #include "utils.h"
  6. #include "playback.h"   // for PlayingBackLog
  7. #include "pmhelpid.h"   // Help IDs
  8.  
  9. extern BOOL LocalManualRefresh ;
  10. static DWORD iIntervalMSecs ;
  11.  
  12.  
  13. void static OnInitDialog (HWND hDlg, PREPORT pReport)
  14.    {
  15.    int            i ;
  16.  
  17.    for (i = 0 ;
  18.         i < NumIntervals ;
  19.         i++)
  20.       CBAddInt (DialogControl (hDlg, IDD_REPORTOPTIONSINTERVAL), 
  21.                 aiIntervals [i]) ;
  22.  
  23.    DialogSetInterval (hDlg, IDD_REPORTOPTIONSINTERVAL,
  24.       pReport->iIntervalMSecs) ;
  25.  
  26.    LocalManualRefresh = pReport->bManualRefresh ;
  27.  
  28.    if (LocalManualRefresh && !PlayingBackLog())
  29.       {
  30.       DialogEnable (hDlg, IDD_REPORTOPTIONSINTERVAL, FALSE) ;
  31.       DialogEnable (hDlg, IDD_REPORTOPTIONSINTERVALTEXT, FALSE) ;
  32.       }
  33.  
  34.    CheckRadioButton(hDlg,
  35.       IDD_REPORTOPTIONSMANUALREFRESH,
  36.       IDD_REPORTOPTIONSPERIODIC,
  37.       LocalManualRefresh ? IDD_REPORTOPTIONSMANUALREFRESH :
  38.       IDD_REPORTOPTIONSPERIODIC) ;
  39.  
  40.    WindowCenter (hDlg) ;
  41.  
  42.    }
  43.  
  44.  
  45. int FAR WINAPI ReportOptionsDlgProc (HWND hDlg, 
  46.                                      unsigned iMessage, 
  47.                                      WPARAM wParam, 
  48.                                      LONG lParam)
  49.    {
  50.    BOOL           bHandled ;
  51.  
  52.    bHandled = TRUE ;
  53.    switch (iMessage)
  54.       {
  55.       case WM_INITDIALOG:
  56.          dwCurrentDlgID = HC_PM_idDlgOptionReport ;
  57.          OnInitDialog (hDlg, (PREPORT) lParam) ;
  58.          return  (TRUE) ;
  59.  
  60.       case WM_CLOSE:
  61.          dwCurrentDlgID = 0 ;
  62.          EndDialog (hDlg, 0) ;
  63.          break ;
  64.  
  65.       case WM_COMMAND:
  66.          switch(wParam)
  67.             {
  68.             case IDD_OK:
  69.                {
  70.                FLOAT    eIntervalMSec ;
  71.  
  72.                eIntervalMSec = DialogFloat (hDlg, IDD_REPORTOPTIONSINTERVAL, NULL) ;
  73.  
  74.                if (eIntervalMSec > MAX_INTERVALSEC ||
  75.                    eIntervalMSec < MIN_INTERVALSEC)
  76.                   {
  77.                   DlgErrorBox (hDlg, ERR_BADTIMEINTERVAL) ;
  78.                   SetFocus (DialogControl (hDlg, IDD_REPORTOPTIONSINTERVAL)) ;
  79.                   EditSetTextEndPos (hDlg, IDD_REPORTOPTIONSINTERVAL) ;
  80.                   return (FALSE) ;
  81.                   break ;
  82.                   }
  83.                eIntervalMSec = eIntervalMSec * (FLOAT) 1000.0 +
  84.                   (FLOAT) 0.5 ;
  85.  
  86.                iIntervalMSecs = (DWORD) (eIntervalMSec);
  87.                dwCurrentDlgID = 0 ;
  88.                EndDialog (hDlg, 1) ;
  89.                }
  90.                break ;
  91.  
  92.             case IDD_CANCEL:
  93.                dwCurrentDlgID = 0 ;
  94.                EndDialog (hDlg, 0) ;
  95.                break ;
  96.  
  97.             case IDD_REPORTOPTIONSPERIODIC :
  98.             case IDD_REPORTOPTIONSMANUALREFRESH :
  99.                
  100.                // check if the Manual refresh is currently checked.
  101.                // Then toggle the ManualRefresh button
  102.                LocalManualRefresh =
  103.                   (wParam == IDD_REPORTOPTIONSMANUALREFRESH) ;
  104.  
  105.                CheckRadioButton(hDlg,
  106.                   IDD_REPORTOPTIONSMANUALREFRESH,
  107.                   IDD_REPORTOPTIONSPERIODIC,
  108.                   LocalManualRefresh ? IDD_REPORTOPTIONSMANUALREFRESH :
  109.                   IDD_REPORTOPTIONSPERIODIC ) ;
  110.                   
  111.                DialogEnable (hDlg, IDD_REPORTOPTIONSINTERVAL, !LocalManualRefresh) ;
  112.                DialogEnable (hDlg, IDD_REPORTOPTIONSINTERVALTEXT, !LocalManualRefresh) ;
  113.                break ;
  114.  
  115.             case IDD_DISPLAYHELP:
  116.                CallWinHelp (dwCurrentDlgID) ;
  117.                break ;
  118.  
  119.             default:
  120.                bHandled = FALSE ;
  121.                break;
  122.             }
  123.          break;
  124.  
  125.  
  126.       default:
  127.             bHandled = FALSE ;
  128.          break ;            
  129.       }  // switch
  130.  
  131.    return (bHandled) ;
  132.    }  // ReportOptionsDlgProc
  133.  
  134.  
  135.  
  136.  
  137. BOOL DisplayReportOptions (HWND hWndParent,
  138.                            HWND hWndReport)
  139.    {  // DisplayReportOptions
  140.    PREPORT        pReport ;
  141.  
  142.    pReport = ReportData (hWndParent) ;
  143.  
  144.    if (DialogBoxParam (hInstance, idDlgReportOptions, 
  145.                        hWndParent, (DLGPROC) ReportOptionsDlgProc, 
  146.                        (LPARAM) pReport))
  147.       {  // if
  148.       pReport->iIntervalMSecs = iIntervalMSecs ;
  149.       if (LocalManualRefresh != pReport->bManualRefresh)
  150.          {
  151.          ToggleReportRefresh (hWndReport) ;
  152.          }
  153.       else
  154.          {
  155.          SetReportTimer (pReport) ;
  156.          }
  157.       }  // if
  158.  
  159.    return (TRUE) ;
  160.    }  // DisplayReportOptions
  161. 
  162.