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

📄 staticfpsysdlg.cpp

📁 使用VC++的MFC功能
💻 CPP
字号:
// StaticFPSysDlg.cpp : implementation file
//

#include "stdafx.h"
#include "StaticFPSys.h"
#include "StaticFPSysDlg.h"
#include "FPA.H"
#include "math.h"

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

/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About


LPVOID lpImage1 = new BYTE[SizeCDib];
LPVOID lpImage2 = new BYTE[SizeCDib];

BYTE *lpData1;
BYTE *lpData2;

int Width1, Height1;
int Width2, Height2;

CString ImagePathName1, ImagePathName2;

BYTE lpFeature1[430];
BYTE lpFeature2[430];

class CAboutDlg : public CDialog
{
public:
	CAboutDlg();

// Dialog Data
	//{{AFX_DATA(CAboutDlg)
	enum { IDD = IDD_ABOUTBOX };
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CAboutDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	//{{AFX_MSG(CAboutDlg)
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
	//{{AFX_DATA_INIT(CAboutDlg)
	//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAboutDlg)
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
	//{{AFX_MSG_MAP(CAboutDlg)
		// No message handlers
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CStaticFPSysDlg dialog

CStaticFPSysDlg::CStaticFPSysDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CStaticFPSysDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CStaticFPSysDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CStaticFPSysDlg::DoDataExchange(CDataExchange* pDX)
{
	//{{AFX_DATA_MAP(CStaticFPSysDlg)
	DDX_Control(pDX, IDC_STATIC_IMG1, m_img1);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CStaticFPSysDlg, CDialog)
	//{{AFX_MSG_MAP(CStaticFPSysDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED(IDC_BUTTON_OPEN1, OnButtonOpen1)
	ON_BN_CLICKED(IDC_BUTTON_OPEN2, OnButtonOpen2)
	ON_BN_CLICKED(IDC_BUTTON_MATCH, OnButtonMatch)
	ON_BN_CLICKED(IDC_BUTTON_TEST, OnButtonTest)	
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CStaticFPSysDlg message handlers

BOOL CStaticFPSysDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Add "About..." menu item to system menu.

	// IDM_ABOUTBOX must be in the system command range.
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	// TODO: Add extra initialization here
	
	return TRUE;  // return TRUE  unless you set the focus to a control
}

void CStaticFPSysDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CStaticFPSysDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}
}

// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CStaticFPSysDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}

void CStaticFPSysDlg::OnButtonOpen1() 
{
	// TODO: Add your control notification handler code here
	CFileDialog dlg(TRUE,"bmp",".bmp",OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"Bitmap (*.BMP)|*.BMP||");
	HBITMAP m_hImage;

	if (dlg.DoModal() != IDOK) return;

		ImagePathName1 = dlg.GetPathName();				
		
		m_hImage = (HBITMAP)LoadImage(AfxGetInstanceHandle(),
								dlg.GetPathName(),
								IMAGE_BITMAP,
								0,
								0,
								LR_LOADFROMFILE|LR_CREATEDIBSECTION);
		GetDlgItem(IDC_STATIC_IMG1)->SendMessage(STM_SETIMAGE,IMAGE_BITMAP, (LPARAM)m_hImage);
	

	

	FPA_CreateImage(lpImage1);
	FPA_LoadImage(ImagePathName1, lpImage1, &lpData1, &Width1, &Height1);
	
	int lpSize1;
	FPA_AnalyzeFeature_File(ImagePathName1, lpFeature1, &lpSize1);
}

void CStaticFPSysDlg::OnButtonOpen2() 
{
	CFileDialog dlg(TRUE,"bmp",".bmp",OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"Bitmap (*.BMP)|*.BMP||");
	HBITMAP m_hImage;

	if (dlg.DoModal() != IDOK) return;

		ImagePathName2 = dlg.GetPathName();				
		
		m_hImage = (HBITMAP)LoadImage(AfxGetInstanceHandle(),
								dlg.GetPathName(),
								IMAGE_BITMAP,
								0,
								0,
								LR_LOADFROMFILE|LR_CREATEDIBSECTION);
		GetDlgItem(IDC_STATIC_IMG2)->SendMessage(STM_SETIMAGE,IMAGE_BITMAP, (LPARAM)m_hImage);
	

	

	FPA_CreateImage(lpImage2);
	FPA_LoadImage(ImagePathName2, lpImage2, &lpData2, &Width2, &Height2);			

	int lpSize2;
	FPA_AnalyzeFeature_File(ImagePathName2, lpFeature2, &lpSize2);
}

void CStaticFPSysDlg::OnButtonMatch() 
{
	// TODO: Add your control notification handler code here


	int score;

	FPA_PatternMatch(lpFeature1, lpFeature2, &score);
	//FPA_Match(lpFeature1, lpFeature2, &score);

	if (score > 60)
	{
		AfxMessageBox("Same Fingerprint!");
	}
	else
	{
		AfxMessageBox("Different Fingerprints");
	}
	
}


void CStaticFPSysDlg::OnCancel() 
{
	// TODO: Add extra cleanup here
	FPA_CloseImage(lpImage1);
	FPA_CloseImage(lpImage2);	
	CDialog::OnCancel();
}



void CStaticFPSysDlg::OnButtonTest() 
{
	
	BYTE *lpZoom = new BYTE[Width1 * Height1];
	BYTE *lpOrient = new BYTE[Width1 * Height1];

	FPA_ZoomOut(lpData1, lpZoom, Width1, Height1);
	FPA_OrientationFields(lpZoom, lpOrient, Width1, Height1, 6);

	POINT Core[30];
	int Num_Core = 0;


/*	getSingular(lpOrient, Width1, Height1, &Num_Core, Core, -1);

	CDC *myDC = m_img1.GetDC();

	COLORREF red = RGB(255, 0, 0);

	CBrush br;
	br.CreateSolidBrush(red);

	CDC *dc = myDC;

	dc->SelectObject(br);

	for(int i = 0; i < Num_Core; i++)
	{
		int x = Core[i].x;
		int y = Core[i].y;
		
		CRect rc;

		rc.left = x - 5;
		rc.right = x + 5;
		rc.top = 360 - (y - 5);
		rc.bottom = 360 - (y + 5);

		dc->Draw3dRect(&rc, red, red);

		CString coord;

		coord.Format("(%d, %d)", x, y);		

		dc->TextOut(rc.left, rc.top, coord);

		dc->DrawFocusRect(&rc);

	}*/

}


⌨️ 快捷键说明

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