📄 minisqldoc.cpp
字号:
// miniSQLDoc.cpp : implementation of the CMiniSQLDoc class
//
#include "stdafx.h"
#include "miniSQL.h"
#include "miniSQLDoc.h"
#include "miniSQLView.h"
#include "StepExec.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMiniSQLDoc
IMPLEMENT_DYNCREATE(CMiniSQLDoc, CDocument)
BEGIN_MESSAGE_MAP(CMiniSQLDoc, CDocument)
//{{AFX_MSG_MAP(CMiniSQLDoc)
ON_COMMAND(ID_OP_EXEC, OnOpExec)
ON_COMMAND(ID_OP_STEP_EXEC, OnOpStepExec)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMiniSQLDoc construction/destruction
CMiniSQLDoc::CMiniSQLDoc()
{
memset(&m_lf, 0, sizeof(m_lf));
m_lf.lfWeight = FW_NORMAL;
m_lf.lfCharSet = DEFAULT_CHARSET;
m_lf.lfOutPrecision = OUT_DEFAULT_PRECIS;
m_lf.lfClipPrecision = CLIP_DEFAULT_PRECIS;
m_lf.lfQuality = DEFAULT_QUALITY;
m_lf.lfPitchAndFamily = DEFAULT_PITCH | FF_DONTCARE;
strcpy(m_lf.lfFaceName, "宋体");
}
CMiniSQLDoc::~CMiniSQLDoc()
{
}
BOOL CMiniSQLDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
return FALSE;
((CCrystalEditView* )m_viewList.GetHead())->SetWindowText("");
m_TextBuffer.InitNew();
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CMiniSQLDoc serialization
void CMiniSQLDoc::Serialize(CArchive& ar)
{
CCrystalEditView* pView = (CCrystalEditView*)m_viewList.GetHead();
ASSERT_VALID(pView);
ASSERT_KINDOF(CCrystalEditView, pView);
if (ar.IsStoring())
{
}
else
{
}
ASSERT_VALID(this);
}
/////////////////////////////////////////////////////////////////////////////
// CMiniSQLDoc diagnostics
#ifdef _DEBUG
void CMiniSQLDoc::AssertValid() const
{
CDocument::AssertValid();
}
void CMiniSQLDoc::Dump(CDumpContext& dc) const
{
CDocument::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMiniSQLDoc commands
BOOL CMiniSQLDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
if (!CDocument::OnOpenDocument(lpszPathName))
return FALSE;
return m_TextBuffer.LoadFromFile(lpszPathName);
}
BOOL CMiniSQLDoc::OnSaveDocument(LPCTSTR lpszPathName)
{
return m_TextBuffer.SaveToFile(lpszPathName);
}
void CMiniSQLDoc::DeleteContents()
{
CDocument::DeleteContents();
m_TextBuffer.FreeAll();
}
void CMiniSQLDoc::OnOpExec()
{
CMiniSQLView* pView = (CMiniSQLView *)m_viewList.GetHead();
ASSERT_VALID( pView );
ASSERT_KINDOF( CMiniSQLView, pView );
CString str;
if( m_TextBuffer.GetLineCount () > 0 )
// && (m_TextBuffer.GetLineLength(m_TextBuffer.GetLineCount ()-1) >0) )
m_TextBuffer.GetText(0,0,m_TextBuffer.GetLineCount ()-1,
m_TextBuffer.GetLineLength(m_TextBuffer.GetLineCount ()-1),str);
else
str = _T("");
CStepExec* pExec = new CStepExec( str );
try
{
pExec->Exec();
}
catch( Error& e )
{
Message( e.GetErrStr() );
pView->SetSelection( CPoint( 0, pExec->LineNo()-1 ),
CPoint( m_TextBuffer.GetLineLength( pExec->LineNo()-1 ), pExec->LineNo()-1 ) );
delete pExec;
return ;
}
}
void CMiniSQLDoc::OnOpStepExec()
{
CMiniSQLView* pView = (CMiniSQLView *)m_viewList.GetHead();
ASSERT_VALID( pView );
ASSERT_KINDOF( CMiniSQLView, pView );
CString str;
if( m_TextBuffer.GetLineCount () > 0 )
// && (m_TextBuffer.GetLineLength(m_TextBuffer.GetLineCount ()-1) >0) )
m_TextBuffer.GetText(0,0,m_TextBuffer.GetLineCount ()-1,
m_TextBuffer.GetLineLength(m_TextBuffer.GetLineCount ()-1),str);
else
str = _T("");
CStepExec* pExec = new CStepExec( str );
try
{
pExec->SingleExec();
}
catch( Error& e )
{
Message( e.GetErrStr() );
pView->SetSelection( CPoint( 0, pExec->LineNo()-1 ),
CPoint( m_TextBuffer.GetLineLength( pExec->LineNo()-1 ), pExec->LineNo()-1 ) );
delete pExec;
return ;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -