zimoview.cpp

来自「手工取字模软件」· C++ 代码 · 共 158 行

CPP
158
字号
// zimoView.cpp : CzimoView 类的实现
//

#include "stdafx.h"
#include "zimo.h"

#include "zimoDoc.h"
#include "zimoView.h"
#include ".\zimoview.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CzimoView
int zimo[8][8];
int c51[8];
CRect rect;
int grid;

IMPLEMENT_DYNCREATE(CzimoView, CView)

BEGIN_MESSAGE_MAP(CzimoView, CView)
	// 标准打印命令
	ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
	ON_WM_LBUTTONDOWN()
	ON_COMMAND(ID_ZIMO,OnZimo)
END_MESSAGE_MAP()

// CzimoView 构造/析构

CzimoView::CzimoView()
{
	// TODO: 在此处添加构造代码
	
}

CzimoView::~CzimoView()
{
}

BOOL CzimoView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: 在此处通过修改 CREATESTRUCT cs 来修改窗口类或
	// 样式
	for(int i=0;i<8;i++)
		for(int j=0;j<8;j++)
			zimo[i][j]=0;
	return CView::PreCreateWindow(cs);
}

// CzimoView 绘制

void CzimoView::OnDraw(CDC* pDC)
{
	CzimoDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	if (!pDoc)
		return;

	// TODO: 在此处为本机数据添加绘制代码
	for(int i=0;i<8;i++)
		c51[i]=0;
	GetWindowRect(&rect);
	int cy=rect.Height()/8,cx=rect.Width()/8;
	grid=cy>cx? cx:cy;
	HBRUSH brWhite,brBlack;
	brWhite=CreateSolidBrush(RGB(255,255,255));
	brBlack=CreateSolidBrush(RGB(0,0,0));
	for(int i=0;i<8;i++)
		for(int j=0;j<8;j++)
		{
			if(zimo[i][j]==0)
				pDC->SelectObject(brWhite);
			else
				pDC->SelectObject(brBlack);
			pDC->Rectangle(j*grid,i*grid,(j+1)*grid,(i+1)*grid);
		}
	for(int i=0;i<8;i++)
		for(int j=0;j<8;j++)
		{
			c51[i]+=pow(2,7-j)*zimo[j][i];
		}
}


// CzimoView 打印

BOOL CzimoView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// 默认准备
	return DoPreparePrinting(pInfo);
}

void CzimoView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: 打印前添加额外的初始化
}

void CzimoView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: 打印后添加清除过程
}


// CzimoView 诊断

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

void CzimoView::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}

CzimoDoc* CzimoView::GetDocument() const // 非调试版本是内联的
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CzimoDoc)));
	return (CzimoDoc*)m_pDocument;
}
#endif //_DEBUG


// CzimoView 消息处理程序

void CzimoView::OnLButtonDown(UINT nFlags, CPoint point)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	GetWindowRect(&rect);
	int cy=rect.Height()/8,cx=rect.Width()/8;
	grid=cy>cx? cx:cy;
	int j=point.x/grid;
	int i=point.y/grid;
	zimo[i][j]=zimo[i][j]==1?0:1;
	Invalidate();
	CView::OnLButtonDown(nFlags, point);
}

void CzimoView::OnZimo()
{
	// TODO: 在此添加命令处理程序代码
	FILE *stream;
	stream = fopen( "c51.txt","w");
	fprintf(stream,"//C51 format:\n");
	for(int i=0;i<8;i++)
	{
		fprintf(stream,"0x%2.2x,",c51[i]);
	}

	fclose( stream );
}

⌨️ 快捷键说明

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