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 + -
显示快捷键?