//+--------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1992 - 1995 // // File: statusdialog.h // // Contents: Contains the CStatusDialog class // //---------------------------------------------------------------------------- #ifndef STATUSDIALOG_H #define STATUSDIALOG_H #include "Resizer.h" #define MAX_STATUS_MESSAGES 300 class CMTScript; class CCustomListBox { public: DECLARE_MEMCLEAR_NEW_DELETE(); CCustomListBox(); ~CCustomListBox(); void Refresh() const { if (_hwnd) InvalidateRect(_hwnd, 0, 0); } // Add another string void AppendString(const TCHAR *sz); // Change or add a string at a given position. void SetString(int nItem, const TCHAR *sz); // Shorten the list of strings. void SetEnd(int nItems); // Clear the contents of the listbox void ResetContent(); // Handle windows messages for this control. void Init(HWND dlg, UINT idCtrl); void Destroy() { _hwnd = 0; } void DrawItem(DRAWITEMSTRUCT *pdis) ; void MeasureItem(MEASUREITEMSTRUCT *pmis); const TCHAR *GetString(int nItem); LRESULT SendMessage(UINT Msg, WPARAM wParam, LPARAM lParam) { return ::SendMessage(_hwnd, Msg, wParam, lParam); } private: HWND _hwnd; // The handle to this list CPtrAry _Messages; int _nAllocatedMessageLength; int _nExtent; // the width of the listbox }; class CStatusDialog { public: DECLARE_MEMCLEAR_NEW_DELETE(); CStatusDialog(HWND parent, CMTScript *pMTScript); ~CStatusDialog(); bool Show(); BOOL IsDialogMessage(MSG *msg); void OUTPUTDEBUGSTRING(LPWSTR pszMsg); void Refresh(); void Pause(); void Restart(); private: HWND _parent; // Parent window HWND _hwnd; // me WINDOWPLACEMENT _WindowPlacement; // my current size & position BOOL _fMaximized; RECT _rect; // my current size & position BOOL _fStatusOpen; // Used for registry IO BOOL _fLogToFile; // if logging to a file is enabled CStr _cstrLogFileName; // The name of the log file BOOL _fPaused; // Used by Pause/Restart CMTScript *_pMTScript; // Used to retrieve status info TCHAR _achLogFileName[MAX_PATH]; bool _fCreatedLogFileName; // Have we created the filename for the logfile yet? bool _fAddedHeaderToFile; // Have we put a timestamp line into the logfile yet? CCustomListBox _CScriptListBox; CCustomListBox _CProcessListBox; CCustomListBox _CSignalListBox; CCustomListBox _COutputListBox; POINT _InitialSize; CResizer _Resizer; // message handlers void InitDialog(); void Destroy(); void Resize(int width, int height); void GetMinMaxInfo(MINMAXINFO *mmi); CCustomListBox *CtrlIDToListBox(UINT CtrlID); HRESULT UpdateOptionSettings(BOOL fSave); static BOOL CALLBACK DlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); void PopulateScripts(); void PopulateSignals(); void PopulateProcesses(); void ClearOutput(); void ToggleSignal(); void UpdateLogging(); }; #endif