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

📄 changeformatdlg.h

📁 自己写的文件对话框操作程序
💻 H
字号:
// ChangeFormatDlg.h : header file
//

#if !defined(AFX_CHANGEFORMATDLG_H__04D422C5_F880_4CEB_8FC1_2D762BC822BB__INCLUDED_)
#define AFX_CHANGEFORMATDLG_H__04D422C5_F880_4CEB_8FC1_2D762BC822BB__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <vector>
using std::vector;
/////////////////////////////////////////////////////////////////////////////
// CChangeFormatDlg dialog
#define MAXCHANNALNUM  99
class CChangeFormatDlg : public CDialog
{
// Construction
public:
	CChangeFormatDlg(CWnd* pParent = NULL);	// standard constructor
	~CChangeFormatDlg();
	void Serialize(CArchive& ar);

// Dialog Data
	//{{AFX_DATA(CChangeFormatDlg)
	enum { IDD = IDD_CHANGEFORMAT_DIALOG };
		// NOTE: the ClassWizard will add data members here
	//}}AFX_DATA

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

// Implementation
protected:
	HICON m_hIcon;
	CString m_szFileName;	// 记录当前文件名称
	CString m_szExt;		// 记录当前文件后缀
	CString m_szFileSrcName;	// 记录源文件名称(全路径)
	CString m_szFileSaveName;	// 记录文件保存名称(全路径)
	BOOL m_bModified;		// 文件修改标记
	CMenu* m_pMenu;			// 记录对话框菜单

	struct Data //数据存储
	{
		float fX;
		float fY;
	};

	typedef struct Channal  
	{
		vector<Data>	nData;     //数据
		int	nCount;    //数据个数
		int nWidth;    //线条宽度
		
		BOOL  bShow;     //False-不显示  True-显示			
		BOOL  nFlag;     //有没有数据
		BOOL  dShutter;  //Shutter 0开 1关
		
		double	dStartWL;  //起始波长
		double	dEndWL;    //终止波长
		double  nScanSpeed;//扫描速度
		double  nDelay;    //时间延时
		double  nResponce; //响应时间
		double  nExSlit;   //Ex slit
		double  nEmSlit;   //Em Slit
		double  nFute;     //电压
		double  dExwl;     //EX WL
		double  dInterv;   //jiange
		
		COLORREF  nColor;    //线条颜色
		CString	  nScanMode; //扫描模式
		CString   mDataMode; //数据模式
		CString	  strTitle;  //图谱的名称
        CString   dComment;  //谱图介绍



		// 时间扫描里的数据
		double          dPrecision;
		double          dActivity; //活动性

	}WL_TE_ChannalInfo;

	WL_TE_ChannalInfo m_Channal;


