191 lines
4.2 KiB
C++
191 lines
4.2 KiB
C++
// SerialView.cpp : implementation of the CSerialView class
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "Serial.h"
|
|
|
|
#include "SerialDoc.h"
|
|
#include "SerialView.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CSerialView
|
|
|
|
IMPLEMENT_DYNCREATE(CSerialView, CEditView)
|
|
|
|
BEGIN_MESSAGE_MAP(CSerialView, CEditView)
|
|
//{{AFX_MSG_MAP(CSerialView)
|
|
ON_WM_CTLCOLOR_REFLECT()
|
|
//}}AFX_MSG_MAP
|
|
ON_MESSAGE(IDM_OUTPUT, OnOutput)
|
|
ON_MESSAGE(IDM_BACKSPACE, OnBackspace)
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CSerialView construction/destruction
|
|
|
|
CSerialView::CSerialView()
|
|
{
|
|
m_font.m_hObject = NULL;
|
|
|
|
// Assign custom colours for the view
|
|
m_clrText = RGB(255, 255, 255); // while
|
|
m_clrBkgnd = RGB(0, 0, 128); // blue
|
|
m_brBkgnd.CreateSolidBrush(m_clrBkgnd);
|
|
}
|
|
|
|
CSerialView::~CSerialView()
|
|
{
|
|
if (m_font.m_hObject != NULL)
|
|
m_font.DeleteObject();
|
|
}
|
|
|
|
BOOL CSerialView::PreCreateWindow(CREATESTRUCT& cs)
|
|
{
|
|
// TODO: Modify the Window class or styles here by modifying
|
|
// the CREATESTRUCT cs
|
|
|
|
BOOL bPreCreated = CEditView::PreCreateWindow(cs);
|
|
cs.style &= ~(ES_AUTOHSCROLL | WS_HSCROLL); // Enable word-wrapping
|
|
|
|
return bPreCreated;
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CSerialView drawing
|
|
|
|
void CSerialView::OnDraw(CDC* pDC)
|
|
{
|
|
UNREFERENCED_PARAMETER(pDC);
|
|
|
|
CSerialDoc* pDoc = GetDocument();
|
|
ASSERT_VALID(pDoc);
|
|
|
|
// TODO: add draw code for native data here
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CSerialView diagnostics
|
|
|
|
#ifdef _DEBUG
|
|
void CSerialView::AssertValid() const
|
|
{
|
|
CEditView::AssertValid();
|
|
}
|
|
|
|
void CSerialView::Dump(CDumpContext& dc) const
|
|
{
|
|
CEditView::Dump(dc);
|
|
}
|
|
|
|
CSerialDoc* CSerialView::GetDocument() // non-debug version is inline
|
|
{
|
|
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CSerialDoc)));
|
|
return (CSerialDoc*)m_pDocument;
|
|
}
|
|
#endif //_DEBUG
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CSerialView message handlers
|
|
|
|
void CSerialView::OnInitialUpdate()
|
|
{
|
|
CEditView::OnInitialUpdate();
|
|
|
|
GetEditCtrl().SetReadOnly(TRUE);
|
|
|
|
//
|
|
// Create the font for this view
|
|
//
|
|
if (m_font.m_hObject == NULL)
|
|
{
|
|
if (m_font.CreatePointFont(95, _T("Fixedsys")))
|
|
SetFont(&m_font);
|
|
}
|
|
|
|
// Output some text
|
|
Output(_T("Serial - An Ultimate Toolbox Sample Application\r\n"));
|
|
Output(_T("Copyright 1998 by The Code Project - http://www.theUltimateToolbox.com\r\n"));
|
|
Output(_T("----------------------------------------------------------\r\n\r\n\r\n"));
|
|
}
|
|
|
|
HBRUSH CSerialView::CtlColor(CDC* pDC, UINT nCtlColor)
|
|
{
|
|
UNREFERENCED_PARAMETER(nCtlColor);
|
|
|
|
//
|
|
// Use custom colours to paint the control
|
|
//
|
|
pDC->SetTextColor(m_clrText);
|
|
pDC->SetBkColor(m_clrBkgnd);
|
|
return m_brBkgnd;
|
|
}
|
|
|
|
void CSerialView::Output(LPCTSTR pszOutput, ...)
|
|
{
|
|
//
|
|
// void Output(LPCTSTR pszOutput, ...)
|
|
//
|
|
// Outputs a formatted string to the edit window
|
|
//
|
|
// IN
|
|
// pszOutput: A format-control string.
|
|
//
|
|
// OUT
|
|
// none
|
|
//
|
|
// RETURN
|
|
// none
|
|
|
|
int nLength = GetEditCtrl().GetWindowTextLength();
|
|
TCHAR szBuffer[1024];
|
|
|
|
va_list argptr;
|
|
|
|
va_start(argptr, pszOutput);
|
|
_vstprintf(szBuffer, pszOutput, argptr);
|
|
va_end(argptr);
|
|
GetEditCtrl().SetSel(nLength, nLength);
|
|
GetEditCtrl().ReplaceSel(szBuffer);
|
|
}
|
|
|
|
void CSerialView::Backspace()
|
|
{
|
|
int nLength = GetEditCtrl().GetWindowTextLength();
|
|
|
|
GetEditCtrl().SetReadOnly(FALSE);
|
|
GetEditCtrl().SetSel(nLength - 1, nLength);
|
|
GetEditCtrl().Clear();
|
|
GetEditCtrl().SetReadOnly(TRUE);
|
|
}
|
|
|
|
LONG CSerialView::OnOutput(WPARAM wParam, LPARAM lParam)
|
|
{
|
|
UNREFERENCED_PARAMETER(wParam);
|
|
|
|
//
|
|
// This message is sent from the IncomingTextThread function
|
|
// on receipt of an incoming character notification. The
|
|
// character (string) is pointed to by lParam
|
|
Output((LPCTSTR) lParam);
|
|
return 0;
|
|
}
|
|
|
|
LONG CSerialView::OnBackspace(WPARAM wParam, LPARAM lParam)
|
|
{
|
|
UNREFERENCED_PARAMETER(wParam);
|
|
UNREFERENCED_PARAMETER(lParam);
|
|
|
|
//
|
|
// This message is sent from the IncomingTextThread function
|
|
// on receipt of an incoming character notification. The
|
|
// character is always the backspace character
|
|
Backspace();
|
|
return 0;
|
|
}
|