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

📄 timerpage.cpp

📁 个人计算机定时自动执行软件,是 一个值得看看的程序。
💻 CPP
字号:
// TimerPage.cpp : implementation file
//

#include "stdafx.h"
#include "clock.h"
#include "TimerPage.h"

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

/////////////////////////////////////////////////////////////////////////////
// CTimerPage property page

IMPLEMENT_DYNCREATE(CTimerPage, CPropertyPage)

CTimerPage::CTimerPage() : CPropertyPage(CTimerPage::IDD)
{
	//{{AFX_DATA_INIT(CTimerPage)
	m_using = TRUE;//check框打勾
	m_topic = _T("");
	m_books = 0;
	m_mode = 0;
	m_message = _T("");
	m_place = _T("");
	m_cycletime = 0;
	//}}AFX_DATA_INIT

	m_isActive=FALSE;
	//结构初始化
	memset((void*)&m_mission,0,sizeof(MISSION));
	m_mission.set_using=1;

}

CTimerPage::~CTimerPage()
{
}

void CTimerPage::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CTimerPage)
	DDX_Control(pDX, IDC_SET_TIME, m_time);
	DDX_Control(pDX, IDD_SET_IMAGE, m_ctrlImage);
	DDX_Control(pDX, IDC_SET_BOOKS, m_ctrlBooks);
	DDX_Control(pDX, IDC_SET_DATE, m_date);
	DDX_Control(pDX, IDC_SET_WEEKS, m_weeks);
	DDX_Check(pDX, IDC_SET_USING, m_using);
	DDX_Text(pDX, IDC_SET_TOPIC, m_topic);
	DDX_CBIndex(pDX, IDC_SET_BOOKS, m_books);
	DDX_CBIndex(pDX, IDC_SET_MODE, m_mode);
	DDX_Text(pDX, IDC_SET_MESSAGE, m_message);
	DDX_Text(pDX, IDC_SET_PLACE, m_place);
	DDX_Text(pDX, IDC_SET_CYCLE, m_cycletime);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CTimerPage, CPropertyPage)
	//{{AFX_MSG_MAP(CTimerPage)
	ON_CBN_SELCHANGE(IDC_SET_BOOKS, OnSelchangeSetBooks)
	ON_NOTIFY(DTN_DATETIMECHANGE, IDC_SET_DATE, OnDatetimechangeSetDate)
	ON_CBN_SELCHANGE(IDC_SET_MODE, OnSelchangeSetMode)
	ON_WM_DESTROY()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTimerPage message handlers

BOOL CTimerPage::OnInitDialog() //初始化
{
	CPropertyPage::OnInitDialog();
	

	
	m_cycletime = m_mission.set_time_cycletime;
	if(m_cycletime==0)
	{
		m_cycletime=1;
	}


	m_using = m_mission.set_using;
	m_mode = m_mission.set_mode;
	switch(m_mode)//用于编辑时,根据闹铃方式,判断日期与星期是否可用状态。
	{
		case 0:
			GetDlgItem(IDC_SET_DATE)->EnableWindow();
			m_date.SetFormat(_T("yyyy'年'M'月'd'日'"));
			GetDlgItem(IDC_SET_TIME)->ShowWindow(SW_SHOW);
			GetDlgItem(IDC_SET_CYCLE)->ShowWindow(SW_HIDE);
			GetDlgItem(IDC_SET_WEEKS)->EnableWindow(false);	
			break;	
		case 1:
			GetDlgItem(IDC_SET_DATE)->EnableWindow(false);
			m_date.SetFormat(_T("yyyy'年'M'月'd'日'"));
			GetDlgItem(IDC_SET_TIME)->ShowWindow(SW_HIDE);
			GetDlgItem(IDC_SET_CYCLE)->ShowWindow(SW_SHOW);
			GetDlgItem(IDC_SET_WEEKS)->EnableWindow(false);	
			break;
		case 2:
			GetDlgItem(IDC_SET_DATE)->EnableWindow(false);
			m_date.SetFormat(_T("yyyy'年'M'月'd'日'"));
			GetDlgItem(IDC_SET_TIME)->ShowWindow(SW_SHOW);
			GetDlgItem(IDC_SET_CYCLE)->ShowWindow(SW_HIDE);
			GetDlgItem(IDC_SET_WEEKS)->EnableWindow(false);
			break;
		case 3:
			GetDlgItem(IDC_SET_DATE)->EnableWindow();
			m_date.SetFormat(_T("yyyy'年'M'月'd'日'"));
			GetDlgItem(IDC_SET_TIME)->ShowWindow(SW_SHOW);
			GetDlgItem(IDC_SET_CYCLE)->ShowWindow(SW_HIDE);
			GetDlgItem(IDC_SET_WEEKS)->EnableWindow(false);
			break;
		case 4:
			GetDlgItem(IDC_SET_WEEKS)->EnableWindow(false);
			GetDlgItem(IDC_SET_DATE)->EnableWindow();
			GetDlgItem(IDC_SET_TIME)->ShowWindow(SW_SHOW);
			GetDlgItem(IDC_SET_CYCLE)->ShowWindow(SW_HIDE);
			m_date.SetFormat(_T("' 每月 'd'日'"));
			break;
		case 5:
			GetDlgItem(IDC_SET_WEEKS)->EnableWindow(false);
			GetDlgItem(IDC_SET_DATE)->EnableWindow();
			GetDlgItem(IDC_SET_TIME)->ShowWindow(SW_SHOW);
			GetDlgItem(IDC_SET_CYCLE)->ShowWindow(SW_HIDE);
			m_date.SetFormat(_T("' 每年 'M'月'd'日'"));
			break;
		case 6:
			GetDlgItem(IDC_SET_WEEKS)->EnableWindow(false);
			m_date.SetFormat(_T("yyyy'年'M'月'd'日'"));
			GetDlgItem(IDC_SET_TIME)->ShowWindow(SW_SHOW);
			GetDlgItem(IDC_SET_CYCLE)->ShowWindow(SW_HIDE);
			GetDlgItem(IDC_SET_DATE)->EnableWindow(false);
			break;
	}

	m_books = m_mission.set_books;
	HANDLE  hIcon;
	switch(m_books)//用于编辑时,根据闹铃图示,正确显示图标
	{
		case 0:			
			hIcon=::LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_ICON1) ,IMAGE_ICON,32,32,LR_DEFAULTCOLOR);
			break;
		case 1:
			hIcon=::LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_ICON2) ,IMAGE_ICON,32,32,LR_DEFAULTCOLOR);
			break;
		case 2:
			hIcon=::LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_ICON3) ,IMAGE_ICON,32,32,LR_DEFAULTCOLOR);
			break;
		case 3:
			hIcon=::LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_ICON4) ,IMAGE_ICON,32,32,LR_DEFAULTCOLOR);
			break;
		case 4:
			hIcon=::LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_ICON5) ,IMAGE_ICON,32,32,LR_DEFAULTCOLOR);
			break;
		case 5:
			hIcon=::LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_ICON6) ,IMAGE_ICON,32,32,LR_DEFAULTCOLOR);
			break;
	}
	m_ctrlImage.SetIcon( (HICON)hIcon );//显示图标
	//DestroyIcon((HICON)hIcon);


	CString str_topic = m_mission.set_topic;
	m_topic = str_topic;
	CString str_place = m_mission.set_place;
	m_place = str_place;
	CString str_message = m_mission.set_message;
	m_message = str_message;
	
	SYSTEMTIME sysTime;
	memset(&sysTime, 0, sizeof(sysTime));
	m_date.GetTime(&sysTime);
	m_weeks.SetCurSel(sysTime.wDayOfWeek);//初始化星期
	m_time.SetFormat(_T("H:mm:00"));//由于不计秒,所以将秒初始化为0,且不能编辑

	//根据编辑时传入的值初始化对话框
	sysTime.wYear = m_mission.set_date_year;
	sysTime.wMonth = m_mission.set_date_month;
	sysTime.wDay = m_mission.set_date_day;
	m_date.SetTime(&sysTime);

	sysTime.wHour = m_mission.set_time_hour;
	sysTime.wMinute = m_mission.set_time_minute;
	m_time.SetTime(&sysTime);


	UpdateData(FALSE);


	return TRUE;  
}


void CTimerPage::OnSelchangeSetBooks() //新建闹铃时,闹铃主题与显示图标
{
	HANDLE  hIcon;
	UpdateData(TRUE);
	switch(m_books)//载入图标,MAKEINTRESOURCE宏将资源转为函数可用的参数
	{
		case 0:			
			hIcon=::LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_ICON1) ,IMAGE_ICON,32,32,LR_DEFAULTCOLOR);
			break;
		case 1:
			hIcon=::LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_ICON2) ,IMAGE_ICON,32,32,LR_DEFAULTCOLOR);
			break;
		case 2:
			hIcon=::LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_ICON3) ,IMAGE_ICON,32,32,LR_DEFAULTCOLOR);
			break;
		case 3:
			hIcon=::LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_ICON4) ,IMAGE_ICON,32,32,LR_DEFAULTCOLOR);
			break;
		case 4:
			hIcon=::LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_ICON5) ,IMAGE_ICON,32,32,LR_DEFAULTCOLOR);
			break;
		case 5:
			hIcon=::LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_ICON6) ,IMAGE_ICON,32,32,LR_DEFAULTCOLOR);
			break;
	}

	if(m_ctrlImage.GetIcon()!=NULL)
		DestroyIcon(m_ctrlImage.GetIcon());
	
	m_ctrlImage.SetIcon( (HICON)hIcon );//显示图标
}

void CTimerPage::OnDatetimechangeSetDate(NMHDR* pNMHDR, LRESULT* pResult) 
{
	//根据闹铃日期的改变,星期也跟着改变
	SYSTEMTIME sysTime;
	memset(&sysTime, 0, sizeof(sysTime));
	m_date.GetTime(&sysTime);
	m_weeks.SetCurSel(sysTime.wDayOfWeek);
	
	*pResult = 0;
}

//新建时,根据闹铃方式选项,判断日期与星期选项是否可用状态。
void CTimerPage::OnSelchangeSetMode() 
{
	UpdateData(TRUE);
	switch(m_mode)
	{
		case 0:
			GetDlgItem(IDC_SET_DATE)->EnableWindow();
			m_date.SetFormat(_T("yyyy'年'M'月'd'日'"));
			GetDlgItem(IDC_SET_TIME)->ShowWindow(SW_SHOW);
			GetDlgItem(IDC_SET_CYCLE)->ShowWindow(SW_HIDE);
			GetDlgItem(IDC_SET_WEEKS)->EnableWindow(false);	
			break;	
		case 1:
			GetDlgItem(IDC_SET_DATE)->EnableWindow(false);
			m_date.SetFormat(_T("yyyy'年'M'月'd'日'"));
			GetDlgItem(IDC_SET_TIME)->ShowWindow(SW_HIDE);
			GetDlgItem(IDC_SET_CYCLE)->ShowWindow(SW_SHOW);
			GetDlgItem(IDC_SET_WEEKS)->EnableWindow(false);	
			break;
		case 2:
			GetDlgItem(IDC_SET_DATE)->EnableWindow(false);
			m_date.SetFormat(_T("yyyy'年'M'月'd'日'"));
			GetDlgItem(IDC_SET_TIME)->ShowWindow(SW_SHOW);
			GetDlgItem(IDC_SET_CYCLE)->ShowWindow(SW_HIDE);
			GetDlgItem(IDC_SET_WEEKS)->EnableWindow(false);
			break;
		case 3:
			GetDlgItem(IDC_SET_DATE)->EnableWindow();
			m_date.SetFormat(_T("yyyy'年'M'月'd'日'"));
			GetDlgItem(IDC_SET_TIME)->ShowWindow(SW_SHOW);
			GetDlgItem(IDC_SET_CYCLE)->ShowWindow(SW_HIDE);
			GetDlgItem(IDC_SET_WEEKS)->EnableWindow(false);
			break;
		case 4:
			GetDlgItem(IDC_SET_WEEKS)->EnableWindow(false);
			GetDlgItem(IDC_SET_DATE)->EnableWindow();
			GetDlgItem(IDC_SET_TIME)->ShowWindow(SW_SHOW);
			GetDlgItem(IDC_SET_CYCLE)->ShowWindow(SW_HIDE);
			m_date.SetFormat(_T("' 每月 'd'日'"));
			break;
		case 5:
			GetDlgItem(IDC_SET_WEEKS)->EnableWindow(false);
			GetDlgItem(IDC_SET_DATE)->EnableWindow();
			GetDlgItem(IDC_SET_TIME)->ShowWindow(SW_SHOW);
			GetDlgItem(IDC_SET_CYCLE)->ShowWindow(SW_HIDE);
			m_date.SetFormat(_T("' 每年 'M'月'd'日'"));
			break;
		case 6:
			GetDlgItem(IDC_SET_WEEKS)->EnableWindow(false);
			m_date.SetFormat(_T("yyyy'年'M'月'd'日'"));
			GetDlgItem(IDC_SET_TIME)->ShowWindow(SW_SHOW);
			GetDlgItem(IDC_SET_CYCLE)->ShowWindow(SW_HIDE);
			GetDlgItem(IDC_SET_DATE)->EnableWindow(false);
			break;
	}

}


