📄 tracepage.cpp
字号:
/****************************************************************/
/* */
/* TracePage.cpp */
/* */
/* Implementation of the CTracePage class. */
/* This class is a part of the FTP Server Application */
/* */
/* Programmed by Pablo van der Meer */
/* Copyright Pablo Software Solutions 2002 */
/* http://www.pablovandermeer.nl */
/* */
/* Last updated: 10 july 2002 */
/* */
/****************************************************************/
#include "stdafx.h"
#include "BubbleServer.h"
#include "BubbleServerDlg.h"
//#include "FTPServerApp.h"
#include "TracePage.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
IMPLEMENT_DYNCREATE(CTracePage, CDialog)
CTracePage::CTracePage() : CDialog(CTracePage::IDD)
{
//{{AFX_DATA_INIT(CTracePage)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
g_ptr_net_lib_log = this;
set_log_level("登陆注销", true, RGB(155,0,0));
set_log_level("更新请求", true, RGB(0,0,130));
set_log_level("更新回复", true, RGB(0,0,255));
set_log_level("服务器错误", true, RGB(255,0,0));
set_log_level("服务器操作", true, RGB(0,155,155));
}
CTracePage::~CTracePage()
{
while(!m_LogQueue.IsEmpty())
{
CLogMsg *pLogMsg = (CLogMsg *)m_LogQueue.RemoveHead();
delete pLogMsg;
}
g_ptr_net_lib_log = NULL;
}
void CTracePage::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTracePage)
DDX_Control(pDX, IDC_TRACE, m_TraceList);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CTracePage, CDialog)
//{{AFX_MSG_MAP(CTracePage)
ON_WM_SIZE()
ON_COMMAND(ID_TRACE_CLEAR, OnTraceClear)
ON_WM_CONTEXTMENU()
//}}AFX_MSG_MAP
ON_MESSAGE(WM_ADDTRACELINE, OnAddTraceLine)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CTracePage message handlers
void CTracePage::AddTraceLine(DWORD color, LPCTSTR pstrFormat, ...)
{
CString str;
// format and write the data we were given
va_list args;
va_start(args, pstrFormat);
str.FormatV(pstrFormat, args);
try
{
// create new message
CLogMsg *pLogMsg = new CLogMsg;
GetLocalTime(&pLogMsg->m_sysTime);
pLogMsg->m_color = color;
pLogMsg->m_strText = str;
m_QueueLock.Lock();
m_LogQueue.AddTail(pLogMsg);
m_QueueLock.Unlock();
// schedule log action
PostMessage(WM_ADDTRACELINE);
}
catch(...)
{
}
}
LRESULT CTracePage::OnAddTraceLine(WPARAM, LPARAM)
{
CLogMsg *pLogMsg;
try
{
// get first message in the queue
// m_QueueLock.Lock();
pLogMsg = (CLogMsg *)m_LogQueue.RemoveHead();
// m_QueueLock.Unlock();
m_TraceList.AddString(pLogMsg->m_strText, pLogMsg->m_color);
// switch(pLogMsg->m_nLevel)
// {
// case 1:
// m_TraceList.AddString(pLogMsg->m_strText, RGB(0,130,0));
// break;
// case 2:
// m_TraceList.AddString(pLogMsg->m_strText, RGB(0,0,255));
// break;
// case 3:
// m_TraceList.AddString(pLogMsg->m_strText, RGB(255,0,0));
// break;
// default:
// m_TraceList.AddString(pLogMsg->m_strText, RGB(0,0,0));
// break;
//
// }
/* CString strDateTime;
strDateTime.Format("%02d/%02d/%02d %02d:%02d:%02d.%03d ",
pLogMsg->m_sysTime.wDay, pLogMsg->m_sysTime.wMonth, pLogMsg->m_sysTime.wYear,
pLogMsg->m_sysTime.wHour, pLogMsg->m_sysTime.wMinute, pLogMsg->m_sysTime.wSecond,
pLogMsg->m_sysTime.wMilliseconds);
switch(pLogMsg->m_nLevel)
{
case 1:
m_LogFile << error_lvl << strDateTime << pLogMsg->m_strText << endl;
break;
case 2:
m_LogFile << warning_lvl << strDateTime << pLogMsg->m_strText << endl;
break;
case 3:
default:
m_LogFile << trace_lvl << strDateTime << pLogMsg->m_strText << endl;
break;
} */
delete pLogMsg;
}
catch(...)
{
// something is wrong...
}
return TRUE;
}
void CTracePage::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
if (IsWindow(::GetDlgItem(m_hWnd, IDC_TRACE)))
{
CRect rect;
GetClientRect(rect);
// rect.DeflateRect(5,5,10,10);
m_TraceList.MoveWindow(rect);
}
}
void CTracePage::OnTraceClear()
{
m_TraceList.ResetContent();
}
void CTracePage::OnContextMenu(CWnd* pWnd, CPoint point)
{
CMenu menu;
menu.LoadMenu(MAKEINTRESOURCE(IDR_TRACE_MENU));
menu.GetSubMenu(0)->TrackPopupMenu(0, point.x, point.y, this, NULL);
}
void CTracePage::on_add_log(const char *strLog, LOG_LEVEL *pLogLevel)
{
AddTraceLine(pLogLevel->text_color, strLog);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -