📄 graphicsview.cpp
字号:
// GraphicsView.cpp : implementation file
//
#include "stdafx.h"
#include "Pipeline.h"
#include "GraphicsView.h"
#include "PipelineDoc.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// GraphicsView
IMPLEMENT_DYNCREATE(GraphicsView, CScrollView)
GraphicsView::GraphicsView(): m_rectPrint(0, 0, 11520, -15120)
{
}
GraphicsView::~GraphicsView()
{
}
BEGIN_MESSAGE_MAP(GraphicsView, CScrollView)
//{{AFX_MSG_MAP(GraphicsView)
// NOTE - the ClassWizard will add and remove mapping macros here.
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// GraphicsView drawing
void GraphicsView::OnInitialUpdate()
{
CScrollView::OnInitialUpdate();
/* CSize sizeTotal;
// TODO: calculate the total size of this view
sizeTotal.cx = sizeTotal.cy = 100;
SetScrollSizes(MM_TEXT, sizeTotal);*/
CSize sizeTotal(m_rectPrint.Width(), -m_rectPrint.Height());
CSize sizePage(sizeTotal.cx / 2,
sizeTotal.cy / 2); // page scroll
CSize sizeLine(sizeTotal.cx / 100,
sizeTotal.cy / 100); // line scroll
SetScrollSizes(MM_TEXT, sizeTotal, sizePage, sizeLine);
}
void GraphicsView::OnDraw(CDC* pDC)
{
CPipelineDoc* pDoc = GetDocument();
// TODO: add draw code here
int nHeight,i,j,row,line,exe_num;
CString outputLine;
CFont font;
TEXTMETRIC tm;
font.CreateFont(-16, 8, 0, 0, 400, FALSE, FALSE, 0,
ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY, DEFAULT_PITCH | FF_SWISS, "Fixedsys");
CFont* pOldFont = (CFont*) pDC->SelectObject(&font);
pDC->GetTextMetrics(&tm);
nHeight = tm.tmHeight + tm.tmExternalLeading;
pDC->TextOut(32, 8, "Instr\\Cycle");
for(i=0;i<1000;i++)
{
outputLine.Format("%d",i);
pDC->TextOut(240+32*i, 8, outputLine);
}
if(!pDoc->GoodFile)
return;
line=pDoc->states.number;
row=pDoc->cycle;
for(i=1;i<=line;i++)
{//从行列扫描看每一个Icon_rec[][]的状态,然后显示
exe_num=pDoc->states.instruction[i-1];
pDC->TextOut(32, 8+32*i, pDoc->attr[exe_num]);
for(j=i-1;j<row;j++)
{
if(pDoc->Icon_Rec[i][j]!=-1&&pDoc->Icon_Rec[i][j]!=-2)
{
HICON hic = AfxGetApp()->LoadIcon(IDI_IF+pDoc->Icon_Rec[i][j]);
if (hic == NULL)
AfxMessageBox("error");
pDC->DrawIcon(224+32*j, 32+32*(i-1), hic);
}
}
}
}
/////////////////////////////////////////////////////////////////////////////
// GraphicsView diagnostics
#ifdef _DEBUG
void GraphicsView::AssertValid() const
{
CScrollView::AssertValid();
}
void GraphicsView::Dump(CDumpContext& dc) const
{
CScrollView::Dump(dc);
}
CPipelineDoc* GraphicsView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CPipelineDoc)));
return (CPipelineDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// GraphicsView message handlers
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -