?? comdbgdoc.cpp
字號:
// ComDbgDoc.cpp : implementation of the CComDbgDoc class
//
#include "stdafx.h"
#include "ComDbg.h"
#include "ComDbgDoc.h"
#include "RecvView.h"
#include "SendView.h"
#include "DlgSetCom.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CComDbgDoc
IMPLEMENT_DYNCREATE(CComDbgDoc, CDocument)
BEGIN_MESSAGE_MAP(CComDbgDoc, CDocument)
//{{AFX_MSG_MAP(CComDbgDoc)
ON_COMMAND(ID_EDIT_CLEARRECV, OnEditClearrecv)
ON_COMMAND(ID_EDIT_CLEARSEND, OnEditClearsend)
ON_COMMAND(ID_SET_COM, OnSetCom)
ON_COMMAND(ID_SET_CLOSEPORT, OnSetCloseport)
ON_UPDATE_COMMAND_UI(ID_SET_CLOSEPORT, OnUpdateSetCloseport)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CComDbgDoc construction/destruction
CComDbgDoc::CComDbgDoc()
{
// TODO: add one-time construction code here
}
CComDbgDoc::~CComDbgDoc()
{
}
BOOL CComDbgDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
return FALSE;
// TODO: add reinitialization code here
// (SDI documents will reuse this document)
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CComDbgDoc serialization
void CComDbgDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO: add storing code here
}
else
{
// TODO: add loading code here
}
}
/////////////////////////////////////////////////////////////////////////////
// CComDbgDoc diagnostics
#ifdef _DEBUG
void CComDbgDoc::AssertValid() const
{
CDocument::AssertValid();
}
void CComDbgDoc::Dump(CDumpContext& dc) const
{
CDocument::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CComDbgDoc commands
BOOL CComDbgDoc::SaveModified()
{
return TRUE;
}
CView* CComDbgDoc::GetView(const CRuntimeClass *pClass)
{
CView* pView=NULL;
POSITION pos=NULL;
pos=GetFirstViewPosition();
while(pos)
{
pView=GetNextView(pos);
if(pView->IsKindOf(pClass))
return pView;
}
return NULL;
}
void CComDbgDoc::OnEditClearrecv()
{
CRecvView* pView=(CRecvView*)GetView(RUNTIME_CLASS(CRecvView));
if(pView != NULL) pView->Clear();
}
void CComDbgDoc::OnEditClearsend()
{
CSendView* pView=(CSendView*)GetView(RUNTIME_CLASS(CSendView));
if(pView != NULL) pView->Clear();
}
void CComDbgDoc::OnSetCom()
{
CDlgSetCom dlg(m_com.m_nCom,m_com.m_nbps);
if(dlg.DoModal() == IDOK)
{
CWaitCursor wait;
CRecvView* pView=(CRecvView*)GetView(RUNTIME_CLASS(CRecvView));
ASSERT(pView != NULL);
pView->StopRecv();
pView->Clear();
m_com.SetCom(dlg.m_ncom);
m_com.SetBps(dlg.m_nbps);
m_com.SetByteSize(dlg.m_nbytesize);
m_com.SetParity(_PARITY[dlg.m_iParity]);
m_com.SetStopBits(_STOPBITS[dlg.m_iStopBits]);
if(!m_com.Open())
{
AfxStopBox(_T("打開端口失敗!"));
return;
}
pView->StartRecv();
}
}
void CComDbgDoc::OnSetCloseport()
{
CWaitCursor wait;
CRecvView* pView=(CRecvView*)GetView(RUNTIME_CLASS(CRecvView));
ASSERT(pView != NULL);
pView->StopRecv();
m_com.Close();
}
void CComDbgDoc::OnUpdateSetCloseport(CCmdUI* pCmdUI)
{
pCmdUI->Enable(m_com.IsOpened());
}
void CComDbgDoc::OnCloseDocument()
{
OnSetCloseport();
CDocument::OnCloseDocument();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -