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

📄 displaydataview.cpp

📁 对位图文件中的点阵数据进行模式判别,找出其中的完整PDF417条码,并按照GB/T 17172-1997规范来解释读出对应的数据.
💻 CPP
字号:
// DisplayDataView.cpp : implementation file
//

#include "stdafx.h"
#include "pdf417.h"
#include "DisplayDataView.h"
#include "pdf417Doc.h"

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

/////////////////////////////////////////////////////////////////////////////
// CDisplayDataView

IMPLEMENT_DYNCREATE(CDisplayDataView, CScrollView)

CDisplayDataView::CDisplayDataView()
{
	//设置显示字体
	LOGFONT TTYFONT;
	TTYFONT.lfHeight = 16;
	TTYFONT.lfWidth = 9;
	TTYFONT.lfEscapement = 0;
	TTYFONT.lfOrientation = 0;
	TTYFONT.lfWeight = FW_NORMAL;
	TTYFONT.lfItalic = 0;
	TTYFONT.lfUnderline = 0;
	TTYFONT.lfStrikeOut = 0;
	TTYFONT.lfCharSet = ANSI_CHARSET;
	TTYFONT.lfOutPrecision = OUT_DEFAULT_PRECIS;
	TTYFONT.lfClipPrecision = CLIP_DEFAULT_PRECIS;
	TTYFONT.lfQuality = PROOF_QUALITY;
	TTYFONT.lfPitchAndFamily = VARIABLE_PITCH | FF_ROMAN;
	strcpy(TTYFONT.lfFaceName,"Courier");
	TTYFONTOBJECT = ::CreateFontIndirect(&TTYFONT);
}

CDisplayDataView::~CDisplayDataView()
{
}


BEGIN_MESSAGE_MAP(CDisplayDataView, CScrollView)
	//{{AFX_MSG_MAP(CDisplayDataView)
		// NOTE - the ClassWizard will add and remove mapping macros here.
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDisplayDataView drawing

void CDisplayDataView::OnInitialUpdate()
{
	CScrollView::OnInitialUpdate();

	CSize sizeTotal;
	// TODO: calculate the total size of this view
	sizeTotal.cx = 100;
	sizeTotal.cy = 100;
	SetScrollSizes(MM_TEXT, sizeTotal);
}

void CDisplayDataView::OnDraw(CDC* pDC)
{
	CPdf417Doc* pDoc = (CPdf417Doc *)GetDocument();
	if(!pDoc->m_filename.IsEmpty())
	{
		CSize size;
		int yy=4*size.cy;
		HFONT oldfont = (HFONT)pDC->SelectObject(TTYFONTOBJECT);

		TEXTMETRIC tm;
		pDC->GetTextMetrics( &tm ) ;
		size.cx = tm.tmAveCharWidth  ;
		size.cy = tm.tmHeight + tm.tmExternalLeading ;

		CString str;
		str.Format("Filename:  %s",pDoc->m_filename);
		pDC->TextOut(0,0,str);
		str.Format("Image Width:     %d",pDoc->m_bmpwidth);
		pDC->TextOut(0,size.cy,str);
		str.Format("Image Height:    %d",pDoc->m_bmpheight);
		pDC->TextOut(0,size.cy*2,str);
		str.Format("Image BitsPixel: %d",pDoc->m_bmpBitsPixel);
		pDC->TextOut(0,size.cy*3,str);

		if(pDoc->m_data.GetLength()>0)
		{
			pDC->TextOut(0,size.cy*4,"DATA:",5);

			char str1[10];
			int len=pDoc->m_data.GetLength();
			yy=4*size.cy;
			for(int i=0;i<len;i++)
			{
				if(i%16==0) yy+=size.cy;
				UCHAR tmp = pDoc->m_data[i];
				sprintf(str1,tmp<0x10?"0%x":"%x",tmp);
				pDC->TextOut(((i%16)*3+6)*size.cx,yy,str1,2);
				str1[0]=pDoc->m_data[i];
				pDC->TextOut(((i%16)+56)*size.cx,yy,str1,1);
			}

			CString str2;
			yy+=size.cy;
			pDC->TextOut(0,yy,"-------------------------------------------------------------------------",
				strlen("-------------------------------------------------------------------------"));
			yy+=size.cy;
			pDC->TextOut(6*size.cx,yy,"Bar Code:",strlen("Bar Code:"));
			for(int h=0;h<pDoc->Height;h++)
			{
				yy+=size.cy;
				str2.Format("%3d.",h+1);
				pDC->TextOut(8*size.cx,yy,str2);
				for(int w=0;w<pDoc->Width;w++)
				{
					str2.Format("%3d",pDoc->m_middata[h*pDoc->Width+w]);
					pDC->TextOut((w*4+15)*size.cx,yy,str2);
				}
			}
		}

		pDC->SelectObject(oldfont);

		//设置View的滚动条范围
		CSize sizeTotal;
		sizeTotal.cx = 76*size.cx;
		sizeTotal.cy = yy+size.cy;
		SetScrollSizes(MM_TEXT,sizeTotal);
	}
}

/////////////////////////////////////////////////////////////////////////////
// CDisplayDataView diagnostics

#ifdef _DEBUG
void CDisplayDataView::AssertValid() const
{
	CScrollView::AssertValid();
}

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

/////////////////////////////////////////////////////////////////////////////
// CDisplayDataView message handlers

⌨️ 快捷键说明

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