📄 synccomview.cpp
字号:
// SyncComView.cpp : implementation of the CSyncComView class
//
#include "stdafx.h"
#include "SyncCom.h"
#include "SyncComDoc.h"
#include "SyncComView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
CSyncComView* p_View;
/////////////////////////////////////////////////////////////////////////////
// CSyncComView
IMPLEMENT_DYNCREATE(CSyncComView, CEditView)
BEGIN_MESSAGE_MAP(CSyncComView, CEditView)
//{{AFX_MSG_MAP(CSyncComView)
ON_UPDATE_COMMAND_UI(IDC_DTRCHECK, OnUpdateDtrcheck)
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CEditView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CEditView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CEditView::OnFilePrintPreview)
ON_MESSAGE(MSG_REPORTRECEIVE,OnReceive)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSyncComView construction/destruction
CSyncComView::CSyncComView()
{
p_View = this;
pos=1;
}
CSyncComView::~CSyncComView()
{
}
BOOL CSyncComView::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;
}
/////////////////////////////////////////////////////////////////////////////
// CSyncComView drawing
void CSyncComView::OnDraw(CDC* pDC)
{
CSyncComDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
}
/////////////////////////////////////////////////////////////////////////////
// CSyncComView printing
BOOL CSyncComView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default CEditView preparation
return CEditView::OnPreparePrinting(pInfo);
}
void CSyncComView::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo)
{
// Default CEditView begin printing.
CEditView::OnBeginPrinting(pDC, pInfo);
}
void CSyncComView::OnEndPrinting(CDC* pDC, CPrintInfo* pInfo)
{
// Default CEditView end printing
CEditView::OnEndPrinting(pDC, pInfo);
}
/////////////////////////////////////////////////////////////////////////////
// CSyncComView diagnostics
#ifdef _DEBUG
void CSyncComView::AssertValid() const
{
CEditView::AssertValid();
}
void CSyncComView::Dump(CDumpContext& dc) const
{
CEditView::Dump(dc);
}
CSyncComDoc* CSyncComView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CSyncComDoc)));
return (CSyncComDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CSyncComView message handlers
LRESULT CSyncComView::OnReceive(WPARAM wParam, LPARAM lParam)
{
char buf[MAXBLOCK/4];
CString str;
int nLength,nTextLength,resu;
CSyncComDoc* pDoc = GetDocument();
CEdit& edit = GetEditCtrl();
if((!pDoc->m_bConnected||wParam & EV_RXCHAR)!=EV_RXCHAR)
//是否有数据进入
{
SetEvent(pDoc->m_hPostMsgEvent);//允许发送下一个WM_COMMNOTIFY消息
return 0L;
}
nLength = pDoc->ReadComm(buf,100);
if(nLength)//如果有数据缓冲区
{
nTextLength = edit.GetWindowTextLength();
edit.SetSel(nTextLength,nTextLength);//移到光标到文件尾
for(int i=0;i<nLength;i++)
{
switch(buf[i])
{
case 'r': //回车
if(!pDoc->m_bNewLine)
break;
case '\n'://换行
str+="\r\n";
break;
case '\b': //退格
edit.SetSel(-1,0);
edit.ReplaceSel(str);
nTextLength = edit.GetWindowTextLength();
edit.SetSel(nTextLength-1,nTextLength);
edit.ReplaceSel("");//回退一个字符
str="";
break;
default:
str+=buf[i];
}
}
edit.SetSel(-1,0);
edit.ReplaceSel(str);//向编辑视图中插入收到的字符
}
SetEvent(pDoc->m_hPostMsgEvent);//运许发送下一个消息,即置为有信号
return 0L;
}
void CSyncComView::OnUpdateDtrcheck(CCmdUI* pCmdUI)
{
if(pos==1)
{
pCmdUI->SetCheck(true);
}
else
{
pCmdUI->SetCheck(false);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -