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

📄 vlpmaindlg.cpp

📁 车牌识别(改定位)武汉理工大学
💻 CPP
字号:
// VLPMainDlg.cpp : implementation file
//

#include "stdafx.h"
#include "resource.h"
#include "VLPMainDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CVLPMainDlg dialog


CVLPMainDlg::CVLPMainDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CVLPMainDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CVLPMainDlg)
	m_strResult = _T("");
	m_strFolder = _T("");
	//}}AFX_DATA_INIT
	m_pShowProcedure = new CShowProcedure;
	m_pShowProcedure->Create(CShowProcedure::IDD);
	m_pShowProcedure->ShowWindow(SW_HIDE);
}


void CVLPMainDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CVLPMainDlg)
	DDX_Control(pDX, IDC_LIST, m_ListCtrlFileName);
	DDX_Text(pDX, IDC_EDIT_RESULT, m_strResult);
	DDX_Text(pDX, IDC_EDIT_PATH_NAME, m_strFolder);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CVLPMainDlg, CDialog)
	//{{AFX_MSG_MAP(CVLPMainDlg)
	ON_BN_CLICKED(ID_OPEN, OnOpen)
	ON_NOTIFY(NM_CLICK, IDC_LIST, OnClickList)
	ON_WM_PAINT()
	ON_WM_DESTROY()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CVLPMainDlg message handlers

void CVLPMainDlg::OnOpen() 
{
	CFileDialog fileOpenDlg(TRUE, "jpg", "*.jpg;*.bmp",OFN_ALLOWMULTISELECT , "All Files(*.jpg;*.bmp)", NULL);
	if(fileOpenDlg.DoModal()==IDOK)
	{
		m_ListCtrlFileName.DeleteAllItems();
		
		CFileFind filefind;	
		m_strFolder = fileOpenDlg.GetPathName();
		int nPos = m_strFolder.ReverseFind ('\\');
		m_strFolder = m_strFolder.Left (nPos+1);
		int nTop = 0;
		if(filefind.FindFile(m_strFolder+"*.jpg"))
		{
			while (filefind.FindNextFile()) 
			{
				m_ListCtrlFileName.InsertItem(nTop++,filefind.GetFileName());
			}
			m_ListCtrlFileName.InsertItem(nTop++,filefind.GetFileName());
		}
		
		if(filefind.FindFile(m_strFolder+"*.bmp"))
		{
			while (filefind.FindNextFile()) 
			{
				m_ListCtrlFileName.InsertItem(nTop++,filefind.GetFileName());
			}
			m_ListCtrlFileName.InsertItem(nTop++,filefind.GetFileName());
		}
	}
	UpdateData(FALSE);
}

void RunVLP()
{
	CVLPMainDlg VLPMainDlg;
	VLPMainDlg.DoModal();
}

void CVLPMainDlg::OnClickList(NMHDR* pNMHDR, LRESULT* pResult) 
{	
	UpdateData(TRUE);
	POSITION pos = m_ListCtrlFileName.GetFirstSelectedItemPosition();
	if (pos)
	{
		int nItem = m_ListCtrlFileName.GetNextSelectedItem(pos);
		CString strFileName;
		strFileName = m_ListCtrlFileName.GetItemText(nItem,0);
		strFileName = m_strFolder + strFileName;
		m_pShowProcedure->Run(strFileName);
		m_strResult = m_pShowProcedure->m_strResult;
		UpdateData(FALSE);
		InvalidateRect(NULL);
	}
	*pResult = 0;
}

void CVLPMainDlg::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	
	CWnd * pWnd;
	CDC * pDC;
	CRect rcWin;
	
	//原始图象
	pWnd = GetDlgItem(IDC_ORG_IMAGE);
	pWnd->GetWindowRect(rcWin);
	rcWin.OffsetRect(-rcWin.TopLeft());
	pDC = pWnd->GetDC();
	pWnd->Invalidate();
	pWnd->UpdateWindow();
	pDC->Rectangle(rcWin);
	m_pShowProcedure->m_ImgOrg.Draw(pDC,CPoint(0,0),CSize(rcWin.Width(),rcWin.Height()),TRUE);

	int nHPic = m_pShowProcedure->m_ImgOrg.GetHeight();
	int nWPic = m_pShowProcedure->m_ImgOrg.GetWidth();
	double dRH = double(rcWin.Height())/nHPic;
	double dRW = double(rcWin.Width())/nWPic;
	CRect rcChePai;
	rcChePai.left = int(m_pShowProcedure->m_rcChePai.left*dRW);
	rcChePai.top = int(m_pShowProcedure->m_rcChePai.top*dRH);
	rcChePai.right = int(m_pShowProcedure->m_rcChePai.right*dRW);
	rcChePai.bottom = int(m_pShowProcedure->m_rcChePai.bottom*dRH);
	
	CPen pen;
	pen.CreatePen(0,2,RGB(255,0,0));
	CPen * OldPen = pDC->SelectObject(&pen);
	pDC->MoveTo(rcChePai.TopLeft());
	pDC->LineTo(rcChePai.right,rcChePai.top);

	pDC->MoveTo(rcChePai.right,rcChePai.top);
	pDC->LineTo(rcChePai.right,rcChePai.bottom);

	pDC->MoveTo(rcChePai.BottomRight());
	pDC->LineTo(rcChePai.left,rcChePai.bottom);

	pDC->MoveTo(rcChePai.left,rcChePai.bottom);
	pDC->LineTo(rcChePai.TopLeft());

	pDC->SelectObject(OldPen);
	
	pWnd->ReleaseDC(pDC);
	
	//文字
	pWnd = GetDlgItem(IDC_TEXT_PIC);
	pWnd->GetWindowRect(rcWin);
	rcWin.OffsetRect(-rcWin.TopLeft());
	pDC = pWnd->GetDC();
	pWnd->Invalidate();
	pWnd->UpdateWindow();
	pDC->Rectangle(rcWin);
	m_pShowProcedure->m_ImgTextPic.Draw(pDC,CPoint(0,0),CSize(rcWin.Width(),rcWin.Height()));
	pWnd->ReleaseDC(pDC);

	// TODO: Add your message handler code here
	
	// Do not call CDialog::OnPaint() for painting messages
}

BOOL CVLPMainDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	m_ListCtrlFileName.InsertColumn(0,"文件名",LVCFMT_LEFT,350);
	
	// TODO: Add extra initialization here
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CVLPMainDlg::OnDestroy() 
{
	CDialog::OnDestroy();
	
	// TODO: Add your message handler code here
}
CVLPMainDlg::~CVLPMainDlg()
{
	if (m_pShowProcedure) {
		delete m_pShowProcedure;
		m_pShowProcedure = NULL;
	}
}

⌨️ 快捷键说明

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