?? mainfrm.cpp
字號(hào):
// 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 = " 條碼閱讀程序使用說(shuō)明\r\n";
str+="基本工作原理:\r\n";
str+=" 此程序?qū)ξ粓D文件中的點(diǎn)陣數(shù)據(jù)進(jìn)行模式判別,找出其中的\r\n";
str+="完整PDF417條碼,并按照GB/T 17172-1997來(lái)解釋讀出對(duì)應(yīng)的數(shù)\r\n";
str+="據(jù).\r\n";
str+="使用方法:\r\n";
str+=" 1.打開(kāi)需要判別的位圖文件(BMP格式),此位圖文件可以是用\r\n";
str+="掃描儀生成的文件等,如所打開(kāi)的文件格式有錯(cuò)誤,則程序會(huì)提\r\n";
str+="示用戶(hù)文件格式錯(cuò),請(qǐng)用戶(hù)重新選擇文件,如正確,則在輸出面板\r\n";
str+="中會(huì)顯示出位圖文件信息:\r\n";
str+=" ImageWidth --- 圖像寬度(以像素為單位)\r\n";
str+=" ImageHeight --- 圖像高度\r\n";
str+=" BitsPixel --- 每一像素所點(diǎn)位數(shù)\r\n";
str+=" 2.從菜單上選擇執(zhí)行->閱讀或工具欄中的R按鈕來(lái)進(jìn)行條碼判\(zhòng)r\n";
str+="別如圖形中沒(méi)有條碼或條碼有殘缺造成無(wú)法讀出條碼(具體情況\r\n";
str+="見(jiàn)注意事項(xiàng)),則程序會(huì)提示用戶(hù):圖形中無(wú)條碼數(shù)據(jù);如正確讀出\r\n";
str+="數(shù)據(jù),則在輸出面板中會(huì)顯示條碼數(shù)據(jù);\r\n";
str+="注意事項(xiàng):\r\n";
str+=" 一.對(duì)圖形中條碼的要求:\r\n";
str+=" 1.具有完整的條碼起始符和結(jié)束符;\r\n";
str+=" 2.條碼為標(biāo)準(zhǔn)的PDF417條碼格式;\r\n";
str+=" 3.條碼可以任意角度傾斜;\r\n";
str+=" 4.目前程序只處理一幅條碼;\r\n";
str+=" 二.如位圖文件來(lái)自掃描儀,則在掃描時(shí),文件必須放平整,并在\r\n";
str+="一定的分辨率下掃描(掃描分辨率在200DPI)以上,在位圖文件存\r\n";
str+="放時(shí),以單色位圖方式存儲(chǔ)為最佳(文件存放空間最小,掃描速度\r\n";
str+="最快);目前程序只處理單色位圖,16單色位圖,256單色位圖.";
hDlg.m_helptext = str;
hDlg.DoModal();
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -