⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 outputview.cpp

📁 词法分析程序
💻 CPP
字号:
// OutputView.cpp : implementation file
//

#include "stdafx.h"
#include "SmartC.h"
#include "OutputView.h"
#include "MyEditView.h"//这里定义了一些全局变量

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////
// COutputView

IMPLEMENT_DYNCREATE(COutputView, CView)

COutputView::COutputView()
{
	m_nLineNum=0;
	m_nLineHeight=20;
	m_nStartLine=0;
}

COutputView::~COutputView()
{
}

BEGIN_MESSAGE_MAP(COutputView, CView)
	//{{AFX_MSG_MAP(COutputView)
	ON_WM_VSCROLL()
	ON_COMMAND(ID_FILE_NEW, OnFileNew)
	ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
	ON_COMMAND(ID_FILE_SAVE, OnFileSave)
	ON_COMMAND(ID_FILE_SAVE_AS, OnFileSaveAs)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// COutputView drawing

void COutputView::OnDraw(CDC* pDC)
{
	// TODO: add draw code here
	CRect rect;
	GetClientRect(&rect);
	CSmartCDoc* pDoc =(class CSmartCDoc*) GetDocument();
	ASSERT_VALID(pDoc);
	pDC->TextOut(3,5,"类型    值          注释");
	int y=20;
	Node* temp;
	temp=pDoc->outputfront.next;
	m_nLineNum=pDoc->output_linenum;
	for(int i=0;i<m_nStartLine&&temp->next;i++)
		temp=temp->next;
	while(temp&&y<(rect.bottom-m_nLineHeight))
	{
		//bug?
		pDC->TextOut(5,y,temp->pchar);
		y+=m_nLineHeight;
		temp=temp->next;
	}
	SetScrollRange(SB_VERT,0,m_nLineHeight*m_nLineNum-rect.bottom/2);
	SetScrollPos(SB_VERT,m_nStartLine*m_nLineHeight);
}

/////////////////////////////////////////////////////////////////////////////
// COutputView diagnostics

#ifdef _DEBUG
void COutputView::AssertValid() const
{
	CView::AssertValid();
}

void COutputView::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// COutputView message handlers

void COutputView::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
	// TODO: Add your message handler code here and/or call default
	CRect rect;
	GetClientRect(&rect);

	switch(nSBCode)
	{
	case SB_BOTTOM:
		m_nStartLine=m_nLineNum-(rect.bottom-20)/m_nLineHeight/2;
		break;
	case SB_TOP:
		m_nStartLine=0;
		break;
	case SB_LINEDOWN:
		m_nStartLine++;
		if(m_nStartLine>m_nLineNum-(rect.bottom-20)/m_nLineHeight/2)
			m_nStartLine=m_nLineNum-(rect.bottom-20)/m_nLineHeight/2;
		break;
	case SB_LINEUP:
		m_nStartLine--;
		if(m_nStartLine<0)
			m_nStartLine=0;
		break;
	case SB_PAGEDOWN:
		m_nStartLine+=(rect.bottom-20)/m_nLineHeight;
		if(m_nStartLine>m_nLineNum-(rect.bottom-20)/m_nLineHeight/2)
			m_nStartLine=m_nLineNum-(rect.bottom-20)/m_nLineHeight/2;
		break;
	case SB_PAGEUP:
		m_nStartLine-=(rect.bottom-20)/m_nLineHeight;
		if(m_nStartLine<0)
			m_nStartLine=0;
		break;
	case SB_THUMBPOSITION:
		m_nStartLine=nPos/m_nLineHeight;
		if(m_nStartLine>m_nLineNum-(rect.bottom-20)/m_nLineHeight/2)
			m_nStartLine=m_nLineNum-(rect.bottom-20)/m_nLineHeight/2;
		break;
	case SB_THUMBTRACK:
		m_nStartLine=nPos/m_nLineHeight;
		if(m_nStartLine>m_nLineNum-(rect.bottom-20)/m_nLineHeight/2)
			m_nStartLine=m_nLineNum-(rect.bottom-20)/m_nLineHeight/2;
		break;
	default:
		break;
	}
	Invalidate();
	CView::OnVScroll(nSBCode, nPos, pScrollBar);
}


void COutputView::OnFileNew() 
{
	// TODO: Add your command handler code here
	
}

void COutputView::OnFileOpen() 
{
	// TODO: Add your command handler code here
	
}

void COutputView::OnFileSave() 
{
	// TODO: Add your command handler code here
	
}

void COutputView::OnFileSaveAs() 
{
	// TODO: Add your command handler code here
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -