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


// MainFrm.cpp : implementation of the CMainFrame class 
// 
 
#include "stdafx.h" 
#include "pdf417.h" 
#include "MainFrm.h" 
#include "pdf417View.h" 
#include "DisplayDataView.h" 
#include "Pdf417Help.h" 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CMainFrame 
 
IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd) 
 
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) 
	//{{AFX_MSG_MAP(CMainFrame) 
	ON_WM_CREATE() 
	ON_COMMAND(IDM_HELP, OnHelp) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
static UINT indicators[] = 
{ 
	ID_SEPARATOR,           // status line indicator 
	ID_INDICATOR_CAPS, 
	ID_INDICATOR_NUM, 
	ID_INDICATOR_SCRL, 
}; 
 
///////////////////////////////////////////////////////////////////////////// 
// CMainFrame construction/destruction 
 
CMainFrame::CMainFrame() 
{ 
	// TODO: add member initialization code here 
	 
} 
 
CMainFrame::~CMainFrame() 
{ 
} 
 
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{ 
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1) 
		return -1; 
	 
	if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP 
		| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || 
		!m_wndToolBar.LoadToolBar(IDR_MAINFRAME)) 
	{ 
		TRACE0("Failed to create toolbar\n"); 
		return -1;      // fail to create 
	} 
 
	if (!m_wndStatusBar.Create(this) || 
		!m_wndStatusBar.SetIndicators(indicators, 
		  sizeof(indicators)/sizeof(UINT))) 
	{ 
		TRACE0("Failed to create status bar\n"); 
		return -1;      // fail to create 
	} 
 
	// TODO: Delete these three lines if you don't want the toolbar to 
	//  be dockable 
	m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); 
	EnableDocking(CBRS_ALIGN_ANY); 
	DockControlBar(&m_wndToolBar); 
 
	return 0; 
} 
 
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/, 
	CCreateContext* pContext) 
{ 
	m_wndSplitter.CreateStatic(this,2,1); 
	m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CPdf417View),CSize(200,205),pContext); 
	m_wndSplitter.CreateView(1,0,RUNTIME_CLASS(CDisplayDataView),CSize(10,10),pContext);	 
	return TRUE; 
} 
 
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) 
{ 
	if( !CFrameWnd::PreCreateWindow(cs) ) 
		return FALSE; 
	// TODO: Modify the Window class or styles here by modifying 
	//  the CREATESTRUCT cs 
	return TRUE; 
} 
 
///////////////////////////////////////////////////////////////////////////// 
// CMainFrame diagnostics 
 
#ifdef _DEBUG 
void CMainFrame::AssertValid() const 
{ 
	CFrameWnd::AssertValid(); 
} 
 
void CMainFrame::Dump(CDumpContext& dc) const 
{ 
	CFrameWnd::Dump(dc); 
} 
 
#endif //_DEBUG 
 
///////////////////////////////////////////////////////////////////////////// 
// CMainFrame message handlers 
 
 
void CMainFrame::OnHelp()  
{ 
	CPdf417Help hDlg; 
	CString str = "                        条码阅读程序使用说明\r\n"; 
		str+="基本工作原理:\r\n"; 
		str+="    此程序对位图文件中的点阵数据进行模式判别,找出其中的\r\n"; 
		str+="完整PDF417条码,并按照GB/T 17172-1997来解释读出对应的数\r\n"; 
		str+="据.\r\n";		 
		str+="使用方法:\r\n"; 
		str+="    1.打开需要判别的位图文件(BMP格式),此位图文件可以是用\r\n"; 
		str+="扫描仪生成的文件等,如所打开的文件格式有错误,则程序会提\r\n"; 
		str+="示用户文件格式错,请用户重新选择文件,如正确,则在输出面板\r\n"; 
		str+="中会显示出位图文件信息:\r\n"; 
		str+="		ImageWidth    --- 图像宽度(以像素为单位)\r\n"; 
		str+="		ImageHeight   --- 图像高度\r\n"; 
		str+="		BitsPixel        --- 每一像素所点位数\r\n"; 
		str+="    2.从菜单上选择执行->阅读或工具栏中的R按钮来进行条码判\r\n"; 
		str+="别如图形中没有条码或条码有残缺造成无法读出条码(具体情况\r\n"; 
		str+="见注意事项),则程序会提示用户:图形中无条码数据;如正确读出\r\n"; 
		str+="数据,则在输出面板中会显示条码数据;\r\n"; 
		str+="注意事项:\r\n"; 
		str+="    一.对图形中条码的要求:\r\n"; 
		str+="      1.具有完整的条码起始符和结束符;\r\n"; 
		str+="      2.条码为标准的PDF417条码格式;\r\n"; 
		str+="      3.条码可以任意角度倾斜;\r\n"; 
		str+="      4.目前程序只处理一幅条码;\r\n"; 
		str+="    二.如位图文件来自扫描仪,则在扫描时,文件必须放平整,并在\r\n"; 
		str+="一定的分辨率下扫描(扫描分辨率在200DPI)以上,在位图文件存\r\n"; 
		str+="放时,以单色位图方式存储为最佳(文件存放空间最小,扫描速度\r\n"; 
		str+="最快);目前程序只处理单色位图,16单色位图,256单色位图."; 
	hDlg.m_helptext = str; 
	hDlg.DoModal(); 
}