www.pudn.com > JingXiang-Design-Jeff.rar > a.cpp


// Design.h : main header file for the DESIGN application 
// 
 
#if !defined(AFX_DESIGN_H__E94D2204_24D4_11D4_8C58_BC25C6E83A1C__INCLUDED_) 
#define AFX_DESIGN_H__E94D2204_24D4_11D4_8C58_BC25C6E83A1C__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 
 
///////////////////////////////////////////////////////////////////////////// 
// CDesignApp: 
// See Design.cpp for the implementation of this class 
// 
class CDesignApp : public CWinApp 
{ 
public: 
	virtual BOOL PreTranslateMessage(MSG* pMsg); 
	CString AppTitle; 
	CDesignApp(); 
 
// Overrides 
	// ClassWizard generated virtual function overrides 
	//{{AFX_VIRTUAL(CDesignApp) 
	public: 
	virtual BOOL InitInstance(); 
	//}}AFX_VIRTUAL 
 
// Implementation 
	//{{AFX_MSG(CDesignApp) 
	afx_msg void OnAppAbout(); 
	afx_msg void OnAppExit(); 
	//}}AFX_MSG 
	DECLARE_MESSAGE_MAP() 
}; 
 
 
///////////////////////////////////////////////////////////////////////////// 
 
//{{AFX_INSERT_LOCATION}} 
// Microsoft Visual C++ will insert additional declarations immediately before the previous line. 
 
#endif // !defined(AFX_DESIGN_H__E94D2204_24D4_11D4_8C58_BC25C6E83A1C__INCLUDED_) 
// stdafx.h : include file for standard system include files, 
//  or project specific include files that are used frequently, but 
//      are changed infrequently 
// 
 
#if !defined(AFX_STDAFX_H__E94D2206_24D4_11D4_8C58_BC25C6E83A1C__INCLUDED_) 
#define AFX_STDAFX_H__E94D2206_24D4_11D4_8C58_BC25C6E83A1C__INCLUDED_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
 
#define VC_EXTRALEAN		// Exclude rarely-used stuff from Windows headers 
 
#include          // MFC core and standard components 
#include          // MFC extensions 
#include         // MFC Automation classes 
#include 		// MFC support for Internet Explorer 4 Common Controls 
#ifndef _AFX_NO_AFXCMN_SUPPORT 
#include 			// MFC support for Windows Common Controls 
#endif // _AFX_NO_AFXCMN_SUPPORT 
 
 
//{{AFX_INSERT_LOCATION}} 
// Microsoft Visual C++ will insert additional declarations immediately before the previous line. 
 
#endif // !defined(AFX_STDAFX_H__E94D2206_24D4_11D4_8C58_BC25C6E83A1C__INCLUDED_) 
// MainFrm.h : interface of the CMainFrame class 
// 
///////////////////////////////////////////////////////////////////////////// 
 
#if !defined(AFX_MAINFRM_H__E94D2208_24D4_11D4_8C58_BC25C6E83A1C__INCLUDED_) 
#define AFX_MAINFRM_H__E94D2208_24D4_11D4_8C58_BC25C6E83A1C__INCLUDED_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
 
class CMainFrame : public CFrameWnd 
{ 
	 
protected: // create from serialization only 
	CMainFrame(); 
	DECLARE_DYNCREATE(CMainFrame) 
 
// Attributes 
public: 
 
// Operations 
public: 
 
// Overrides 
	// ClassWizard generated virtual function overrides 
	//{{AFX_VIRTUAL(CMainFrame) 
	public: 
	virtual BOOL PreCreateWindow(CREATESTRUCT& cs); 
	virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL); 
	//}}AFX_VIRTUAL 
 
// Implementation 
public: 
 
	virtual ~CMainFrame(); 
#ifdef _DEBUG 
	virtual void AssertValid() const; 
	virtual void Dump(CDumpContext& dc) const; 
#endif 
 
protected:  // control bar embedded members 
	CStatusBar  m_wndStatusBar; 
	CToolBar    m_wndToolBar; 
	CToolBar    m_SecondToolBar; 
 
// Generated message map functions 
protected: 
	//{{AFX_MSG(CMainFrame) 
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); 
	afx_msg void OnClose(); 
	afx_msg void OnViewToolbar(); 
	afx_msg void OnUpdateViewToolbar(CCmdUI* pCmdUI); 
	//}}AFX_MSG 
	DECLARE_MESSAGE_MAP() 
}; 
 
///////////////////////////////////////////////////////////////////////////// 
 
//{{AFX_INSERT_LOCATION}} 
// Microsoft Visual C++ will insert additional declarations immediately before the previous line. 
 
#endif // !defined(AFX_MAINFRM_H__E94D2208_24D4_11D4_8C58_BC25C6E83A1C__INCLUDED_) 
// DesignDoc.h : interface of the CDesignDoc class 
// 
///////////////////////////////////////////////////////////////////////////// 
 
#if !defined(AFX_DESIGNDOC_H__E94D220A_24D4_11D4_8C58_BC25C6E83A1C__INCLUDED_) 
#define AFX_DESIGNDOC_H__E94D220A_24D4_11D4_8C58_BC25C6E83A1C__INCLUDED_ 
 
#include "BmpFile.h"	// Added by ClassView 
 
#if _MSC_VER > 1000 
//#include "DesignView.h" 
#pragma once 
#endif // _MSC_VER > 1000 
 
 
class CDesignDoc : public CDocument 
{ 
protected: // create from serialization only 
	CDesignDoc(); 
	DECLARE_DYNCREATE(CDesignDoc) 
 
// Attributes 
public: 
 
// Operations 
public: 
 
// Overrides 
	// ClassWizard generated virtual function overrides 
	//{{AFX_VIRTUAL(CDesignDoc) 
	public: 
	virtual BOOL OnNewDocument(); 
	virtual void Serialize(CArchive& ar); 
	virtual BOOL OnOpenDocument(LPCTSTR lpszPathName); 
	//}}AFX_VIRTUAL 
 
// Implementation 
public: 
 
	BmpFile BitMap; 
	virtual ~CDesignDoc(); 
#ifdef _DEBUG 
	virtual void AssertValid() const; 
	virtual void Dump(CDumpContext& dc) const; 
#endif 
 
protected: 
 
// Generated message map functions 
protected: 
	//{{AFX_MSG(CDesignDoc) 
	afx_msg void OnFileOpen(); 
	afx_msg void OnFileClose(); 
	afx_msg void OnUpdateFileClose(CCmdUI* pCmdUI); 
	afx_msg void OnFileSave(); 
	afx_msg void OnUpdateFileSave(CCmdUI* pCmdUI); 
	afx_msg void OnFileSaveAs(); 
	afx_msg void OnUpdateFileSaveAs(CCmdUI* pCmdUI); 
	afx_msg void OnUpdateFileOpen(CCmdUI* pCmdUI); 
	afx_msg void OnFileNew(); 
	//}}AFX_MSG 
	DECLARE_MESSAGE_MAP() 
}; 
 
///////////////////////////////////////////////////////////////////////////// 
 
//{{AFX_INSERT_LOCATION}} 
// Microsoft Visual C++ will insert additional declarations immediately before the previous line. 
 
#endif // !defined(AFX_DESIGNDOC_H__E94D220A_24D4_11D4_8C58_BC25C6E83A1C__INCLUDED_) 
// DesignView.h : interface of the CDesignView class 
// 
///////////////////////////////////////////////////////////////////////////// 
#include "Histogramshow.h" 
#include "Para_Detect.h" 
#include "Image_Identify.h"	// Added by ClassView 
#if !defined(AFX_DESIGNVIEW_H__E94D220C_24D4_11D4_8C58_BC25C6E83A1C__INCLUDED_) 
#define AFX_DESIGNVIEW_H__E94D220C_24D4_11D4_8C58_BC25C6E83A1C__INCLUDED_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
 
 
class CDesignView : public CScrollView 
{ 
protected: // create from serialization only 
	CDesignView(); 
	DECLARE_DYNCREATE(CDesignView) 
 
// Attributes 
public: 
	BOOL Is_Valid_OF_RBN_UP; 
	COLORREF CountForColor; 
	CDesignDoc* GetDocument(); 
	BOOL ConvertFromSelectedRectToReallyRect(void); 
// Operations 
public: 
 
// Overrides 
	// ClassWizard generated virtual function overrides 
	//{{AFX_VIRTUAL(CDesignView) 
	public: 
	virtual void OnDraw(CDC* pDC);  // overridden to draw this view 
	virtual BOOL PreCreateWindow(CREATESTRUCT& cs); 
	virtual BOOL OnScroll(UINT nScrollCode, UINT nPos, BOOL bDoScroll = TRUE); 
	protected: 
	virtual void OnInitialUpdate(); // called first time after construct 
	virtual BOOL OnPreparePrinting(CPrintInfo* pInfo); 
	virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo); 
	virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo); 
	virtual void OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint); 
	virtual BOOL OnScrollBy(CSize sizeScroll, BOOL bDoScroll = TRUE); 
	//}}AFX_VIRTUAL 
 
// Implementation 
public: 
	float TrueRatio; 
	Image_Identify The_Identify; 
    Para_Detect *pPara_Detect; 
 
 
 
	CMenu *pForPopUp; 
	BOOL LancetFromSwitch(int Switch,RECT *pInput=NULL); 
 
	BOOL IsFlashed; 
	BOOL FlashedEnabled; 
	BOOL IsAreaLocked; 
	BOOL IsFlashRectShowed; 
	RECT RectForShow;//记录选择框当前窗口的位置,其值随窗口滚动而改变,可能为负值,为闪烁选择框函数使用 
	RECT RectTmp;    //记录选择框在位图中的位置,为让系统刷新窗口时使用 
	CPoint OrgPoint; 
	BOOL GetCurrentPointGray(int x,int y); 
	BOOL DisableSelect(void); 
	BOOL DrawSelectedRect(CDC* pDc,RECT TheRect,COLORREF PenColor=RGB(0,0,0)); 
	HCURSOR NormalCursor; 
	HCURSOR CursorForBMPSelected; 
	HistogramShow * pHiShow; 
	BOOL IsHistogramShowed; 
	CDesignDoc * pNowDoc; 
	int mNowRatio; 
	virtual ~CDesignView(); 
#ifdef _DEBUG 
	virtual void AssertValid() const; 
	virtual void Dump(CDumpContext& dc) const; 
#endif 
 
protected: 
 
// Generated message map functions 
protected: 
	//{{AFX_MSG(CDesignView) 
	afx_msg void OnFuncLarger(); 
	afx_msg void OnFuncSmall(); 
	afx_msg void OnFuncChangeToColor(); 
	afx_msg void OnFuncChangeToGray(); 
	afx_msg void OnFuncRevert(); 
	afx_msg void OnViewShowHistogram(); 
	afx_msg void OnUpdateViewShowHistogram(CCmdUI* pCmdUI); 
	afx_msg void OnUpdateFuncChangeToColor(CCmdUI* pCmdUI); 
	afx_msg void OnUpdateFuncChangeToGray(CCmdUI* pCmdUI); 
	afx_msg void OnUpdateFuncLarger(CCmdUI* pCmdUI); 
	afx_msg void OnUpdateFuncRevert(CCmdUI* pCmdUI); 
	afx_msg void OnUpdateFuncSmall(CCmdUI* pCmdUI); 
	afx_msg void OnFuncSelectArea(); 
	afx_msg void OnUpdateFuncSelectArea(CCmdUI* pCmdUI); 
	afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message); 
	afx_msg void OnLButtonDown(UINT nFlags, CPoint point); 
	afx_msg void OnViewImageInfo(); 
	afx_msg void OnUpdateViewImageInfo(CCmdUI* pCmdUI); 
	afx_msg void OnMouseMove(UINT nFlags, CPoint point); 
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); 
	afx_msg void OnDestroy(); 
	afx_msg void OnTimer(UINT nIDEvent); 
	afx_msg void OnFuncAreaLocked(); 
	afx_msg void OnUpdateFuncAreaLocked(CCmdUI* pCmdUI); 
	afx_msg void OnFuncFlashSelectedArea(); 
	afx_msg void OnUpdateFuncFlashSelectedArea(CCmdUI* pCmdUI); 
	afx_msg void OnPictureprocessLancet(); 
	afx_msg void OnUpdatePictureprocessLancet(CCmdUI* pCmdUI); 
	afx_msg void OnUpdatePictureprocessCancelLancet(CCmdUI* pCmdUI); 
	afx_msg void OnPictureprocessCancelLancet(); 
	afx_msg void OnPictureprocessPreMedianfilter(); 
	afx_msg void OnUpdatePictureprocessPreMedianfilter(CCmdUI* pCmdUI); 
	afx_msg void OnFuncReloadGray(); 
	afx_msg void OnUpdateFuncReloadGray(CCmdUI* pCmdUI); 
	afx_msg void OnPictureprocessPreStrongBorder(); 
	afx_msg void OnUpdatePictureprocessPreStrongBorder(CCmdUI* pCmdUI); 
	afx_msg void OnPictureprocessConfirmLancet(); 
	afx_msg void OnUpdatePictureprocessConfirmLancet(CCmdUI* pCmdUI); 
	afx_msg void OnPictureprocessPreDetectBorder(); 
	afx_msg void OnUpdatePictureprocessPreDetectBorder(CCmdUI* pCmdUI); 
	afx_msg void OnFuncFlashScreen(); 
	afx_msg void OnUpdateFuncFlashScreen(CCmdUI* pCmdUI); 
	afx_msg void OnRButtonUp(UINT nFlags, CPoint point); 
	afx_msg void OnCrystalAnalyseDetectParameter(); 
	afx_msg void OnUpdateCrystalAnalyseDetectParameter(CCmdUI* pCmdUI); 
	afx_msg void OnPictureprocessPreInserveImage(); 
	afx_msg void OnUpdatePictureprocessPreInserveImage(CCmdUI* pCmdUI); 
	afx_msg void OnImageIdentifyAreaDetect(); 
	afx_msg void OnUpdateImageIdentifyAreaDetect(CCmdUI* pCmdUI); 
	afx_msg void OnPictureprocessPreBrightAdjust(); 
	afx_msg void OnUpdatePictureprocessPreBrightAdjust(CCmdUI* pCmdUI); 
	//}}AFX_MSG 
	DECLARE_MESSAGE_MAP() 
}; 
 
#ifndef _DEBUG  // debug version in DesignView.cpp 
inline CDesignDoc* CDesignView::GetDocument() 
   { return (CDesignDoc*)m_pDocument; } 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
 
//{{AFX_INSERT_LOCATION}} 
// Microsoft Visual C++ will insert additional declarations immediately before the previous line. 
 
