/******************************************************************************* * * (C) COPYRIGHT MICROSOFT CORPORATION, 1998 * * TITLE: WIADBGUI.H * * VERSION: 1.0 * * AUTHOR: ShaunIv * * DATE: 5/11/1998 * * DESCRIPTION: Private interfaces for the debug window * *******************************************************************************/ #ifndef ___WIADBGUI_H_INCLUDED #define ___WIADBGUI_H_INCLUDED #include #include "wiadebug.h" #include "simreg.h" #define DEBUGWINDOW_CLASSNAMEA "WiaDebugWindow" #define DEBUGWINDOW_CLASSNAMEW L"WiaDebugWindow" #ifdef UNICODE #define DEBUGWINDOW_CLASSNAME DEBUGWINDOW_CLASSNAMEW #else #define DEBUGWINDOW_CLASSNAME DEBUGWINDOW_CLASSNAMEA #endif #define DWM_ADDSTRING (WM_USER+1) class CDebugWindowStringData { public: COLORREF m_crBackground; COLORREF m_crForeground; LPTSTR m_pszString; private: // No implementation CDebugWindowStringData(void); CDebugWindowStringData( const CDebugWindowStringData & ); CDebugWindowStringData &operator=( const CDebugWindowStringData & ); private: CDebugWindowStringData( LPCTSTR pszString, COLORREF crBackground, COLORREF crForeground ) : m_crBackground( crBackground == DEFAULT_DEBUG_COLOR ? GetSysColor(COLOR_WINDOW) : crBackground ), m_crForeground( crForeground == DEFAULT_DEBUG_COLOR ? GetSysColor(COLOR_WINDOWTEXT) : crForeground ), m_pszString(NULL) { if (m_pszString = new TCHAR[pszString ? lstrlen(pszString)+1 : 1]) { lstrcpy( m_pszString, pszString ); // Get rid of any trailing newlines for (int i=lstrlen(m_pszString);i>0;i--) { if (m_pszString[i-1] == TEXT('\n')) m_pszString[i-1] = TEXT('\0'); else break; } } } public: static CDebugWindowStringData *Allocate( LPCTSTR pszString, COLORREF crBackground, COLORREF crForeground ) { return new CDebugWindowStringData(pszString,crBackground,crForeground); } LPTSTR String(void) const { return m_pszString; } COLORREF BackgroundColor(void) const { return m_crBackground; } COLORREF ForegroundColor(void) const { return m_crForeground; } ~CDebugWindowStringData(void) { if (m_pszString) delete[] m_pszString; } }; class CWiaDebugWindow { private: // No implementation CWiaDebugWindow(void); CWiaDebugWindow( const CWiaDebugWindow & ); CWiaDebugWindow &operator=( const CWiaDebugWindow & ); private: // Per instance data HWND m_hWnd; CGlobalDebugState m_DebugData; HANDLE m_hDebugUiMutex; private: // Sole constructor explicit CWiaDebugWindow( HWND hWnd ); // Destructor ~CWiaDebugWindow(void); private: // Message handlers LRESULT OnCreate( WPARAM, LPARAM ); LRESULT OnDestroy( WPARAM, LPARAM ); LRESULT OnSize( WPARAM, LPARAM ); LRESULT OnMeasureItem( WPARAM, LPARAM ); LRESULT OnDrawItem( WPARAM, LPARAM ); LRESULT OnDeleteItem( WPARAM, LPARAM ); LRESULT OnSetFocus( WPARAM, LPARAM ); LRESULT OnAddString( WPARAM, LPARAM ); LRESULT OnClose( WPARAM, LPARAM ); LRESULT OnCommand( WPARAM, LPARAM ); LRESULT OnCopyData( WPARAM, LPARAM ); void OnCopy( WPARAM, LPARAM ); void OnCut( WPARAM, LPARAM ); void OnDelete( WPARAM, LPARAM ); void OnSelectAll( WPARAM, LPARAM ); void OnQuit( WPARAM, LPARAM ); void OnFlags( WPARAM, LPARAM ); private: CDebugWindowStringData *GetStringData( int nIndex ); public: // Window Proc static LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM ); // Miscellaneous static BOOL Register( HINSTANCE hInstance ); }; #endif // !defined(___WIADBGUI_H_INCLUDED)