00001 #pragma once
00002
00003 #include <afxmt.h>
00004
00005 #include "ClassBox.h"
00006 #include "LogRingBuffer.h"
00007 #include "LogWndView.h"
00008
00009
00010 #define MAXBUFFERLINE 5000
00011
00012
00013
00014 namespace jbxwl {
00015
00016 using namespace jbxl;
00017
00018
00019 class CLogWndView;
00020 class CLogWndFrame;
00021
00022
00023 class CLogWndDoc : public CDocument, public CVTextDocument
00024 {
00025 protected:
00026 CLogWndDoc();
00027 CLogWndDoc(int bufsz, BOOL binhex=TRUE);
00028
00029 DECLARE_DYNCREATE(CLogWndDoc)
00030
00031 public:
00032 virtual BOOL OnNewDocument();
00033 virtual void Serialize(CArchive& ar);
00034
00035 CLogWndFrame* pFrame;
00036 CLogWndView* pView;
00037
00038 CString Title;
00039 BOOL binHexMode;
00040
00041 protected:
00042
00043
00044 public:
00045 virtual void lprintBuffer(Buffer buf, int input=LOG_RB_MESG);
00046 virtual void lprintString(char* str, int input=LOG_RB_MESG);
00047 virtual void lprintFormat(char* fmt, ...);
00048 virtual void lfprintFormat(int input, char* fmt, ...);
00049
00050 virtual void printBuffer(Buffer buf, int input=LOG_RB_MESG);
00051 virtual void printString(char* str, int input=LOG_RB_MESG);
00052 virtual void printFormat(char* fmt, ...);
00053 virtual void fprintFormat(int input, char* fmt, ...);
00054
00055 virtual void lock(void) { m_locked = TRUE; if (pView!=NULL) pView->lock();}
00056 virtual void unlock(void) { m_locked = FALSE; if (pView!=NULL) pView->unlock();}
00057
00058 public:
00059 virtual ~CLogWndDoc();
00060
00061 #ifdef _DEBUG
00062 virtual void AssertValid() const;
00063 virtual void Dump(CDumpContext& dc) const;
00064 #endif
00065
00066 protected:
00067 DECLARE_MESSAGE_MAP()
00068
00069
00070 public:
00071 CString save_fname;
00072 CLogRingBuffer* ringBuffer;
00073 CCriticalSection criticalKey;
00074
00075 public:
00076 void free(void);
00077 void clear(void);
00078 int writeLogFile(void);
00079 CString easyGetSaveFileName(LPCTSTR title, HWND hWnd);
00080
00081 void DeleteContents(void);
00082 CLogWndView* GetView(void);
00083 };
00084
00085
00086 }