|
|
//
// CApplicationWindow.H
//
// Application Window Class
//
#ifndef _CAPPLICATIONWINDOW_H_
#define _CAPPLICATIONWINDOW_H_
#define MAX_OPEN_FILES 10
typedef enum _WARNLEVEL { WarnLevelUnknown, WarnLevelInfo, WarnLevelWarn, WarnLevelError } WARNLEVEL;
//
// Structures
//
typedef struct _LINEPOINTER { struct _LINEPOINTER *pNext; // next line
struct _LINEPOINTER *pPrev; // previous line
LPTSTR psLine; // pointer to beggining of line
ULONG uSequenceNumber; // sequence number affliation
FILETIME Time; // adjusted time
ULONG nFile; // file that this line came from
ULONG nLine; // orginal files line number
ULONG nFilterId; // which filter can filter this line
WARNLEVEL WarnLevel; // line warning level
BOOL fSyncPoint:1; // this line being used to synchronize
BOOL fFiltered:1; // TRUE if the line shouldn't be shown
} LINEPOINTER, * LPLINEPOINTER;
//
// CApplicationWindow
//
class CApplicationWindow { private: // data
HWND _hWnd; // our window handle
HMENU _hMenu; // Filter menu handle
TCHAR _szOpenFileNameFilter[ MAX_PATH ];
TEXTMETRIC _tm; // text metrics of text font
LONG _xSpace; // size of a space
LONG _xWindow; // window max X
LONG _yWindow; // window max Y
LONG _xMargin; // margin size
BOOL _fVertSBVisible:1; // is the vertical scroll bar visible?
ULONG _nFiles; // number of files open
LPTSTR _pFiles[ MAX_OPEN_FILES ]; LINEPOINTER * _pNodes[ MAX_OPEN_FILES ]; LPTSTR _pszFilenames[ MAX_OPEN_FILES ]; LINEPOINTER * _pLines; ULONG _cTotalLineCount; LINEPOINTER _LineFinder; ULONG _uFinderLength;
ULONG _uPointer; // current line
ULONG _uStartSelection; // used to highlite and copy text.
ULONG _uEndSelection; BOOL _fSelection:1; // if we are in selection mode
private: // methods
~CApplicationWindow( ); HRESULT Cleanup( BOOL fInitializing = FALSE ); LRESULT _OnVerticalScroll( WPARAM wParam, LPARAM lParam ); LRESULT _OnHorizontalScroll( WPARAM wParam, LPARAM lParam ); LRESULT _OnCommand( WPARAM wParam, LPARAM lParam ); HRESULT _PaintLine( PAINTSTRUCT * pps, LINEPOINTER *pCurrent, LONG wxStart, LONG wy, COLORREF crText, COLORREF crDark, COLORREF crNormal, COLORREF crHightlite ); LRESULT _OnPaint( WPARAM wParam, LPARAM lParam ); LRESULT _OnDestroyWindow( ); LRESULT _OnCreate( ); static LRESULT CALLBACK About( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam); HRESULT _SaveAllFiles( );
static BOOL CALLBACK _EnumSaveAllFiles( HWND hWnd, LPARAM lParam ); HRESULT _LoadFile( LPTSTR pszFilename ); BOOL _FindSequencePoint( LPTSTR * ppszSequence, ULONG * pnSequence ); HRESULT _CalculateOffset( FILETIME * pftOper1, FILETIME * pftOper2, INT * pnDir, FILETIME * pftOffset ); HRESULT _RetrieveTimeDate( LPTSTR pszCurrent, SYSTEMTIME * pst, OUT LPTSTR * ppszFinal ); BOOL _OnKeyDown( WPARAM wParam, LPARAM lParam ); HRESULT _UpdateTitle( ); LRESULT _OnCloseWindow( ); LRESULT _OnCreate( HWND hwnd, LPCREATESTRUCT pcs ); LRESULT _OnSize( LPARAM lParam ); LRESULT _OnMouseWheel( SHORT iDelta ); LRESULT _FindNext( WPARAM wParam, LPARAM lParam ); LRESULT _MarkAll( WPARAM wParam, LPARAM lParam ); HRESULT _FillClipboard( ); HRESULT _GetFilename( LPTSTR pszFilename, LPTSTR pszFilenameOut, LONG * pcch ); HRESULT _CombineFiles( ); static LRESULT CALLBACK _StatusWndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ); HRESULT _ApplyFilters( ); LRESULT _OnLeftButtonDown( WPARAM wParam, LPARAM lParam );
public: CApplicationWindow( ); static LRESULT CALLBACK WndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ); };
typedef CApplicationWindow CAPPLICATIONWINDOW; typedef CApplicationWindow * PCAPPLICATIONWINDOW, *LPCAPPLICATIONWINDOW;
#endif // _CAPPLICATIONWINDOW_H_
|