	typedef struct PH_Channal
	{
		double m_dK1; //拟合系数
		double m_dK2;      
		double m_dK3;      
		double m_dK4;      
		
		double	m_dMaxX; //坐标轴最值
		double	m_dMinX;   
		double	m_dMaxY;   
		double	m_dMinY;   
		
		double m_pRightx; //拟合后画线使用
		double m_pLeftx;    
		
		double m_dXIntvl; //坐标轴间隔
		double m_dYIntvl;   
		
		int TestType;       //拟合方式 1-线性 2-二次三项式 3-三次多项式 4-折线
		int TestMethod;     //测量方法 0-波长扫描 1-峰面积 2-峰高 3-倒数 4-比例
		int TestMethodType; //记录波长扫描时的测量点数  最多六个点
		int ColumType;      //数据形式 0激发固定 1发射固定 2都不固定
		
		double StandardTestEX[6]; //存储EX
		double StandardTestEM[6]; //存储EM
		double StandardGudingEX;  //激发固定
		double StandardGudingEM;  //发射固定
		double m_dINCStandardSampleCal[20];			
		double m_dINCStandardSampleEnergy[20];		
		
		int nCurView;    //显示View类型 0 单个View 1两个View 2四个View
		CRect rDC;
		int m_nHandTest;  //0不是手动测量 TRUE手动测量
		BOOL m_nthroghZero; //强制过零
		int nStandardCount; //标准样品数组个数
		int nStandardrealCount;//实际侧的标准样品的个数 
		int nSampleTestCount;//样品数组个数
		BOOL nStandardisZeng;//标样顺序false 增  true 减
		
		struct TestData //数据结构
		{
			double dX;
			double dY;
		};
		
		typedef struct SampleChannal//样品信息
		{
			double nSv;//变异系数
			double nSD;//标准偏差
			double nPingjunnongdu;//平均浓度
			double nBianyixishu;  //变异系数
			double nT;            //T
			double nRd;           //RD
			double nDiff;         //未知
			double nR;            //已算出  
			double nR2;           //已算出
			double dTestnum;      //测量数据
			double dTestConc;     //测量数据
			vector<TestData> m_vecSamplePoint;//波长模式下用来存储测量数据
			int	nCount;           //数据个数
			CString	strTitle;     //图谱的名称
			CString SampleComment;//样品
			CString m_curOperator;// 操作员
			
		}m_nSampleChannal;
		m_nSampleChannal nSampleChannal[MAXCHANNALNUM];
		
		typedef struct StandardChannal //以下是存储样标准品数据
		{
			double nPingjunnongdu;
			
			double nBianyixishu;  //变异系数
			double nT;            //T
			double nRd;           //RD
			double nDiff;         //未知
			double nR;            //已算出
			double nR2;           //已算出
			double dTestnum;      //标准数据
			double dTestConc;     //标准数据
			vector<TestData> m_vecSamplePoint;//波长模式下用来存储测量数据
			int    	nCount;       //数据个数
			CString	strTitle;     //图谱的名称
			CString SampleComment;//样品		
		}m_nStandardChannal;
		m_nStandardChannal nStandardChannal[MAXCHANNALNUM];
		
		BOOL nStandardHasbeenTest[20];//用来判断标准样品是否测量过(false 没侧 true已测)
		
		//以下是打印信息
		LOGFONT m_dPrintFontSet;       //打印字体
		BOOL pIncludedata;             //打印数据
		BOOL pIncludeMethod;           //打印方法
		BOOL pIncludecalibrationmethod;//打印采数方法
		BOOL pIncludestandards;        //打印标准
		BOOL pIncludecalibration;      //打印采集数据
		BOOL pIncludeSample;           //打印样品数据
		BOOL pIncludestandardcomment;  //打印标准样品信息
		BOOL pIncludesamplecomment;    //打印样品信息
		
		BOOL nZhijiedayin;//是否直接打印
	}PH_ChannalInfo;

	PH_ChannalInfo m_PH_Channal;

	typedef struct TD_Channal
	{
		CRect rDC;//打印时用到
		BOOL init; //等高线存储完成
		//以下部分是用来存储等高线 和对应颜色
		struct LineData 
		{
			float fX; //--发射波长 
			float fY; //--激发波长
		};
		struct LineColor 
		{
			vector<LineData> LineNum;//--每条等高线的数据  
			int Colorred;   //--颜色1
			int Colorgreen; //--颜色2
			int Colorblue ; //--颜色3
		};
		vector<LineColor>	LineNumData;
		//以下是信息设置(待做)(注:里面变量已经启用)
		struct  DisplayConfig  
		{
			BOOL   m_dTarceShow;  //---是否是查找模式(这里一直都是真的状态,保持查找模式) 
			BOOL   m_dGridShow;   //---是否显示网格
			int    m_dGridType;   //---显示网各类型
			int    m_denggao; //等高等分
			double m_dMaxX;	  //---X轴的最大值
			double m_dMinX;	  //---X轴的最小值
			double m_dMaxY;	  //---Y轴的最大值 
			double m_dMinY;   //---Y轴的最小值
			double m_dMaxZ;   //---z轴的最大值  
			double m_dMinZ;   //---z轴的最小值

			double m_dIntMaxX;	//---X轴的最大值
			double m_dIntMinX;	//---X轴的最小值
			double m_dIntMaxY;	//---Y轴的最大值 
			double m_dIntMinY;  //---Y轴的最小值
			double n_dIntMaxZ;  //---Z轴最大值
			double m_dIntMinZ;  //---Z轴最小值

			int    m_dAxisType; //---坐标轴的间隔方式(没用)
			double m_dXIntvl;   //---X轴间隔
			double m_dYIntvl;   //---Y轴间隔
			LOGFONT m_dFontSet; //---字体
			
			int       m_dSpectra;     //---谱图       //========未做
			int       m_nLineWidth;   //---线宽             
			COLORREF  m_strKeduColor; //---线条颜色
			
			int       m_dDisplaySpectra; //----选择的谱图
			CString   m_dSpectraName;    //----谱图名称
			CString   m_dSpectraInfo;    //----谱图描述
			CString   m_dOperator;       //----用户信息
			CString   m_dModel;          //----模式
			
			int       m_dPage7Spectra;    //---选择的谱图
			int       m_dPage7Processing; //---检峰方式
			int       m_dPage7Method;     //---方式
			double    m_dSensitivity;     //---灵敏度
			double    m_dThreshold;       //---阈值

			BOOL m_nPrintPutu;
			BOOL m_nTestMethord;
			
		}m_DisplayConfig;

		//打印设置信息
		LOGFONT m_dPrintFontSet;  //打印字体
		BOOL pMethod;        //方法
		BOOL pGraph;         //图

		double m_3DEX_Start_WL;	   //--- 激发光起始波长
		double m_3DEX_End_WL;	   //--- 激发光终止波长
		double m_3DEX_Interval_WL; //--- 激发波长间隔(计算峰高需要的间隔)

		double m_3DEM_Start_WL;	   //--- 发射光起始波长
		double m_3DEM_End_WL;	   //--- 发射光终止波长
		double m_3DEM_Interval_WL; //--- 发射波长间隔
		double m_3DEM_inter;       //--- 激发波长的实际测量时的间隔

		double **m_p3DData;		   //--- 记录3D扫描数据
		int *m_3DPointNum;		   //--- 记录每条曲线上的点数
		int m_3DNumPerNM;		   //--- 每纳米采集数据的点数,由采集速度参数决定
		int m_3DRealCurveNum;//实际扫描的点数	
		BOOL m_nZhijiedayin;
		CString Oper;              //---操作者
		CString spectraname;       //---名称   
		CString Comment;           //---介绍
		CString Instrument;        //---仪器
		CString Measurement;       //---测量方法
		double speed;              //---扫描速度
		double EX_Slit;            //---激发狭峰 
		double EM_Slit;            //---发射狭峰 
		double Voltage;            //---电压
		BOOL spectra_correct;      //---谱图校正 
		BOOL shutter;              //---斩波(0关1开)

		int exnum; //---激发波长数
		int emnum; //---发射波长数

		double m_dMaxX;	   //---寄存器,表示当前的显示区域
		double m_dMaxY;
		double m_dMinY;
		double m_dMinX;
		double m_dMaxZ;
		double m_dMinZ;

		double emwl;  //---查找用
		double exwl;  //---查找用
	}TD_ChannalInfo;
	
	TD_ChannalInfo m_TD_Channal;


	// 打开文件对话框
	BOOL DoPromptFileName(CString& fileName, UINT nIDSTitle, DWORD lFlags, BOOL bOpenFileDialog);

	// 打开文件
	BOOL OnOpenDocument(LPCTSTR lpszPathName);
	
	// 保存文件
	BOOL OnSaveDocument(LPCTSTR lpszPathName);

	// 设置文件修改标记
	void SetModifiedFlag(BOOL bModified = TRUE);
	
	void ReleaseFile(CFile* pFile, BOOL bAbort);
	
	void ReportSaveLoadException(LPCTSTR lpszPathName,
		CException* e, BOOL bSaving, UINT nIDPDefault);
	
	void CChangeFormatDlg::SetPathName(LPCTSTR lpszPathName);

	// 格式转换
	void WL_Serialize(CArchive& ar);	// 波长
	void TE_Serialize(CArchive& ar);	// 时间
	void PH_Serialize(CArchive& ar);	// 光度值
	void TD_Serialize(CArchive& ar);	// 三维
	

	// Generated message map functions
	//{{AFX_MSG(CChangeFormatDlg)
	virtual BOOL OnInitDialog();
	afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	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_CHANGEFORMATDLG_H__04D422C5_F880_4CEB_8FC1_2D762BC822BB__INCLUDED_)

⌨️ 快捷键说明

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