www.pudn.com > pdf417.rar > pdf417Doc.cpp


// pdf417Doc.cpp : implementation of the CPdf417Doc class 
// 
 
#include "stdafx.h" 
#include "pdf417.h" 
#include "pdf417Doc.h" 
#include "MainFrm.h" 
#include "DisplayDataView.h" 
#include "pdf417view.h" 
#include "StdDataObject.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CPdf417Doc 
 
IMPLEMENT_DYNCREATE(CPdf417Doc, CDocument) 
 
BEGIN_MESSAGE_MAP(CPdf417Doc, CDocument) 
	//{{AFX_MSG_MAP(CPdf417Doc) 
	ON_COMMAND(IDM_ACT, OnAct) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CPdf417Doc construction/destruction 
 
CPdf417Doc::CPdf417Doc() 
{ 
	m_middata=NULL; 
} 
 
CPdf417Doc::~CPdf417Doc() 
{ 
	if(m_middata!=NULL) 
		delete[] m_middata; 
} 
 
BOOL CPdf417Doc::OnNewDocument() 
{ 
	if (!CDocument::OnNewDocument()) 
		return FALSE; 
 
	// TODO: add reinitialization code here 
	// (SDI documents will reuse this document) 
 
	return TRUE; 
} 
 
 
 
///////////////////////////////////////////////////////////////////////////// 
// CPdf417Doc serialization 
 
void CPdf417Doc::Serialize(CArchive& ar) 
{ 
	if (ar.IsStoring()) 
	{ 
		// TODO: add storing code here 
	} 
	else 
	{ 
		// TODO: add loading code here 
	} 
} 
 
///////////////////////////////////////////////////////////////////////////// 
// CPdf417Doc diagnostics 
 
#ifdef _DEBUG 
void CPdf417Doc::AssertValid() const 
{ 
	CDocument::AssertValid(); 
} 
 
void CPdf417Doc::Dump(CDumpContext& dc) const 
{ 
	CDocument::Dump(dc); 
} 
#endif //_DEBUG 
 
///////////////////////////////////////////////////////////////////////////// 
// CPdf417Doc commands 
 
BOOL CPdf417Doc::OnOpenDocument(LPCTSTR lpszPathName)  
{ 
	if (!CDocument::OnOpenDocument(lpszPathName)) 
		return FALSE; 
	 
	m_filename.Format("%s",lpszPathName); 
 
	//调入文件 
	HBITMAP hbitmap=(HBITMAP)::LoadImage( 
		NULL, 
		m_filename, 
		IMAGE_BITMAP, 
		0,0, 
		LR_LOADFROMFILE); 
 
	//判断文件格式,如不正确,则提示用户 
	if(!hbitmap) 
	{ 
		AfxMessageBox(IDS_ERRFILESTYLE); 
		m_filename.Format("%s",""); 
		return TRUE; 
	} 
 
	CBitmap bitmap; 
	bitmap.Attach(hbitmap); 
 
	BITMAP bmInfo; 
	bitmap.GetObject(sizeof(BITMAP),&bmInfo); 
 
	m_bmpheight = bmInfo.bmHeight; 
	m_bmpwidth = bmInfo.bmWidth; 
	m_bmpBitsPixel = bmInfo.bmBitsPixel; 
 
	m_data.Format("%s",""); 
 
	CMainFrame* MyFrm = (CMainFrame*)(AfxGetMainWnd()->GetActiveWindow()); 
	CPdf417View* FirstView = (CPdf417View*)(MyFrm->m_wndSplitter.GetPane(0,0)); 
	CDisplayDataView* SecondView = (CDisplayDataView*)(MyFrm->m_wndSplitter.GetPane(1,0)); 
	FirstView->Invalidate(); 
	SecondView->Invalidate(); 
 
	return TRUE; 
} 
 
void CPdf417Doc::OnAct()  
{ 
	CStdDataObject m_stdobj; 
 
	//如果文件未打开,则提示用户后返回 
	if(m_filename.IsEmpty()) 
	{ 
		AfxMessageBox("请先打开一位图文件"); 
		return; 
	} 
 
	//打开文件并读入数据 
	{ 
		CBmpObject m_bmpobject; 
		if(m_bmpobject.ReadBmpFile(m_filename)) 
		{ 
			m_bmpobject.BmpDataReverse(); 
			m_stdobj.GetStdData(&m_bmpobject); 
		} 
		else 
			return; 
	} 
 
	//判断是否条码数据阅读成功,如是,则条码数据已在m_stdobj的p417数据中了 
	if(m_stdobj.Act()) 
	{ 
		if(m_stdobj.BarTo417Data()) 
		{ 
			m_stdobj.D417ToEnd(); 
			m_data.Format("%s",m_stdobj.pEndData); 
			Height = m_stdobj.Height; 
			Width = m_stdobj.Width; 
 
			if(m_middata!=NULL) delete[] m_middata; 
			m_middata = new UINT[Height*Width]; 
			for(int h=0,dCount=0;hGetActiveWindow()); 
			CDisplayDataView* SecondView = (CDisplayDataView*)(MyFrm->m_wndSplitter.GetPane(1,0)); 
			SecondView->Invalidate(); 
		} 
	} 
	else 
		AfxMessageBox("此位图中无PDF417条码数据!");	 
}