www.pudn.com > 完整的FTP客户端ftpwanderersrc.zip > TraceView.cpp
/****************************************************************/
/* */
/* TraceView.cpp */
/* */
/* Implementation of the CTraceView class. */
/* */
/* Programmed by Pablo van der Meer */
/* Copyright Pablo Software Solutions 2002 */
/* http://www.pablovandermeer.nl */
/* */
/* Last updated: 15 may 2002 */
/* */
/****************************************************************/
#include "stdafx.h"
#include "ftpwanderer.h"
#include "TraceView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define IDC_LIST1 280369
IMPLEMENT_DYNCREATE(CTraceView, CView)
CTraceView::CTraceView()
{
}
CTraceView::~CTraceView()
{
}
BEGIN_MESSAGE_MAP(CTraceView, CView)
//{{AFX_MSG_MAP(CTraceView)
ON_WM_CREATE()
ON_WM_SIZE()
ON_WM_CTLCOLOR()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
void CTraceView::OnInitialUpdate()
{
CView::OnInitialUpdate();
}
int CTraceView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
// Create the style
DWORD dwStyle = WS_CHILD | WS_VISIBLE | LBS_NOINTEGRALHEIGHT |
LBS_OWNERDRAWVARIABLE | LBS_HASSTRINGS | WS_VSCROLL | WS_HSCROLL;
// Create the list control.
BOOL bResult = m_ListBox.Create(dwStyle, CRect(0,0,0,0), this, IDC_LIST1);
if (bResult)
{
// change default font to something nicer
HFONT hFont = (HFONT)::GetStockObject(ANSI_VAR_FONT);
m_ListBox.SendMessage(WM_SETFONT, (WPARAM) hFont, 0);
// make the window visible
m_ListBox.ShowWindow(SW_SHOW);
}
return (bResult ? 0 : -1);
}
void CTraceView::OnSize(UINT nType, int cx, int cy)
{
CView::OnSize(nType, cx, cy);
if (::IsWindow(m_ListBox.m_hWnd))
m_ListBox.MoveWindow(0, 0, cx, cy, TRUE);
}
void CTraceView::OnDraw(CDC* pDC)
{
}
void CTraceView::AddTraceLine(int nType, LPCTSTR pstrFormat, ...)
{
CString str;
// format and write the data we were given
va_list args;
va_start(args, pstrFormat);
str.FormatV(pstrFormat, args);
// if too much entries -> delete first item
if (m_ListBox.GetCount() > 255)
{
m_ListBox.DeleteString(0);
}
switch(nType)
{
case 1:
m_ListBox.AddString(str, RGB(0,130,0));
break;
case 2:
m_ListBox.AddString(str, RGB(0,0,255));
break;
case 3:
m_ListBox.AddString(str, RGB(255,0,0));
break;
default:
m_ListBox.AddString(str);
break;
}
TRACE1("%s\n", str);
m_ListBox.SetCurSel(m_ListBox.GetCount()-1);
}
HBRUSH CTraceView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CView::OnCtlColor(pDC, pWnd, nCtlColor);
if (nCtlColor == CTLCOLOR_LISTBOX)
{
pDC->SetBkColor(GetSysColor(COLOR_3DFACE));
return (HBRUSH)GetSysColorBrush(COLOR_3DFACE);
}
// TODO: Return a different brush if the default is not desired
return hbr;
}