📄 calcborn.h
字号:
/////////////////////////////////////////////////////////////////////////////
// CalcBorn.h : main header file for the CALCBORN application
/////////////////////////////////////////////////////////////////////////////
#if !defined(AFX_CALCBORN_H__5148B4FC_E7CC_409D_A071_2D0702C92C0A__INCLUDED_)
#define AFX_CALCBORN_H__5148B4FC_E7CC_409D_A071_2D0702C92C0A__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#ifndef __AFXWIN_H__
#error include 'stdafx.h' before including this file for PCH
#endif
#include "resource.h" // main symbols
#include <ShlObj.h> // 目录浏览库
#include <math.h> // 数学函数库
#include <stdio.h> // 标准IO操作
#include <stdlib.h> // 标准函数库
#include <malloc.h> // 内存分配库
#include <string.h> // 字符串操作
/////////////////////////////////////////////////////////////////////////////
/* 申请和释放指定大小sZ和类型tP的空间,及重新分配 */
#define TcNewMem(sZ, tP) (tP *)malloc((sZ) * sizeof(tP))
#define TcDelMem(pTr) if(pTr) free(pTr); pTr = NULL
#define TcReaMem(pTr, sZ, tP) pTr = (tP *)realloc(pTr, (sZ) * sizeof(tP))
#define TcClrMem(pTr, sZ, tP) memset(pTr, 0, (sZ) * sizeof(tP))
static const char *MyZnnWeek[] = {"星期日", "星期一", "星期二",
"星期三", "星期四", "星期五", "星期六"}; // 我宁宁星期
static const char *MyBigNum[] = {"0", "一", "二", "三",
"四", "五", "六", "七", "八", "九", "十"}; // 我大写数字
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
CString m_sHelps;
//}}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 void OnLButtonDown(UINT nFlags, CPoint point);
virtual BOOL OnInitDialog();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
// CCalcBornApp:
// See CalcBorn.cpp for the implementation of this class
//
class CCalcBornApp : public CWinApp
{
public:
CCalcBornApp();
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CCalcBornApp)
public:
virtual BOOL InitInstance();
//}}AFX_VIRTUAL
// Implementation
//{{AFX_MSG(CCalcBornApp)
// NOTE - the ClassWizard will add and remove member functions here.
// DO NOT EDIT what you see in these blocks of generated code !
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
extern CCalcBornApp theApp;
#define MsgInt(nID, nVal) SetDlgItemInt(nID, nVal)
#define MsgTxt(nID, chStr) SetDlgItemText(nID, chStr)
/////////////////////////////////////////////////////////////////////////////
// 天诚盛业指纹算法工程常用小算法工具集合 sck007 2006.08.16 Updated //
/////////////////////////////////////////////////////////////////////////////
#include "CList.cpp" /* 双向链表类 */
/*=========================================================================*/
/* 自定义使用文件操作(打开/保存)对话框,默认BMP过滤 */
BOOL ShowFileDialog(HWND hWnd, BOOL bOpen, char *chFile,
LPCTSTR chFilter = NULL);
/* 显示选择目录的对话框,可初始化路径及标题,外部接口 */
BOOL ShowFolderDialog(HWND hWnd, char *chDir, LPCTSTR chHit = NULL);
/* 以"与或"的方式使数据流面目全非或完璧归赵:写到新串 */
VOID CryptXOR(VOID *pbyDes, CONST VOID *pbySrc,
LONG nLen, BYTE byPatt = 0xA5);
/* 获取系统回收站的路径,包含尾部的反斜杠'\\',入口MAX_PATH长度 */
INT GetRecyclerDirectory(CHAR chPath[]);
/* 获取操作系统的目录System32的具体位置 */
INT GetSystem32Directory(CHAR chPath[]);
/* 由指定的CLSID返回对应的OCX注册的路径 */
INT GetOcxRegPath(const CLSID *pClsID, char *chPath);
/* 获取指定文件的时间:creation,last access,last write */
BOOL GainFileTime(LPCTSTR chFile, SYSTEMTIME *pCreate,
SYSTEMTIME *pAccess, SYSTEMTIME *pWrite);
/* 检查给定的文件是否存在(若文件长度指针不为NULL则返回实际值) */
BOOL IsFileExist(const char chFile[], DWORD *pLength = NULL);
/* 确认指定路径存在,尾部有无'\\'均可 */
BOOL MakeSurePath(const char chPath[]);
/* 确认给定文件所在的路径,以'\\'之前作为目录有效标识 */
BOOL MakeFilePath(const char chFile[]);
/* 将给定的二进制区保存成指定文件(自动确认文件路径) */
BOOL SaveBinaryFile(LPCTSTR chFileName, const VOID *pBuffSource,
DWORD dwBuffSize);
/* 装载指定长度数据到给定的二进制区(固定已分配内存) */
BOOL LoadBinaryFile(LPCTSTR chFileName, VOID *pBuffTarget,
DWORD &dwBuffSize);
/* 装载指定文件到给定的二进制区(自动确认使用内存) */
BOOL LoadBinaryFileEx(LPCTSTR chFileName, VOID *&pBuffTarget,
DWORD &dwBuffSize);
/* 将内部的资源文件导出为二进制的文件 */
BOOL ExportResAsBinFile(LPCTSTR lpFile, HMODULE hModule,
DWORD dwName, LPCTSTR lpType);
/*=========================================================================*/
/* 申请动态二维数组空间模板(申请块内存,DOS下有64K限制) */
BOOL NewByte2D(BYTE **&pImage, short nWide, short nHigh);
/* 释放动态二维数组空间模板,并赋值为NULL(简单数据类型) */
VOID DelByte2D(BYTE **&pImage);
/* 初始化二维动态数组空间(简单数据类型) */
VOID IniByte2D(BYTE **pImage, short nWide, short nHigh, BYTE data);
/* 将等大小的二维图像,由源区拷贝到目标区,可指定翻转 */
VOID CpyByte2D(BYTE **pDes, BYTE **pSrc,
short nWide, short nHigh, int bFlip);
/*=========================================================================*/
#define MMPI 25.4000508F /* 1英寸=25.4毫米 */
#define WIDTHBYTES(bits) (((bits) + 31) / 32 * 4) /* 4整倍数宽度 */
typedef union tagUFourByte /* 为SRAM读写 */
{
char chVal[4]; /* 四个字节段 */
short nVal[2]; /* 两个字成员 */
long lVal; /* 双字访问段 */
BYTE byVal[4]; /* 四个字节段 */
WORD wVal[2]; /* 两个字成员 */
DWORD dwVal; /* 双字访问段 */
}
UFourByte, *PUFourByte; /* 四字节联合 */
/*=========================================================================*/
/* 将指定8位/24位图像绘画到指定的设备中去(4的整数倍宽,含放缩) */
VOID DrawZnnImage(CDC *pDC, BYTE *pImage, int nWide, int nHigh,
CONST LPCRECT pSrcRect = NULL, /* 源图中某区域 */
CONST LPCRECT pDesRect = NULL, /* 设备中某区域 */
BOOL bReverse = TRUE, /* 是否翻转显示 */
BOOL bColor24 = FALSE); /* 是否是彩色图 */
/* 是否为Znn格式图像,若是则以像素为单位,返回高,及4的整数倍宽 */
BOOL IsmeZnnImage(LPCTSTR chFile, /* 输入读取文件 */
WORD *pwWide = NULL, WORD *pwHigh = NULL);
/* 加载Znn格式图像,须备好目标内存,标明高,及4的整数倍宽 */
BOOL LoadZnnImage(LPCTSTR chFile, /* 输入读取文件 */
BYTE *pImage, /* 08位灰度图区 */
LONG nWide, LONG nHigh, /* 图像的宽和高 */
BYTE *pColor = NULL, /* 24位彩色图区 */
BOOL bReverse = TRUE); /* 是否翻转加载 */
/* 仅按8位灰度/24位彩色,保存指定高,及4的整数倍宽的图像 */
BOOL SaveZnnImage(LPCTSTR chFile, /* 欲保存的文件 */
const BYTE *pImage, /* 图像区首指针 */
LONG nWide, LONG nHigh, /* 图像的宽和高 */
BOOL bReverse = TRUE, /* 是否翻转保存 */
BOOL bColor24 = FALSE); /* 是否是彩色图 */
/*=========================================================================*/
/* 判断BMP文件中的数据是否是所喜欢的可处理的数据 */
BOOL IsDesiredImage(const char *chFile, /* 指定目标文件 */
short &nWide, short &nHigh); /* 返回BMP信息头 */
/* 保存的图像的点阵数据为BMP文件(可以存贮非4的整数倍的宽度) */
BOOL SaveArrayImage(LPCTSTR chFile, /* 欲存文件名 */
BYTE **pImage, /* 图像区指针 */
short nWide, short nHigh, /* 图像区宽高 */
int bIsFlip = 1, /* 是否翻转图 */
BITMAPINFOHEADER *pInfoHdr = NULL); /* 存_BMP信息 */
/* 加载BMP的数据区到指定的内存(可翻转数据,可读取非4整数倍宽度图像) */
BOOL LoadArrayImage(LPCTSTR chFile, /* 输入读取文件 */
BYTE **&pImage, /* 图像内存区域 */
short &nWide, short &nHigh, /* 对应区域宽高 */
int bIsFlip = 1, /* 是否翻转读取 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -