www.pudn.com > warsrc.rar > logview.h
// logview.h : header file
//
enum // Log view log types
{
// default
LV_DEFAULT,
// Display styles for clients
LV_COMMAND,
LV_GET,
LV_PUT,
LV_ERROR,
LV_QUOTE,
LV_INFORM,
LV_FILEACC,
LV_CONNECT,
LV_SYSTEM,
// Standard log styles
LV_LOGF_DEBUG,
LV_LOGF_ERROR,
LV_LOGF_FILEACC,
LV_LOGF_INOUT,
LV_LOGF_SECURITY,
LV_LOGF_WARNINGS,
LV_LOGF_SYSTEM,
LV_LOGF_WINSOCK,
// Other fonts - used internally *ONLY*
LV_INTF_CMDLINE,
LV_INVALID
};
/////////////////////////////////////////////////////////////////////////////
// CLogView view
class DLL_WAR_CLIENT_ CLogBuffer;
class CLoggedLine : public CObject
{
public:
CLoggedLine(CLogBuffer *pBuf, int Mode, LPCSTR Text, int Len);
~CLoggedLine();
CLogBuffer *m_Origin;
CString m_Text;
int m_Mode;
};
class DLL_WAR_CLIENT_ CLogBuffer : public CObject
{
public:
int m_MaxLines;
int m_NumLines;
CObArray m_Lines;
int m_ScrollLines;
public:
CLogBuffer();
~CLogBuffer();
void ClearAll();
BOOL AddLine(int Mode, LPCSTR Text, int Len);
CLoggedLine *GetLine(int LineNo)
{
ASSERT(LineNo >= 0);
ASSERT(LineNo < m_NumLines);
ASSERT(LineNo < m_MaxLines);
CLoggedLine *pLB = (CLoggedLine *)m_Lines[LineNo];
ASSERT(pLB != NULL);
ASSERT(AfxIsValidAddress(pLB, sizeof(CLoggedLine)));
return pLB;
}
};
class CLogBuffer;
class DLL_WAR_CLIENT_ CLogView : public CScrollView
{
protected:
CLogView(); // protected constructor used by dynamic creation
DECLARE_DYNCREATE(CLogView)
// Attributes
public:
int IsInitialized;
CRect m_CurrentSizeDP; // Last size saved
CRect m_RealSizeDP; // Current size, after adding new lines
CSize m_ConfirmedLineWidth; // The max linewidth that si actually used
CSize m_LineLP; // Line hignt and character width in LP
CSize m_LineDP; // Line defaults in DP
CLogBuffer m_Buf;
CSize m_CmdLineHightDP;
CSize m_CmdLineHightLP;
CFont *m_Font[LV_INVALID];
COLORREF m_Color[LV_INVALID];
CWnd *m_pCommandWin; // Window to send commands to...
BOOL m_ShowCommandLine;
CString m_CmdBuf;
int m_CursorPos;
HCURSOR m_EditCursor;
CRect m_CmdRectSave;
CPoint m_CaretPos;
CStringArray m_PrevCommands;
int m_CurrentCommandIndex;
// Operations
public:
void Initialize();
void InitializeFonts(CDC *pDC);
void AddLogLine(LPCSTR Text);
void _AddLogLine(int Mode, LPCSTR Text, int Len);
void LogMultilineBuffer(int Type, LPCSTR Buffer);
CRect RecalculateClientRectDP(CDC *pDC);
int GetLineHightLP() {return m_LineLP.cy; }
int GetLineHightDP() {return m_LineDP.cy; }
int GetCharWidthLP() {return m_LineLP.cx; }
int GetCharWidthDP() {return m_LineDP.cx; }
CRect GetCmdLineRectDP();
CSize GetCmdLineSizeDP();
CRect GetViewSize();
void DrawCmdLine(CDC *pDC);
void EnableCommandWindow(BOOL Enable);
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CLogView)
public:
virtual void OnPrepareDC(CDC* pDC, CPrintInfo* pInfo = NULL);
virtual BOOL OnScroll(UINT nScrollCode, UINT nPos, BOOL bDoScroll = TRUE);
virtual void Serialize(CArchive& ar);
protected:
virtual void OnDraw(CDC* pDC); // overridden to draw this view
virtual void OnInitialUpdate(); // first time after construct
virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
virtual void OnPrint(CDC* pDC, CPrintInfo* pInfo);
virtual BOOL OnScrollBy(CSize sizeScroll, BOOL bDoScroll = TRUE);
virtual void OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint);
virtual void OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView);
//}}AFX_VIRTUAL
// Implementation
protected:
virtual ~CLogView();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
// Generated message map functions
//{{AFX_MSG(CLogView)
afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
afx_msg void OnKillFocus(CWnd* pNewWnd);
afx_msg void OnSetFocus(CWnd* pOldWnd);
afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnPaint();
afx_msg void OnClearLog();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////