#endif // !defined(AFX_DESIGNVIEW_H__E94D220C_24D4_11D4_8C58_BC25C6E83A1C__INCLUDED_) 
//{{NO_DEPENDENCIES}} 
// Microsoft Developer Studio generated include file. 
// Used by Design.rc 
// 
#define IDGOBACK                        3 
#define ID_RETURN                       3 
#define IDAUTODETECT                    4 
#define IDAPPLY                         5 
#define IDD_ABOUTBOX                    100 
#define IDR_MAINFRAME                   128 
#define IDR_DESIGNTYPE                  129 
#define IDD_HISTOGRAM                   130 
#define IDI_MAINFRAME                   131 
#define IDB_LOGO                        133 
#define IDC_CURSORFORBMPSELECTED        134 
#define IDB_BITMAP1                     135 
#define IDD_IMAGE_INFO                  136 
#define IDB_SPLASH                      138 
#define IDD_FOR_LANCET                  141 
#define IDD_FOR_STRONG_BORDER           143 
#define IDR_SECONDTOOLBAR               149 
#define IDR_POPUP                       151 
#define IDD_DETECT_PARAMETER            152 
#define IDD_FOR_BRIGHT_ADJUST           153 
#define IDD_SELLECT_TIMES               157 
#define IDD_FOR_DETAIL                  158 
#define IDD_FOR_DETECTING_AREA_SELECT   159 
#define IDD_FOR_STEP                    160 
#define IDD_FOR_JINLIDU_SELECT          161 
#define IDC_COLOR_BUTTON                1001 
#define IDC_DOWN                        1004 
#define IDC_UP                          1005 
#define IDC_CLOSE                       1006 
#define IDC_BACK                        1007 
#define IDC_BESTVIEW                    1008 
#define IDC_REFRESH                     1009 
#define IDC_DETAIL_VIEW                 1010 
#define IDC_NUMOFGRAY                   1013 
#define IDC_IMAGE_TYPE                  1014 
#define IDC_CURRENTGRAY                 1014 
#define IDC_IMAGE_WIDTH                 1015 
#define IDC_CURRENT_X                   1015 
#define IDC_IMAGE_HEIGHT                1016 
#define IDC_CURRENT_Y                   1016 
#define IDC_SLIDER1                     1016 
#define IDC_IMAGE_COMPRESS_METHOD       1017 
#define IDC_CURRENT_GRAY_IN_HISTOGRAM   1017 
#define IDC_IMAGE_COLOR_BIT             1018 
#define IDC_SPIN1                       1018 
#define IDC_CURRENT_GRAY_IN_HISTOGRAM_RATIO 1018 
#define IDC_IMAGE_COLOR_NUM             1019 
#define IDC_EDIT1                       1019 
#define IDC_RADIO1                      1020 
#define IDC_IMAGE_CURRENT_RATIO         1020 
#define IDC_EDIT_JINGLIDU               1020 
#define IDC_EDIT2                       1020 
#define IDC_RADIO2                      1021 
#define IDC_IMAGE_CURRENT_COLOR_STATUS  1021 
#define IDC_EDIT_LIZIJIANJU             1021 
#define IDC_EDIT3                       1021 
#define IDC_RADIO3                      1022 
#define IDC_EDIT_LIZIZHIJING            1022 
#define IDC_EDIT4                       1022 
#define IDC_RADIO4                      1023 
#define IDC_EDIT_BUJUNYUNDU             1023 
#define IDC_FOR_STRONG_BORDER_EXPLAIN   1025 
#define IDC_FOR_STRONG_BORDER_RADIO1    1026 
#define IDC_ANIMATE1                    1027 
#define IDC_TAB1                        1028 
#define IDC_BUTTON_TIJIFENGSHU          1029 
#define IDC_BUTTON_JINGLIDU             1030 
#define IDC_BUTTON_LIZIJIANJU           1031 
#define IDC_BUTTON_LIZIZHIJING          1032 
#define IDC_BUTTON_BUJUNYUNDU           1033 
#define IDC_EDIT_CHENGXIANGBEILV        1034 
#define IDC_EDIT_SHITUBEILV             1035 
#define IDC_EDIT_HAOMIDIANSHU           1036 
#define IDC_BUTTON_FLASH                1037 
#define IDC_BUTTON_AUTO_DETECT          1038 
#define IDC_EDIT_TIJIFENSHU             1039 
#define IDC_EDIT_CAIYANGFANWEI          1040 
#define IDC_EDIT_YUANTUCHICUN_X         1041 
#define IDC_EDIT_YUANTUCHICUN_Y         1042 
#define IDC_BUTTON_BUJUNYUNDU_DETAIL    1043 
#define IDC_PREVIEW                     1045 
#define IDC_PROGRESS1                   1047 
#define IDC_SPIN2                       1049 
#define IDC_VIEW_AREA                   1050 
#define ID_BUTTON_LARGE                 32777 
#define ID_BUTTON_SMALL                 32779 
#define ID_VIEW_LARGER                  32780 
#define ID_MENUITEM32781                32781 
#define ID_FUNC_LARGER                  32783 
#define ID_FUNC_SMALL                   32784 
#define ID_FUNC_CHANGE_TO_GRAY          32787 
#define ID_FUNC_CHANGE_TO_COLOR         32788 
#define ID_FUNC_REVERT                  32790 
#define ID_VIEW_SHOW_HISTOGRAM          32794 
#define ID_MENUITEM32797                32797 
#define ID_FUNC_SELECT_AREA             32798 
#define ID_VIEW_IMAGE_INFO              32801 
#define ID_FUNC_AREA_LOCKED             32804 
#define ID_FUNC_FLASH_SELECTED_AREA     32807 
#define ID_PICTUREPROCESS_LANCET        32808 
#define ID_PICTUREPROCESS_CANCEL_LANCET 32810 
#define ID_MENUITEM32812                32812 
#define ID_PICTUREPROCESS_PRE_MEDIANFILTER 32813 
#define ID_FUNC_RELOAD_GRAY             32816 
#define ID_PICTUREPROCESS_PRE_STRONG_BORDER 32819 
#define ID_PICTUREPROCESS_CONFIRM_LANCET 32822 
#define ID_PICTUREPROCESS_PRE_DETECT_BORDER 32825 
#define ID_MENUITEM32833                32833 
#define ID_FUNC_FLASH_SCREEN            32834 
#define ID_BUTTON32838                  32838 
#define ID_CRYSTAL_ANALYSE_DETECT_PARAMETER 32842 
#define ID_PICTUREPROCESS_PRE_INSERVE_IMAGE 32844 
#define ID_IMAGE_IDENTIFY_AREA_DETECT   32846 
#define ID_PICTUREPROCESS_PRE_BRIGHT_ADJUST 32847 
#define IDR_DIBTESTYPE                  61446 
 
// Next default values for new objects 
//  
#ifdef APSTUDIO_INVOKED 
#ifndef APSTUDIO_READONLY_SYMBOLS 
#define _APS_3D_CONTROLS                     1 
#define _APS_NEXT_RESOURCE_VALUE        162 
#define _APS_NEXT_COMMAND_VALUE         32849 
#define _APS_NEXT_CONTROL_VALUE         1051 
#define _APS_NEXT_SYMED_VALUE           103 
#endif 
#endif 
#ifndef _XRH_BMPDEF_H_ 
#define _XRH_BMPDEF_H_ 
#pragma pack(1) 
/*            Some structures for bmp files  
											 
								Written by Xuronghai&lizijian,2000-04-24 
 
                                                 */  
/*===============================================================================*/ 
/* 
                                         BMP File Sturct 
 
                              Offset 0: BMP Head info   -->BITMAPFILEHEADER 
									    BMP Info Struct	-->BITMAPINFOHEADER 
										Color Map       -->RGBQUAD 
                   		Offset  bfSize: Image Data                    
							              
 
 
 
 
 
*/ 
///////////////////////////////////////////////////////////////////////// 
 
typedef struct { 
	           WORD  bfType;     //it Must be 'BM' 
			   DWORD bfSize;     // Size of the BMP file 
			   WORD  bfReserved1;// Reserved For later 
			   WORD  bfReserved2;// must be zero  
			   DWORD bfOffBits;  // offset of block of graphic data from head (bytes)  
								 // Some thing for bfOffBits's Value: 
			                      
								//	Mode              Value 
							    //   2 colors	       3F h 
	           		 			//	 16 colors		   76 h	 
								//	256 colors        436 h			 
								//	Ture Color		   36 h		 
				                  
 
}BMPFileHeader; 
 
typedef struct{ 
	           DWORD biSize;          //Size of this structure,often be 28h 
			   DWORD biWidth;         //width  of the image,pixels 
			   DWORD biHeight;        //height of the image,pixels 
			   WORD  biPlanes;        //Num of the plane of image,Must be 1 
			   WORD  biBitCount;      //how many bits for 1 pixel,must be 1,4,8 or 24 
			   DWORD biCompression;   // define image compressed, 0 no compressed 
									  //						  1 RLE_8  RUN Length Encoding 8  
				          			  //                          2 RLE_4  RUN Length Encoding 4  
			                           									 
			   DWORD biSizeImage;      //Size of image data 
			   DWORD biXPelsPerMeter;  // How many pixels in X direction 1 meter 
			   DWORD biYPelsPerMeter;  // How many pixels in Y derection 1 meter 
			   DWORD biClrUsed;        // Num of colors this image used,if 0,用的颜色数等于颜色表颜色总数 
			   DWORD biClrImportant;   // Num of Important colors,if 0, Every Color be Important       
}BMPInfoHeader; 
 
 
typedef struct{ 
	          BYTE rgbBlue; 
			  BYTE rgbGreen; 
			  BYTE rgbRed; 
			  BYTE Reserved; 
			   
}RGBQuad; 
 
 
/* 
#define BMPFileHeader BITMAPFILEHEADER 
#define BMPInfoHeader BITMAPINFOHEADER 
#define RGBQuad       RGBQUAD 
*/ 
#endif 
// BmpFile.h: interface for the BmpFile class. 
 