BOOL CTimerPage::OnKillActive() //未输入闹铃主题之前跳出提示
{
	UpdateData(TRUE);//data is being retrieved 
	CEdit* pEdit=(CEdit*)GetDlgItem(IDC_SET_TOPIC);
	pEdit->GetWindowText(m_topic);

	if(m_topic.GetLength()==0)
	{
		AfxMessageBox("请输入闹铃主题!");
		return false;
	}
	else
		return true;
}

void CTimerPage::ReadData(MISSION *pMission)//读取数据
{
///*	
	if(!m_isActive)
		return;

	pMission->set_using = m_mission.set_using;
	pMission->set_mode = m_mission.set_mode;
	pMission->set_books = m_mission.set_books;

	strcpy(pMission->set_topic,m_mission.set_topic);
	strcpy(pMission->set_place,m_mission.set_place);
	strcpy(pMission->set_message,m_mission.set_message);


	pMission->set_date_year = m_mission.set_date_year;
	pMission->set_date_month = m_mission.set_date_month;
	pMission->set_date_day = m_mission.set_date_day;
	pMission->set_date_week = m_mission.set_date_week;

	pMission->set_time_hour = m_mission.set_time_hour;
	pMission->set_time_minute = m_mission.set_time_minute;
//	pMission->set_time_second = m_mission.set_time_second;
	pMission->set_time_cycletime = m_mission.set_time_cycletime;
//*/

}

void CTimerPage::OnOK() 
{
	//按OK时将值传给结构。
	m_isActive=TRUE;

	UpdateData();

	m_mission.set_using = m_using?1:0;
	m_mission.set_mode = m_mode;
	m_mission.set_books = m_books;
	
	strcpy(m_mission.set_topic,m_topic);
	strcpy(m_mission.set_place,m_place);
	strcpy(m_mission.set_message,m_message);
	

	SYSTEMTIME sysDate;
	memset(&sysDate, 0, sizeof(sysDate));
	m_date.GetTime(&sysDate);
	
	m_mission.set_date_year = sysDate.wYear;
	m_mission.set_date_month = sysDate.wMonth;
	m_mission.set_date_day = sysDate.wDay;
	m_mission.set_date_week = sysDate.wDayOfWeek;
	
	
	SYSTEMTIME sysTime;
	memset(&sysTime, 0, sizeof(sysTime));
	m_time.GetTime(&sysTime);

	m_mission.set_time_hour = sysTime.wHour;
	m_mission.set_time_minute = sysTime.wMinute;
//	m_mission.set_time_second = sysTime.wSecond;
	if(m_cycletime==0)
	{
		m_cycletime=1;
	}
	m_mission.set_time_cycletime = m_cycletime;
	
	CPropertyPage::OnOK();
}


void CTimerPage::SetMission(MISSION *peditmission)//将传入的值赋于
{

	memcpy((void*)&m_mission,(void*)peditmission,sizeof(MISSION));

}

void CTimerPage::OnDestroy() 
{
	CPropertyPage::OnDestroy();
	
	// TODO: Add your message handler code here
	if(m_ctrlImage.GetIcon()!=NULL)
		DestroyIcon(m_ctrlImage.GetIcon());
		
}


⌨️ 快捷键说明

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