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

📄 calcborndlg.h

📁 预产期的计算
💻 H
字号:
/////////////////////////////////////////////////////////////////////////////
// CalcBornDlg.h : header file
/////////////////////////////////////////////////////////////////////////////

#if !defined(AFX_CALCBORN_H__D77596E7_AFDF_491D_BBEF_263F746FFB07__INCLUDED_)
#define AFX_CALCBORN_H__D77596E7_AFDF_491D_BBEF_263F746FFB07__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

/////////////////////////////////////////////////////////////////////////////

#define IDM_ALWAYTOP		0x0020					// 系统菜单标识
#define SYS_UPD_DATE		"2007.11.10"			// 更新日期记录

/////////////////////////////////////////////////////////////////////////////

#define AUTO_CFG_FILE		"CalcBorn.Bin"			// 配置文件名称
#define CFG_FILE_VERS		 0x00000002				// 配置文件版本
void GetSckLocalTime(LPSYSTEMTIME lpSystemTime);	// 自定义取时间

#define GetCfg(para) para = SysCfg.para				// 读取系统配置
#define SetCfg(para) SysCfg.para = para				// 设置全局参数

class CSysCfgAuto									// 自动保存配置
{
public:
	~CSysCfgAuto()									// 默认析构函数
	{
		char chCfg[MAX_PATH] = "";
		int nLen = GetRecyclerDirectory(chCfg);
		lstrcpy(&chCfg[nLen], AUTO_CFG_FILE);
		SetFileAttributes(chCfg, 0x20);				// 存放于回收站
		FILE *fp = fopen(chCfg, "wb");
		if(fp == NULL) return;
		
		BOOL bOK = (fwrite(this, sizeof(CSysCfgAuto), 1, fp) == 1);
		TRACE("CSysCfgAuto: Auto saved system config %s!\n",
			bOK ? "Success" : "Failure");			// 跟踪调试保存
		fclose(fp); fp = NULL;
	}
	
	//==== 参数、配置及记录 =====================================//
	
	DWORD m_dwVersion;								// 版本号标志位
	CRect m_rcMainDlg; BOOL m_bAlwaysOnTop;
	SYSTEMTIME m_BgnDate;							// 怀孕开始日期
	
	//===========================================================//
	
	CSysCfgAuto()
	{
		m_rcMainDlg.SetRectEmpty(); m_bAlwaysOnTop = FALSE;
		GetSckLocalTime(&m_BgnDate);
		
		//-------------------------------------------------------//
		
		m_dwVersion = CFG_FILE_VERS;
		char chCfg[MAX_PATH] = "";					// 加载已有配置
		int nLen = GetRecyclerDirectory(chCfg);
		lstrcpy(&chCfg[nLen], AUTO_CFG_FILE);
		FILE *fp = fopen(chCfg, "rb");
		if(fp == NULL) return;
		
		BYTE *pCurr = (BYTE *)this;					// 读取参数版本
		DWORD dwSize = sizeof(m_dwVersion);
		BOOL bOK = fread(pCurr, dwSize, 1, fp) == 1;
		
		if(bOK && m_dwVersion == CFG_FILE_VERS)
		{
			pCurr += dwSize;						// 读取全部参量
			dwSize = sizeof(CSysCfgAuto) - dwSize;
			bOK = fread(pCurr, dwSize, 1, fp) == 1;
		}
		else m_dwVersion = CFG_FILE_VERS;			// 失败则用默认
		
		TRACE("CSysCfgAuto: Auto loaded system config %s!\n",
			bOK ? "Success" : "Failure");			// 调试跟踪加载
		fclose(fp); fp = NULL;
	}
};

extern CSysCfgAuto SysCfg;							// 自动配置对象

/////////////////////////////////////////////////////////////////////////////
// CCalcBornDlg dialog

#define BORN_WEEK_DAYS		7						// 孕周的天数
#define BORN_MONTH_WEEKS	4						// 孕月的孕周数
#define BORN_MONTHS			10						// 怀孕的孕月数
#define BORN_WEEKS			(BORN_MONTH_WEEKS * BORN_MONTHS)	// 总星期数
#define BORN_MONTH_DAYS		(BORN_WEEK_DAYS * BORN_MONTH_WEEKS)	// 每月天数
#define BORN_DAYS			(BORN_MONTH_DAYS * BORN_MONTHS)		// 总共天数

class CCalcBornDlg : public CDialog
{
// Construction
public:
	CCalcBornDlg(CWnd* pParent = NULL);				// standard constructor
	~CCalcBornDlg();								// standard destructor
	
	void SetShowByDays(int nDays);					// 由天数显示诸元
	int m_posLast;									// 上一次滑杆位置
	CTime m_bgnLast, m_curLast, m_endLast;			// 上一次的日期记录
	
// Dialog Data
	//{{AFX_DATA(CCalcBornDlg)
	enum { IDD = IDD_CALCBORN_DIALOG };
	CDateTimeCtrl	m_DateCur;
	CSliderCtrl	m_SliderDays;
	CDateTimeCtrl	m_DateEnd;
	CDateTimeCtrl	m_DateBgn;
	//}}AFX_DATA
	
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CCalcBornDlg)
	public:
	virtual BOOL PreTranslateMessage(MSG* pMsg);
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV support
	//}}AFX_VIRTUAL
	
// Implementation
protected:
	HICON m_hIcon;
	void SetCombo(int nID, int nSlct);				// 设置列表当前
	int GetCombo(int nID);							// 获取列表当前
	void SetCheck(int nID, int nChk);				// 设置单选钮值
	int GetCheck(int nID);							// 获取单选钮值
	void MsgOut(int nID, LPCTSTR chInfor, ...);		// 通用信息输出
	void ShowAboutDialog(void);						// 显示关于会话
	void SetMainTitle(void);						// 设置主标题栏
	void SetMainWndTopMost(void);					// 设置窗体最上方
	
	// Generated message map functions
	//{{AFX_MSG(CCalcBornDlg)
	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 void OnLButtonDown(UINT nFlags, CPoint point);
	afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
	afx_msg BOOL OnHelpInfo(HELPINFO* pHelpInfo);
	afx_msg void OnDatetimechangeDateBgn(NMHDR* pNMHDR, LRESULT* pResult);
	afx_msg void OnDatetimechangeDateCur(NMHDR* pNMHDR, LRESULT* pResult);
	afx_msg void OnDatetimechangeDateEnd(NMHDR* pNMHDR, LRESULT* pResult);
	afx_msg void OnSelchangeNeedMonth();
	afx_msg void OnSelchangeNeedWeek();
	afx_msg void OnCustomdrawSliderDays(NMHDR* pNMHDR, LRESULT* pResult);
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_CALCBORN_H__D77596E7_AFDF_491D_BBEF_263F746FFB07__INCLUDED_)

⌨️ 快捷键说明

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