////////////////////////////////////////////////////////////////////// 
 
#if !defined(AFX_BMPFILE_H__3BA3F282_1A90_11D4_8C58_A2DB4618981D__INCLUDED_) 
#define AFX_BMPFILE_H__3BA3F282_1A90_11D4_8C58_A2DB4618981D__INCLUDED_ 
 
#include "BmpDef.h" 
#define GET_GRAY(R,G,B)(BYTE)((float)(R)*0.3+(float)(G)*0.51+(float)(B)*0.19)// Ghange To Gray MACRO 
#if _MSC_VER > 1000 
#pragma once  
#endif // _MSC_VER > 1000 
 
#define FIRSTSIZEFORSHOW    (1024*1024) 
#define FIRSTSIZEFORBMPBIT  (500*1024) 
#define FIRSTGRAYDATABUFFERSIZE (1024*1024) 
#define FIRSTPUBLICBUFFERSIZE    (2*1024*1024) 
 
#define HIGH(x)        ((x)>>0x08) 
#define  LOW(x)        ((x)&0x00FF) 
#define LINE_BYTE(x)   ((((x)+3)>>2)<<2) 
 
 
 
class BmpFile :virtual public CFile 
{ 
public:	 
	BOOL BrightAdjusting(int Adjust_Num,RECT *pInput_=NULL); 
	BOOL InverseImage(RECT *pInput_=NULL); 
//	UINT TmpFileLenth; 
	CFile TmpFile; 
	int StrongBorderMethod; 
	BOOL LoadLowThought(RECT *pInput_=NULL,float Kernel[3][3]=NULL); 
 
	BOOL Convolution(RECT *pInput_=NULL,int *Kernel=NULL,int Col_Num=3,int Total_Num=9); 
    BOOL Convolution_3_3(RECT *pInput_=NULL,int Kernel[3][3]=NULL); 
    BOOL Convolution_3_3_Float(RECT *pInput_=NULL,float Kernel[3][3]=NULL); 
 
	RECT RangeRectBak; // Used For Dialog 'ForLancet' Class on OnApply and OnCancel And OnOk FUnction 
	POINT Border[4][2][3]; 
	BOOL StrongBorder(int Method=0,RECT *pInput_=NULL); 
    BOOL DetectBorder(RECT *pInput_=NULL); 
	BYTE * pPublicBuffer; 
	UINT PublicBufferSize; 
	 
	BOOL MedianFilter(RECT *pInput_=NULL); 
	BOOL ChangeToGray(void); 
	BOOL Init_Palette_For_Gray(RGBQuad *pQuad=NULL,int PaletteNum=256); 
 
	BMPInfoHeader InfoHeader_For_Gray; 
	BMPInfoHeader InfoHeader_Bak; 
	BYTE * pBMPDataForGray; 
	UINT  GrayDataBufferSize; 
	int AutoGetSwitchForLancet( int Method); 
	BOOL CopyImageDataAsNonCompressionDataToMemForShow(void);//BMPInfoHeader *pInfo=NULL,BYTE *p_Palette=NULL,BYTE *p_Bits=NULL); 
 
    //char ForTest; 
   	BOOL GetLancet(int Switch,RECT *pInput=NULL,int Switch_=-1); 
	BOOL IsLancet;  
    int RangeOfAreaForLancet; 
	int SwitchForLancet; 
	int GetPointGray(int Line,int Col); 
	char ImageType[20]; 
	RECT ReallyRectOfBMP; 
	BOOL BMPSelectEnabled; 
	RECT SelectedRect; 
	BOOL  RectSelected; 
	BOOL CopyGrayToShow(void *p_Palette=NULL,void *p_Bits=NULL); 
	BYTE * pBMPBits; 
	RGBQuad * pPalette; 
	DWORD SizeOfMemForShow; 
	BYTE *pBMPDataForShow; 
	LOGPALETTE * pLogPal; 
	BOOL GetBMPPalette(void); 
	CPalette thePalette; 
	BOOL SetPalette(CDC *pDc); 
	BOOL SpeedShowBitMap(CDC *pDc,int Ratio); 
	//CBitmap *pTheBitmap; 
	BOOL GetRectGrayRatio(RECT &rect); 
	void EmptyGrayRatio(void); 
	void GetGrayRatio(void); 
	float GrayRatio[256]; 
	DWORD TotalPoint; 
	DWORD Points[256]; 
	void SetBmpStatus(BOOL OkOrNot); 
	void SetIsGray(BOOL IsOrNot); 
	//void SetIsGray(BOOL IsOrNot); 
	BOOL GetIsGray(void); 
	DWORD mNowHeight; 
	DWORD mNowWidth; 
	void Swap(void *p1,void *p2,int size); 
    BMPInfoHeader BmpInfoHeader; 
	BMPFileHeader BmpFileHeader; 
	BOOL ShowBitMap(CDC *pDc,int Ratio=1); 
	BOOL GetBmpStatus(void); 
	BOOL IsFileOpen(CFile *pFile=NULL);  
	UINT BMPDataSize;//为图形数据分配的内存大小,如图形数据未压缩 
	                 //=BmpInfoHeader.biImageSize;否则, 
	                 //=BmpInfoHeader.biImageSize*2 (bytes) 
    RGBQuad *pRgbQuad; 
	BOOL GetBMPData();     
	BYTE * pBMPData; 
	int NumOfColor; 
	void GetBmpStruct(int ShowMode=1); 
	BmpFile(CString FileName); 
	BmpFile(); 
	virtual ~BmpFile(); 
	BOOL BMP_IsEmpty; 
    CString BMPFileName; 
	INT NonCompressLineSize;//Bytes 
	BOOL GetBmpFile(CString Filename,int ShowMode=1);	 
	BOOL BmpAdjustData(void); 
protected: 
 
	BOOL BMP_Ok; 
private: 
	CPalette *pOldPalette; 
	BOOL IsGray; 
	BOOL IsFirstOpen; 
	BOOL DecodeForRLE_4(void); 
	BOOL DecodeForRLE_8(void); 
	BOOL AskMemoryForBMPData(); 
	BOOL IsBMPFile(void); 
	INT ErrorFlag; 
}; 
 
#endif // !defined(AFX_BMPFILE_H__3BA3F282_1A90_11D4_8C58_A2DB4618981D__INCLUDED_) 
#if !defined(AFX_HISTOGRAMSHOW_H__F7B07200_2869_11D4_A611_DA78ACF28104__INCLUDED_) 
#define AFX_HISTOGRAMSHOW_H__F7B07200_2869_11D4_A611_DA78ACF28104__INCLUDED_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
// HistogramShow.h : header file 
// 
 
///////////////////////////////////////////////////////////////////////////// 
// HistogramShow dialog 
 
class HistogramShow : public CDialog 
{ 
// Construction 
public: 
	BOOL EmptyNumOfGray(void); 
	int TotalLenth; 
	BOOL Showed_Ok; 
	int m_Ratio; 
	void DrawCoordinate(CDC *pDC,COLORREF Color=RGB(0,0,0)); 
	int OrgX; 
	int OrgY; 
	COLORREF mForeColor; 
	void GetSelfClientRect(void); 
	RECT mRect; 
	void GetParent(CWnd* pParent); 
	CWnd* pTheParent; 
	HistogramShow(CWnd* pParent = NULL);   // standard constructor 
 
// Dialog Data 
	//{{AFX_DATA(HistogramShow) 
	enum { IDD = IDD_HISTOGRAM }; 
	int		m_NumOfGray; 
	int		m_CurrentGray; 
	int		m_Current_x; 
	int		m_Current_y; 
	int		m_Gray_Inside; 
	float	m_Current_Ratio; 
	//}}AFX_DATA 
 
 
// Overrides 
	// ClassWizard generated virtual function overrides 
	//{{AFX_VIRTUAL(HistogramShow) 
	protected: 
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support 
	virtual void PostNcDestroy(); 
	virtual BOOL PreCreateWindow(CREATESTRUCT& cs); 
	//}}AFX_VIRTUAL 
 
// Implementation 
protected: 
 
	// Generated message map functions 
	//{{AFX_MSG(HistogramShow) 
	afx_msg void OnPaint(); 
	afx_msg void OnColorButton(); 
	afx_msg void OnDown(); 
	afx_msg void OnUp(); 
	afx_msg void OnClose(); 
	afx_msg void OnRButtonUp(UINT nFlags, CPoint point); 
	afx_msg void OnBack(); 
	afx_msg void OnBestview(); 
	afx_msg void OnDetailView(); 
	afx_msg void OnRefresh(); 
	afx_msg void OnMouseMove(UINT nFlags, CPoint point); 
	//}}AFX_MSG 
	DECLARE_MESSAGE_MAP() 
}; 
 
//{{AFX_INSERT_LOCATION}} 
// Microsoft Visual C++ will insert additional declarations immediately before the previous line. 
 
#endif // !defined(AFX_HISTOGRAMSHOW_H__F7B07200_2869_11D4_A611_DA78ACF28104__INCLUDED_) 
#if !defined(AFX_IMAGEINFO_H__2B8B81C0_2D9F_11D4_8C58_CA5C7A37D407__INCLUDED_) 
#define AFX_IMAGEINFO_H__2B8B81C0_2D9F_11D4_8C58_CA5C7A37D407__INCLUDED_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
// ImageInfo.h : header file 
// 
 
///////////////////////////////////////////////////////////////////////////// 
// ImageInfo dialog 
 
class ImageInfo : public CDialog 
{ 
// Construction 
public: 
	void GetImageInfo(void); 
	ImageInfo(CWnd* pParent = NULL);   // standard constructor 
 
// Dialog Data 
	//{{AFX_DATA(ImageInfo) 
	enum { IDD = IDD_IMAGE_INFO }; 
	int		m_ColorBit; 
	CString	m_CompressionMethod; 
	int		m_Height; 
	CString	m_Type; 
	int		m_Width; 
	int		m_NumOfColor; 
	float	m_Curren_Ratio; 
	CString	m_Current_Color_Status; 
	//}}AFX_DATA 
 
 
// Overrides 
	// ClassWizard generated virtual function overrides 
	//{{AFX_VIRTUAL(ImageInfo) 
	public: 
	virtual int DoModal(); 
	protected: 
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support 
	//}}AFX_VIRTUAL 
 
// Implementation 
protected: 
 
	// Generated message map functions 
	//{{AFX_MSG(ImageInfo) 
	virtual BOOL OnInitDialog(); 
	//}}AFX_MSG 
	DECLARE_MESSAGE_MAP() 
}; 
 
//{{AFX_INSERT_LOCATION}} 
// Microsoft Visual C++ will insert additional declarations immediately before the previous line. 
 
#endif // !defined(AFX_IMAGEINFO_H__2B8B81C0_2D9F_11D4_8C58_CA5C7A37D407__INCLUDED_) 
// CG: This file was added by the Splash Screen component. 
 
#ifndef _SPLASH_SCRN_ 
#define _SPLASH_SCRN_ 
 
// Splash.h : header file 
// 
 
///////////////////////////////////////////////////////////////////////////// 
//   Splash Screen class 
 
class CSplashWnd : public CWnd 
{ 
// Construction 
protected: 
	CSplashWnd(); 
 
// Attributes: 
public: 
	CBitmap m_bitmap; 
 
// Operations 
public: 
	static void EnableSplashScreen(BOOL bEnable = TRUE); 
	static void ShowSplashScreen(CWnd* pParentWnd = NULL); 
	static BOOL PreTranslateAppMessage(MSG* pMsg); 
    static BOOL IsForAbout; 
// Overrides 
	// ClassWizard generated virtual function overrides 
	//{{AFX_VIRTUAL(CSplashWnd) 
	//}}AFX_VIRTUAL 
 
// Implementation 
public: 
	~CSplashWnd(); 
	virtual void PostNcDestroy(); 
     static BOOL SplashWndShowed; 
      
protected: 
	BOOL Create(CWnd* pParentWnd = NULL); 
	void HideSplashScreen(); 
	static BOOL c_bShowSplashWnd; 
	static CSplashWnd* c_pSplashWnd; 
 
// Generated message map functions 
protected: 
	//{{AFX_MSG(CSplashWnd) 
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); 
	afx_msg void OnPaint(); 
	afx_msg void OnTimer(UINT nIDEvent); 
	//}}AFX_MSG 
	DECLARE_MESSAGE_MAP() 
}; 
 
 
#endif 
#if !defined(AFX_FORLANCET_H__127AE520_2F9A_11D4_A611_B60D0C54A405__INCLUDED_) 
#define AFX_FORLANCET_H__127AE520_2F9A_11D4_A611_B60D0C54A405__INCLUDED_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
// ForLancet.h : header file 
// 
 
///////////////////////////////////////////////////////////////////////////// 
// ForLancet dialog 
 
class ForLancet : public CDialog 
{ 
// Construction 
public: 
 // static RECT RangeRectBak; 
	int RangeOfAreaBak; 
 
	BOOL HaveAutoDetected; 
	BOOL ReloadImage(void); 
	BOOL IsDataChangedForOnOk; 
	BOOL IsDataChanged; 
	 
	 
	CSliderCtrl *pSlider_; 
 
	CSpinButtonCtrl* pSpin_; 
 
	ForLancet(CWnd* pParent = NULL);   // standard constructor 
    ~ForLancet(); 
// Dialog Data 
	//{{AFX_DATA(ForLancet) 
	enum { IDD = IDD_FOR_LANCET }; 
	int		m_Lancet; 
	int		m_RangeOfArea; 
	//}}AFX_DATA 
 
 
// Overrides 
	// ClassWizard generated virtual function overrides 
	//{{AFX_VIRTUAL(ForLancet) 
	public: 
	virtual int DoModal(); 
	protected: 
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support 
	//}}AFX_VIRTUAL 
 
// Implementation 
protected: 
 
	// Generated message map functions 
	//{{AFX_MSG(ForLancet) 
	virtual BOOL OnInitDialog(); 
	afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar); 
	afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar); 
	afx_msg void OnChangeEdit1(); 
	afx_msg void OnGoback(); 
	afx_msg void OnAutodetect(); 
	afx_msg void OnUpdateEdit1(); 
	afx_msg void OnRadio2(); 
	afx_msg void OnRadio1(); 
	afx_msg void OnApply(); 
	virtual void OnOK(); 
	virtual void OnCancel(); 
	//}}AFX_MSG 
	DECLARE_MESSAGE_MAP() 
}; 
 
//{{AFX_INSERT_LOCATION}} 
// Microsoft Visual C++ will insert additional declarations immediately before the previous line. 
 
#endif // !defined(AFX_FORLANCET_H__127AE520_2F9A_11D4_A611_B60D0C54A405__INCLUDED_) 
// SwitchForMethod_0.h: interface for the SwitchForMethod_0 class. 
// 
////////////////////////////////////////////////////////////////////// 
 
#if !defined(AFX_SWITCHFORMETHOD_0_H__788004C0_30FA_11D4_A611_E5E166D90D0A__INCLUDED_) 
#define AFX_SWITCHFORMETHOD_0_H__788004C0_30FA_11D4_A611_E5E166D90D0A__INCLUDED_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
 
class SwitchForMethod_0  // 最大方差阈值法算法类 
{ 
public: 
	void Get_Input(float *pInput,int ElementNum); 
	int GetBestSwitchForLancet(void); 
	float Get_FangCha(void); 
	float MIU_Total_Inside; 
	float Get_MIU_Total(void); 
	float MIU_1_Inside; 
	float MIU_0_Inside; 
	BOOL Get_MIU_0_1(int Border); 
	BOOL Get_OMIGA_0_1(int Border); 
	int InputArrayElementNum; 
	float* pInputArray; 
	SwitchForMethod_0(float *pInput,int ElementNum); 
     SwitchForMethod_0(); 
	float OMIGA_1_Inside; 
	float OMIGA_0_Inside; 
	virtual ~SwitchForMethod_0(); 
 
private: 
 
}; 
 
#endif // !defined(AFX_SWITCHFORMETHOD_0_H__788004C0_30FA_11D4_A611_E5E166D90D0A__INCLUDED_) 
// QuickSort.h: interface for the QuickSort class. 
// 
////////////////////////////////////////////////////////////////////// 
 
#if !defined(AFX_QUICKSORT_H__D0A226A0_32A4_11D4_A611_DD02A1FB160A__INCLUDED_) 
#define AFX_QUICKSORT_H__D0A226A0_32A4_11D4_A611_DD02A1FB160A__INCLUDED_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
 
class QuickSort   
{ 
public: 
	BYTE GetTheMid(); 
	int InPartition(int Low,int High); 
	BOOL Sorting(int Low=0,int High=0); 
 
	BOOL GetInput(BYTE *pInput,int InputNum); 
	int InputDataNum; 
	BYTE * p_InputData; 
	QuickSort(); 
	virtual ~QuickSort(); 
 
}; 
 
#endif // !defined(AFX_QUICKSORT_H__D0A226A0_32A4_11D4_A611_DD02A1FB160A__INCLUDED_) 
#if !defined(AFX_TEXTPROGRESSCTRL_H__4C78DBBE_EFB6_11D1_AB14_203E25000000__INCLUDED_) 
#define AFX_TEXTPROGRESSCTRL_H__4C78DBBE_EFB6_11D1_AB14_203E25000000__INCLUDED_ 
 
#if _MSC_VER >= 1000 
#pragma once 
#endif // _MSC_VER >= 1000 
 
// TextProgressCtrl is a drop-in replacement for the standard  
// CProgressCtrl that displays text in a progress control. 
// 
// This code may be used in compiled form in any way you desire. This 
// file may be redistributed by any means PROVIDING it is not sold for 
// profit without the authors written consent, and providing that this 
// notice and the authors name is included. If the source code in  
// this file is used in any commercial application then an email to 
// the me would be nice. 
// 
// This file is provided "as is" with no expressed or implied warranty. 
// The author accepts no liability if it causes any damage to your 
// computer, causes your pet cat to fall ill, increases baldness or 
// makes you car start emitting strange noises when you start it up. 
// 
// Expect bugs. 
//  
// Please use and enjoy. Please let me know of any bugs/mods/improvements  
// that you have found/implemented and I will fix/incorporate them into this 
// file.  
 
///////////////////////////////////////////////////////////////////////////// 
// CTextProgressCtrl window 
 
class CTextProgressCtrl : public CProgressCtrl 
{ 
// Construction 
public: 
	CTextProgressCtrl(); 
 
// Attributes 
public: 
 
// Operations 
public: 
    int			SetPos(int nPos); 
    int			StepIt(); 
    void		SetRange(int nLower, int nUpper); 
    int			OffsetPos(int nPos); 
    int			SetStep(int nStep); 
	void		SetForeColour(COLORREF col); 
	void		SetBkColour(COLORREF col); 
	void		SetTextForeColour(COLORREF col); 
	void		SetTextBkColour(COLORREF col); 
	COLORREF	GetForeColour(); 
	COLORREF	GetBkColour(); 
	COLORREF	GetTextForeColour(); 
	COLORREF	GetTextBkColour(); 
 
    void		SetShowText(BOOL bShow); 
 
// Overrides 
	// ClassWizard generated virtual function overrides 
	//{{AFX_VIRTUAL(CTextProgressCtrl) 
	//}}AFX_VIRTUAL 
 
// Implementation 
public: 
	virtual ~CTextProgressCtrl(); 
 
	// Generated message map functions 
protected: 
    int			m_nPos,  
				m_nStepSize,  
				m_nMax,  
				m_nMin; 
    CString		m_strText; 
    BOOL		m_bShowText; 
    int			m_nBarWidth; 
	COLORREF	m_colFore, 
				m_colBk, 
				m_colTextFore, 
				m_colTextBk; 
 
	//{{AFX_MSG(CTextProgressCtrl) 
	afx_msg BOOL OnEraseBkgnd(CDC* pDC); 
	afx_msg void OnPaint(); 
	afx_msg void OnSize(UINT nType, int cx, int cy); 
	//}}AFX_MSG 
    afx_msg LRESULT OnSetText(UINT, LPCTSTR szText); 
    afx_msg LRESULT OnGetText(UINT cchTextMax, LPTSTR szText); 
 
	DECLARE_MESSAGE_MAP() 
}; 
 
///////////////////////////////////////////////////////////////////////////// 
 
//{{AFX_INSERT_LOCATION}} 
// Microsoft Developer Studio will insert additional declarations immediately before the previous line. 
 
#endif // !defined(AFX_TEXTPROGRESSCTRL_H__4C78DBBE_EFB6_11D1_AB14_203E25000000__INCLUDED_) 
#if !defined(AFX_FORSTRONGBORDER_H__54AE50E0_345D_11D4_A611_FAAD51567B04__INCLUDED_) 
#define AFX_FORSTRONGBORDER_H__54AE50E0_345D_11D4_A611_FAAD51567B04__INCLUDED_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
// ForStrongBorder.h : header file 
// 
 
///////////////////////////////////////////////////////////////////////////// 
// ForStrongBorder dialog 
 
class ForStrongBorder : public CDialog 
{ 
// Construction 
public: 
	BOOL GetExplainText(void); 
	char Explain_Txt[6][400]; 
	ForStrongBorder(CWnd* pParent = NULL);   // standard constructor 
 
// Dialog Data 
	//{{AFX_DATA(ForStrongBorder) 
	enum { IDD = IDD_FOR_STRONG_BORDER }; 
	CString	m_Explain; 
	int		m_StrongMethod; 
	//}}AFX_DATA 
 
 
// Overrides 
	// ClassWizard generated virtual function overrides 
	//{{AFX_VIRTUAL(ForStrongBorder) 
	protected: 
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support 
	//}}AFX_VIRTUAL 
 
// Implementation 
protected: 
 
	// Generated message map functions 
	//{{AFX_MSG(ForStrongBorder) 
	virtual BOOL OnInitDialog(); 
	afx_msg void OnForStrongBorderRadio1(); 
	afx_msg void OnRadio2(); 
	afx_msg void OnRadio3(); 
	afx_msg void OnRadio4(); 
	virtual void OnOK(); 
	//}}AFX_MSG 
	DECLARE_MESSAGE_MAP() 
}; 
 
//{{AFX_INSERT_LOCATION}} 
// Microsoft Visual C++ will insert additional declarations immediately before the previous line. 
 
#endif // !defined(AFX_FORSTRONGBORDER_H__54AE50E0_345D_11D4_A611_FAAD51567B04__INCLUDED_) 
#if !defined(AFX_PARA_DETECT_H__C1FDE280_3711_11D4_8C58_F0EDAD977201__INCLUDED_) 
#define AFX_PARA_DETECT_H__C1FDE280_3711_11D4_8C58_F0EDAD977201__INCLUDED_ 
 
#include "ForStep.h"	// Added by ClassView 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
// Para_Detect.h : header file 
// 
 
///////////////////////////////////////////////////////////////////////////// 
// Para_Detect dialog 
 
class Para_Detect : public CDialog 
{ 
// Construction 
public: 
	int JingLiDu_Detect_Mode; 
	ForStep *pForStep; 
	int AreaPoint[66000]; 
	int Detecting_Area; 
	void DrawRect(CDC* pDc,RECT TheRect,COLORREF PenColor); 
	void Init_BuJunYunDu_Detecting_Area(); 
	RECT Area[4]; 
	int DetectingTimes; 
	float BuJunYunDu_Array[4]; 
	CProgressCtrl *pProg; 
	BOOL DrawLine(CDC *pDc,POINT P1,POINT P2,COLORREF color=RGB(256,256,256)); 
 
	BOOL BorDerDetect(RECT *pInput_=NULL); 
	BOOL IsDetectBegin; 
	int WhichGray; 
	BOOL IsSelected_Ok; 
 
	BOOL FlashingData(void); 
    char CaiYangFanWei_Txt[2][10]; 
	BOOL IsShowed; 
	CWnd *pTheParent; 
	Para_Detect(CWnd* pParent = NULL);   // standard constructor 
 
// Dialog Data 
	//{{AFX_DATA(Para_Detect) 
	enum { IDD = IDD_DETECT_PARAMETER }; 
	float	m_ShiTuBeiLv; 
	float	m_ChengXiangBeiLv; 
	CString	m_CaiYangFanWei; 
	float	m_HaoMiDianShu; 
	float	m_YuanTuChiCun_X; 
	float	m_YuanTuChiCun_Y; 
	float	m_TiJiFenShu; 
	float	m_JingLiDu; 
	float	m_LiZiJianJu; 
	float	m_LiZiZhiJin; 
	//}}AFX_DATA 
 
 
// Overrides 
	// ClassWizard generated virtual function overrides 
	//{{AFX_VIRTUAL(Para_Detect) 
	protected: 
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support 
	virtual void PostNcDestroy(); 
	//}}AFX_VIRTUAL 
 
// Implementation 
protected: 
 
	// Generated message map functions 
	//{{AFX_MSG(Para_Detect) 
	virtual BOOL OnInitDialog(); 
	virtual void OnCancel(); 
	afx_msg void OnButtonFlash(); 
	afx_msg void OnButtonAutoDetect(); 
	afx_msg void OnChangeEditChengxiangbeilv(); 
	afx_msg void OnChangeEditYuantuchicunX(); 
	afx_msg void OnChangeEditYuantuchicunY(); 
	afx_msg void OnButtonTijifengshu(); 
	afx_msg void OnButtonJinglidu(); 
	afx_msg void OnButtonLizijianju(); 
	afx_msg void OnButtonBujunyunduDetail(); 
	afx_msg void OnButtonBujunyundu(); 
	afx_msg void OnButtonLizizhijing(); 
	afx_msg void OnMove(int x, int y); 
	//}}AFX_MSG 
	DECLARE_MESSAGE_MAP() 
}; 
 
//{{AFX_INSERT_LOCATION}} 
// Microsoft Visual C++ will insert additional declarations immediately before the previous line. 
 
#endif // !defined(AFX_PARA_DETECT_H__C1FDE280_3711_11D4_8C58_F0EDAD977201__INCLUDED_) 
// Image_Identify.h: interface for the Image_Identify class. 
// 
////////////////////////////////////////////////////////////////////// 
 
#if !defined(AFX_IMAGE_IDENTIFY_H__9B3DF120_3ECE_11D4_8C58_E76E1044BE02__INCLUDED_) 
#define AFX_IMAGE_IDENTIFY_H__9B3DF120_3ECE_11D4_8C58_E76E1044BE02__INCLUDED_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
#include "BmpDef.h" 
class Image_Identify   
{ 
public: 
	int ForProcessBufferSize; 
	BOOL IsHole(); 
	void GetLineColRange(int & Start,int &End,int Line); 
	void Get_Left_Top_And_Right_Bottom(RECT &L_T_AND_R_B); 
	int GetAcreagePointNum(void); 
	int BorderDetect_For_LiZiZhiJing(RECT *pInput_=NULL,int IsFor_Left_Top_Out=0,int IsDrawing=1,int BorderGray=0,int BkGray=255); 
	void Swap_int(int& x1,int& x2); 
	int BorderDetect_For_Lizijianju(POINT Start,POINT End,RECT *pInput_=NULL,int IsDrawing=0,int BorderGray=0,int BkGray=255); 
	BOOL Is_BetweenTwo(int x1,int x2,int in); 
	BOOL Is_InLine(POINT Start,POINT End); 
	BOOL Is_InSidePoint_For_4(int x,int y,int Out=255); 
	BOOL IsOutOfLeft_Top(RECT RectIn); 
	int ObjectNum; 
	BOOL CopyToForProcess(); 
	BYTE* pForProcess_bit; 
	WORD *pForProcess; 
	void DrawBorder(); 
	BOOL Is_InSidePoint(int x,int y,int Out=255); 
	BOOL SetPointGray(int Col,int Line,int SetGray); 
    int StartNeighbour,NowNeighbour; 
	BOOL Detecting(RECT RectIn_,int x,int y,int *pReturnValue=NULL,int IsFor_Let_Top_Out=1,int TheBorderGray=0,int BkGray=255); 
	int BorderFlagGray; 
	POINT EndPoint; 
	int NowPointNum; 
	int PointGray(int x,int y); 
	POINT Order[8]; 
	BOOL BorderDetect(RECT *pInput_=NULL,int IsFor_Left_Top_Out=1,int IsDrawing=1,int BorderGray=0,int BkGray=255); 
	BOOL GetNormalInfo(BMPInfoHeader Info_In,BYTE *pBitsData); 
	BMPInfoHeader InfoHeader; 
	BYTE *pBits; 
	int Buffer_Point_Num; 
	BYTE * pBorderPositionBuffer; 
	Image_Identify(); 
	virtual ~Image_Identify(); 
 
}; 
 
#endif // !defined(AFX_IMAGE_IDENTIFY_H__9B3DF120_3ECE_11D4_8C58_E76E1044BE02__INCLUDED_) 
#if !defined(AFX_BRIGHTADJUST_H__2C6C87E0_3FF3_11D4_8C58_954239BDC803__INCLUDED_) 
#define AFX_BRIGHTADJUST_H__2C6C87E0_3FF3_11D4_8C58_954239BDC803__INCLUDED_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
// BrightAdjust.h : header file 
// 
 
///////////////////////////////////////////////////////////////////////////// 
// BrightAdjust dialog 
 
class BrightAdjust : public CDialog 
{ 
// Construction 
public: 
	CSliderCtrl *pSlider_; 
 
	CSpinButtonCtrl* pSpin_; 
 
	BrightAdjust(CWnd* pParent = NULL);   // standard constructor 
 
// Dialog Data 
	//{{AFX_DATA(BrightAdjust) 
	enum { IDD = IDD_FOR_BRIGHT_ADJUST }; 
	int		m_Adjust_Num; 
	BOOL	m_IsPreview; 
	//}}AFX_DATA 
 
 
// Overrides 
	// ClassWizard generated virtual function overrides 
	//{{AFX_VIRTUAL(BrightAdjust) 
	protected: 
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support 
	//}}AFX_VIRTUAL 
 
// Implementation 
protected: 
 
	// Generated message map functions 
	//{{AFX_MSG(BrightAdjust) 
	afx_msg void OnPreview(); 
	virtual BOOL OnInitDialog(); 
	afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar); 
	afx_msg void OnChangeEdit1(); 
	virtual void OnOK(); 
	virtual void OnCancel(); 
	afx_msg void OnReturn(); 
	//}}AFX_MSG 
	DECLARE_MESSAGE_MAP() 
}; 
 
//{{AFX_INSERT_LOCATION}} 
// Microsoft Visual C++ will insert additional declarations immediately before the previous line. 
 
#endif // !defined(AFX_BRIGHTADJUST_H__2C6C87E0_3FF3_11D4_8C58_954239BDC803__INCLUDED_) 
#if !defined(AFX_FORTIMESELECT_H__09A1A660_45AB_11D4_A611_A34563461008__INCLUDED_) 
#define AFX_FORTIMESELECT_H__09A1A660_45AB_11D4_A611_A34563461008__INCLUDED_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
// ForTimeSelect.h : header file 
// 
 
///////////////////////////////////////////////////////////////////////////// 
// ForTimeSelect dialog 
 
class ForTimeSelect : public CDialog 
{ 
// Construction 
public: 
	ForTimeSelect(CWnd* pParent = NULL);   // standard constructor 
    CSpinButtonCtrl* pSpin_; 
// Dialog Data 
	//{{AFX_DATA(ForTimeSelect) 
	enum { IDD = IDD_SELLECT_TIMES }; 
	int		m_Times; 
	//}}AFX_DATA 
 
 
// Overrides 
	// ClassWizard generated virtual function overrides 
	//{{AFX_VIRTUAL(ForTimeSelect) 
	protected: 
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support 
	//}}AFX_VIRTUAL 
 
// Implementation 
protected: 
 
	// Generated message map functions 
	//{{AFX_MSG(ForTimeSelect) 
	virtual BOOL OnInitDialog(); 
	afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar); 
	virtual void OnOK(); 
	//}}AFX_MSG 
	DECLARE_MESSAGE_MAP() 
}; 
 
//{{AFX_INSERT_LOCATION}} 
// Microsoft Visual C++ will insert additional declarations immediately before the previous line. 
 
#endif // !defined(AFX_FORTIMESELECT_H__09A1A660_45AB_11D4_A611_A34563461008__INCLUDED_) 
 
void Swap_long(long &x1,long &x2) 
{ 
  int tmp=x1; 
  x1=x2; 
  x2=tmp; 
  return; 
}#if !defined(AFX_FOR_BUJUNYUNDU_DETAIL_H__09A1A662_45AB_11D4_A611_A34563461008__INCLUDED_) 
#define AFX_FOR_BUJUNYUNDU_DETAIL_H__09A1A662_45AB_11D4_A611_A34563461008__INCLUDED_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
// For_BuJunYunDu_Detail.h : header file 
// 
 
///////////////////////////////////////////////////////////////////////////// 
// For_BuJunYunDu_Detail dialog 
 
class For_BuJunYunDu_Detail : public CDialog 
{ 
// Construction 
public: 
	For_BuJunYunDu_Detail(CWnd* pParent = NULL);   // standard constructor 
 
// Dialog Data 
	//{{AFX_DATA(For_BuJunYunDu_Detail) 
	enum { IDD = IDD_FOR_DETAIL }; 
	float	m_BuJunYunDu1; 
	float	m_BuJunYunDu2; 
	float	m_BuJunYunDu3; 
	float	m_BuJunYunDu4; 
	//}}AFX_DATA 
 
 
// Overrides 
	// ClassWizard generated virtual function overrides 
	//{{AFX_VIRTUAL(For_BuJunYunDu_Detail) 
	protected: 
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support 
	//}}AFX_VIRTUAL 
 
// Implementation 
protected: 
 
	// Generated message map functions 
	//{{AFX_MSG(For_BuJunYunDu_Detail) 
	virtual BOOL OnInitDialog(); 
	virtual void OnOK(); 
	afx_msg void OnViewArea(); 
	//}}AFX_MSG 
	DECLARE_MESSAGE_MAP() 
}; 
 
//{{AFX_INSERT_LOCATION}} 
// Microsoft Visual C++ will insert additional declarations immediately before the previous line. 
 
#endif // !defined(AFX_FOR_BUJUNYUNDU_DETAIL_H__09A1A662_45AB_11D4_A611_A34563461008__INCLUDED_) 
#if !defined(AFX_FOR_DETECTING_AREA_SELECT_H__84FE2B80_461E_11D4_A611_E397C1AA2608__INCLUDED_) 
#define AFX_FOR_DETECTING_AREA_SELECT_H__84FE2B80_461E_11D4_A611_E397C1AA2608__INCLUDED_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
// For_Detecting_Area_Select.h : header file 
// 
 
///////////////////////////////////////////////////////////////////////////// 
// For_Detecting_Area_Select dialog 
 
class For_Detecting_Area_Select : public CDialog 
{ 
// Construction 
public: 
	For_Detecting_Area_Select(CWnd* pParent = NULL);   // standard constructor 
 
// Dialog Data 
	//{{AFX_DATA(For_Detecting_Area_Select) 
	enum { IDD = IDD_FOR_DETECTING_AREA_SELECT }; 
	int		m_Detecting_Area; 
	//}}AFX_DATA 
 
 
// Overrides 
	// ClassWizard generated virtual function overrides 
	//{{AFX_VIRTUAL(For_Detecting_Area_Select) 
	protected: 
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support 
	//}}AFX_VIRTUAL 
 
// Implementation 
protected: 
 
	// Generated message map functions 
	//{{AFX_MSG(For_Detecting_Area_Select) 
	virtual BOOL OnInitDialog(); 
	virtual void OnOK(); 
	//}}AFX_MSG 
	DECLARE_MESSAGE_MAP() 
}; 
 
//{{AFX_INSERT_LOCATION}} 
// Microsoft Visual C++ will insert additional declarations immediately before the previous line. 
 
#endif // !defined(AFX_FOR_DETECTING_AREA_SELECT_H__84FE2B80_461E_11D4_A611_E397C1AA2608__INCLUDED_) 
#if !defined(AFX_FORSTEP_H__D39608E0_4645_11D4_A611_95C7A92B1B08__INCLUDED_) 
#define AFX_FORSTEP_H__D39608E0_4645_11D4_A611_95C7A92B1B08__INCLUDED_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
// ForStep.h : header file 
// 
 
///////////////////////////////////////////////////////////////////////////// 
// ForStep dialog 
 
class ForStep : public CDialog 
{ 
// Construction 
public: 
	CString StepTxt[6]; 
	ForStep(CWnd* pParent = NULL);   // standard constructor 
 
// Dialog Data 
	//{{AFX_DATA(ForStep) 
	enum { IDD = IDD_FOR_STEP }; 
	CString	m_Step_Text; 
	//}}AFX_DATA 
 
 
// Overrides 
	// ClassWizard generated virtual function overrides 
	//{{AFX_VIRTUAL(ForStep) 
	protected: 
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support 
	virtual void PostNcDestroy(); 
	//}}AFX_VIRTUAL 
 
// Implementation 
protected: 
 
	// Generated message map functions 
	//{{AFX_MSG(ForStep) 
	virtual BOOL OnInitDialog(); 
	//}}AFX_MSG 
	DECLARE_MESSAGE_MAP() 
}; 
 
//{{AFX_INSERT_LOCATION}} 
// Microsoft Visual C++ will insert additional declarations immediately before the previous line. 
 
#endif // !defined(AFX_FORSTEP_H__D39608E0_4645_11D4_A611_95C7A92B1B08__INCLUDED_) 
#if !defined(AFX_FOR_JINLIDU_MODE_H__8F9749A0_467D_11D4_A611_CB8142727708__INCLUDED_) 
#define AFX_FOR_JINLIDU_MODE_H__8F9749A0_467D_11D4_A611_CB8142727708__INCLUDED_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
// For_JinLiDu_Mode.h : header file 
// 
 
///////////////////////////////////////////////////////////////////////////// 
// For_JinLiDu_Mode dialog 
 
class For_JinLiDu_Mode : public CDialog 
{ 
// Construction 
public: 
	For_JinLiDu_Mode(CWnd* pParent = NULL);   // standard constructor 
 
// Dialog Data 
	//{{AFX_DATA(For_JinLiDu_Mode) 
	enum { IDD = IDD_FOR_JINLIDU_SELECT }; 
	int		m_Mode; 
	//}}AFX_DATA 
 
 
// Overrides 
	// ClassWizard generated virtual function overrides 
	//{{AFX_VIRTUAL(For_JinLiDu_Mode) 
	protected: 
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support 
	//}}AFX_VIRTUAL 
 
// Implementation 
protected: 
 
	// Generated message map functions 
	//{{AFX_MSG(For_JinLiDu_Mode) 
	virtual BOOL OnInitDialog(); 
	virtual void OnOK(); 
	//}}AFX_MSG 
	DECLARE_MESSAGE_MAP() 
}; 
 
//{{AFX_INSERT_LOCATION}} 
// Microsoft Visual C++ will insert additional declarations immediately before the previous line. 
 
#endif // !defined(AFX_FOR_JINLIDU_MODE_H__8F9749A0_467D_11D4_A611_CB8142727708__INCLUDED_)