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

📄 alarmdlg.cpp

📁 EVC下闹钟程序,很简单,只播放简单MP3音乐
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// AlarmDlg.cpp : implementation file
//

#include "stdafx.h"
#include "Alarm.h"
#include "AlarmDlg.h"
#include "OpenDlg1.h"

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

#define SLIDER_TIMER   100

#define RADIO  84			//半径

#define XCIRCLECENTER 138	//圆心X坐标
#define YCIRCLECENTER 125	//圆心Y坐标

/////////////////////////////////////////////////////////////////////////////
// CAlarmDlg dialog

CAlarmDlg::CAlarmDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CAlarmDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CAlarmDlg)
	m_bAlarm_1 = FALSE;
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CAlarmDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAlarmDlg)
	DDX_Control(pDX, IDC_OK, m_OK);
	DDX_Control(pDX, IDC_ALARMMUSIC, m_Music);
	DDX_Control(pDX, IDC_ALARMYEAR, m_AlarmYear);
	DDX_Control(pDX, IDC_ALARMMONTH, m_AlarmMonth);
	DDX_Control(pDX, IDC_ALARMMINUTE, m_AlarmMinute);
	DDX_Control(pDX, IDC_ALARMHOUR, m_AlarmHour);
	DDX_Control(pDX, IDC_ALARMDAY, m_AlarmDay);
	DDX_Control(pDX, IDC_YEARUP, m_YearUp);
	DDX_Control(pDX, IDC_YEARDOWN, m_YearDown);
	DDX_Control(pDX, IDC_MONTHUP, m_MonthUp);
	DDX_Control(pDX, IDC_MONTHDOWN, m_MonthDown);
	DDX_Control(pDX, IDC_MINUTEUP, m_MinuteUp);
	DDX_Control(pDX, IDC_MINUTEDOWN, m_MinuteDown);
	DDX_Control(pDX, IDC_HOURUP, m_HourUp);
	DDX_Control(pDX, IDC_HOURDOWN, m_HourDown);
	DDX_Control(pDX, IDC_DAYUP, m_DayUp);
	DDX_Control(pDX, IDC_DAYDOWN, m_DayDown);
	DDX_Control(pDX, IDC_DATE, m_Date);
	DDX_Check(pDX, IDC_CHECK1, m_bAlarm_1);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAlarmDlg, CDialog)
	//{{AFX_MSG_MAP(CAlarmDlg)
	ON_WM_ERASEBKGND()
	ON_WM_TIMER()
	ON_WM_PAINT()
	ON_WM_CTLCOLOR()
	ON_BN_CLICKED(IDC_CHECK1, OnAlarm_1)
	ON_BN_CLICKED(IDC_YEARUP, OnYearup)
	ON_BN_CLICKED(IDC_MONTHUP, OnMonthup)
	ON_BN_CLICKED(IDC_DAYUP, OnDayup)
	ON_BN_CLICKED(IDC_HOURUP, OnHourup)
	ON_BN_CLICKED(IDC_MINUTEUP, OnMinuteup)
	ON_BN_CLICKED(IDC_YEARDOWN, OnYeardown)
	ON_BN_CLICKED(IDC_MONTHDOWN, OnMonthdown)
	ON_BN_CLICKED(IDC_DAYDOWN, OnDaydown)
	ON_BN_CLICKED(IDC_HOURDOWN, OnHourdown)
	ON_BN_CLICKED(IDC_MINUTEDOWN, OnMinutedown)
	ON_BN_CLICKED(IDC_OK, OnOk)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CAlarmDlg message handlers

BOOL CAlarmDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon

	::SetWindowPos(this->GetSafeHwnd(),
				   HWND_TOPMOST,
				   0,
				   0, 
			       GetSystemMetrics(SM_CXSCREEN), 
	               GetSystemMetrics(SM_CYSCREEN),
		           SWP_SHOWWINDOW);

	CenterWindow(GetDesktopWindow());	// center to the hpc screen

	m_BackScreenBitmap.LoadBitmap(IDB_BKG);

	m_YearUp.MoveWindow(40,120,20,20);
	m_YearDown.MoveWindow(40,157,20,20);
	m_AlarmYear.MoveWindow(35,140,40,15);

	m_MonthUp.MoveWindow(80,120,20,20);
	m_MonthDown.MoveWindow(80,157,20,20);
	m_AlarmMonth.MoveWindow(83,140,20,15);

	m_DayUp.MoveWindow(110,120,20,20);
	m_DayDown.MoveWindow(110,157,20,20);
	m_AlarmDay.MoveWindow(110,140,20,15);

	m_HourUp.MoveWindow(140,120,20,20);
	m_HourDown.MoveWindow(140,157,20,20);
	m_AlarmHour.MoveWindow(140,140,20,15);

	m_MinuteUp.MoveWindow(170,120,20,20);
	m_MinuteDown.MoveWindow(170,157,20,20);
	m_AlarmMinute.MoveWindow(170,140,20,15);

	m_YearUp.LoadBitmaps(IDB_UP1,IDB_UP );
	m_YearDown.LoadBitmaps(IDB_DOWN1,IDB_DOWN);
	m_MonthUp.LoadBitmaps(IDB_UP1,IDB_UP );
	m_MonthDown.LoadBitmaps(IDB_DOWN1,IDB_DOWN);
	m_MinuteUp.LoadBitmaps(IDB_UP1,IDB_UP);
	m_MinuteDown.LoadBitmaps(IDB_DOWN1,IDB_DOWN);
	m_HourUp.LoadBitmaps(IDB_UP1,IDB_UP);
	m_HourDown.LoadBitmaps(IDB_DOWN1,IDB_DOWN);
	m_DayUp.LoadBitmaps(IDB_UP1,IDB_UP);
	m_DayDown.LoadBitmaps(IDB_DOWN1,IDB_DOWN);

	GetDlgItem(IDC_CHECK1)->MoveWindow(10,139,20,20);
	//alarm = GetCurrentSystemTimePoint();
	m_Music.MoveWindow(55,189,140,20);
	
	//读注册表,获得UI语言种类
	HKEY hKey;//HKEY_LOCAL_MACHINE
 	RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("MUI"), 0, 0, &hKey); 
	DWORD dwValue=0;
	DWORD dwSize,dwType= REG_DWORD ;
	//DWORD dwTStat,dwType= REG_DWORD ;
	
	if (hKey) 
    { 
		RegQueryValueEx(hKey, L"language", NULL, &dwType, (LPBYTE)&dwValue, &dwSize);
		RegCloseKey(hKey);
	}

	strDate = "";
	nLanguage =dwValue;

	GetLocalTime(&time);
	s1.Format(L"%d",time.wYear);
	s2.Format(L"%02d",time.wMonth);
	s3.Format(L"%02d",time.wDay);
	s4.Format(L"%d",time.wDayOfWeek);
	s5.Format(L"%02d",time.wHour);
	s6.Format(L"%02d",time.wMinute);
	
	if (nLanguage == 1 || nLanguage == 2)
	{
		strDate = "     "+ s1 + "年 " + s2 + "月 " + s3 + "日" + " 星期" + s4;
	}
	if (nLanguage == 0)
	{
		switch(time.wDayOfWeek)
		{
		case 0:
			strDate = s1 + "-Year-" + s2 + "-Month-" + s3 + "-Day" + "-Sunday" ;
			break;
		case 1:
			strDate = s1 + "-Year-" + s2 + "-Month-" + s3 + "-Day" + "-Monday" ;
			break;
		case 2:
			strDate = s1 + "-Year-" + s2 + "-Month-" + s3 + "-Day" + "-Tuesday" ;
			break;
		case 3:
			strDate = s1 + "-Year-" + s2 + "-Month-" + s3 + "-Day" + "-Wednesday" ;
			break;
		case 4:
			strDate = s1 + "-Year-" + s2 + "-Month-" + s3 + "-Day" + "-Thursday" ;
			break;
		case 5:
			strDate = s1 + "-Year-" + s2 + "-Month-" + s3 + "-Day" + "-Friday" ;
			break;
		case 6:
			strDate = s1 + "-Year-" + s2 + "-Month-" + s3 + "-Day" + "-Saturday" ;
			break;
		}
	}

	m_Date.SetWindowText(strDate);


	m_AlarmYear.SetWindowText(s1);
	m_AlarmMonth.SetWindowText(s2);
	m_AlarmMinute.SetWindowText(s6);
	m_AlarmHour.SetWindowText(s5);
	m_AlarmDay.SetWindowText(s3);

	CoInitialize(NULL); //directshow初始化
	mFilterGraph = NULL;

	m_OK.MoveWindow(273,170,27,27);
	m_OK.LoadBitmaps(IDB_CANCEL,IDB_CANCEL1);

	SetTimer(1,60000,NULL);

	return TRUE;  // return TRUE  unless you set the focus to a control
}



BOOL CAlarmDlg::OnEraseBkgnd(CDC* pDC) 
{
	BITMAP bmpInfo;
    m_BackScreenBitmap.GetBitmap(&bmpInfo);
    CDC dcMemory;
    dcMemory.CreateCompatibleDC(pDC);
    CBitmap* pOldBitmap = dcMemory.SelectObject(&m_BackScreenBitmap);
    CRect rect;
    GetClientRect(&rect);
    pDC->BitBlt(0, 0, bmpInfo.bmWidth, bmpInfo.bmHeight, &dcMemory, 
         0, 0, SRCCOPY);
    dcMemory.SelectObject(pOldBitmap);
	return true;	
}



ALARMTIME CAlarmDlg::GetCurrentSystemTimePoint()
{
	ALARMTIME alarmTime;


	GetLocalTime(&time);
	
	//小时最短,分其次,秒最长。这里设定,秒 RADIO,分RADIO-20,时RADIO-40
	int minuteRadio = RADIO - 20;
	int hourRadio   = RADIO - 40;
	/////////////////////////////////////////////////////////////////////////////
	/******************秒*******************************************************/
	/////////////////////////////////////////////////////////////////////////////
	switch(time.wSecond)
	{
	//0
	case 0:
		alarmTime.nxSecond = XCIRCLECENTER;
		alarmTime.nySecond = YCIRCLECENTER - RADIO;
		break;
	//1---14
	case 1:	
	case 2:	
	case 3:
	case 4:
	case 5:	
	case 6:	
	case 7:	
	case 8:
	case 9:	
	case 10:
	case 11:
	case 12:
	case 13:
	case 14:
		alarmTime.nxSecond = XCIRCLECENTER + cos( (90 - time.wSecond * 6.0 ) / 180.0 * 3.14159 )  * RADIO;
		alarmTime.nySecond = YCIRCLECENTER - sin( (90 - time.wSecond * 6.0 ) / 180.0 * 3.14159 )  * RADIO;

		break;
	//15
	case 15:
		alarmTime.nxSecond = XCIRCLECENTER + RADIO;
		alarmTime.nySecond = YCIRCLECENTER;
		break;
	//16----29
	case 16:
	case 17:
	case 18:
	case 19:
	case 20:
	case 21:
	case 22:
	case 23:
	case 24:
	case 25:
	case 26:
	case 27:
	case 28:
	case 29:
		alarmTime.nxSecond = XCIRCLECENTER + cos( (-90 + time.wSecond * 6.0 ) / 180.0 * 3.14159 )  * RADIO;
		alarmTime.nySecond = YCIRCLECENTER + sin( (-90 + time.wSecond * 6.0 ) / 180.0 * 3.14159 )  * RADIO;

		break;
	//30
	case 30:
		alarmTime.nxSecond = XCIRCLECENTER;
		alarmTime.nySecond = YCIRCLECENTER + RADIO;
		break;
	//31-----44
	case 31:
	case 32:
	case 33:
	case 34:
	case 35:
	case 36:
	case 37:
	case 38:
	case 39:
	case 40:
	case 41:
	case 42:
	case 43:
	case 44:
		alarmTime.nxSecond = XCIRCLECENTER - cos( (270 - time.wSecond * 6.0 ) / 180.0 * 3.14159 )  * RADIO;
		alarmTime.nySecond = YCIRCLECENTER + sin( (270 - time.wSecond * 6.0 ) / 180.0 * 3.14159 )  * RADIO;

		break;
	//45
	case 45:
		alarmTime.nxSecond = XCIRCLECENTER - RADIO;
		alarmTime.nySecond = YCIRCLECENTER;
		break;
	//46----59
	case 46:
	case 47:
	case 48:
	case 49:
	case 50:
	case 51:
	case 52:
	case 53:
	case 54:
	case 55:
	case 56:
	case 57:
	case 58:
	case 59:
		alarmTime.nxSecond = XCIRCLECENTER - cos( (-270 + time.wSecond * 6.0 ) / 180.0 * 3.14159 )  * RADIO;
		alarmTime.nySecond = YCIRCLECENTER - sin( (-270 + time.wSecond * 6.0 ) / 180.0 * 3.14159 )  * RADIO;
		break;
	}

	/////////////////////////////////////////////////////////////////////////////
	/******************分*******************************************************/
	/////////////////////////////////////////////////////////////////////////////
	switch(time.wMinute)
	{
	//0
	case 0:
		alarmTime.nxMinute = XCIRCLECENTER;
		alarmTime.nyMinute = YCIRCLECENTER - minuteRadio;
		break;
	//1---14
	case 1:	
	case 2:	
	case 3:
	case 4:
	case 5:	
	case 6:	
	case 7:	
	case 8:
	case 9:	
	case 10:
	case 11:
	case 12:
	case 13:
	case 14:
		alarmTime.nxMinute = XCIRCLECENTER + cos( (90 - time.wMinute * 6.0 ) / 180.0 * 3.14159 )  * minuteRadio;
		alarmTime.nyMinute = YCIRCLECENTER - sin( (90 - time.wMinute * 6.0 ) / 180.0 * 3.14159 )  * minuteRadio;

		break;
	//15
	case 15:
		alarmTime.nxMinute = XCIRCLECENTER + minuteRadio;
		alarmTime.nyMinute = YCIRCLECENTER;
		break;
	//16----29
	case 16:
	case 17:
	case 18:
	case 19:
	case 20:
	case 21:
	case 22:
	case 23:
	case 24:
	case 25:
	case 26:
	case 27:
	case 28:
	case 29:
		alarmTime.nxMinute = XCIRCLECENTER + cos( (-90 + time.wMinute * 6.0 ) / 180.0 * 3.14159 )  * minuteRadio;
		alarmTime.nyMinute = YCIRCLECENTER + sin( (-90 + time.wMinute * 6.0 ) / 180.0 * 3.14159 )  * minuteRadio;

		break;
	//30
	case 30:
		alarmTime.nxMinute = XCIRCLECENTER;
		alarmTime.nyMinute = YCIRCLECENTER + minuteRadio;
		break;
	//31-----44
	case 31:
	case 32:
	case 33:
	case 34:
	case 35:
	case 36:
	case 37:
	case 38:
	case 39:
	case 40:
	case 41:
	case 42:
	case 43:
	case 44:
		alarmTime.nxMinute = XCIRCLECENTER - cos( (270 - time.wMinute * 6.0 ) / 180.0 * 3.14159 )  * minuteRadio;
		alarmTime.nyMinute = YCIRCLECENTER + sin( (270 - time.wMinute * 6.0 ) / 180.0 * 3.14159 )  * minuteRadio;

		break;
	//45
	case 45:
		alarmTime.nxMinute = XCIRCLECENTER - minuteRadio;
		alarmTime.nyMinute = YCIRCLECENTER;
		break;
	//46----59
	case 46:
	case 47:
	case 48:
	case 49:
	case 50:
	case 51:
	case 52:
	case 53:
	case 54:
	case 55:
	case 56:
	case 57:
	case 58:
	case 59:
		alarmTime.nxMinute = XCIRCLECENTER - cos( (-270 + time.wMinute * 6.0 ) / 180.0 * 3.14159 )  * minuteRadio;
		alarmTime.nyMinute = YCIRCLECENTER - sin( (-270 + time.wMinute * 6.0 ) / 180.0 * 3.14159 )  * minuteRadio;
		break;
	}
	
	/////////////////////////////////////////////////////////////////////////////
	/******************时*******************************************************/
	/////////////////////////////////////////////////////////////////////////////
	switch(time.wHour)
	{
	//0
	case 0:
		alarmTime.nxHour = XCIRCLECENTER;
		alarmTime.nyHour = YCIRCLECENTER - hourRadio;
		break;
	//1---14
	case 1:	
	case 2:	
	case 3:
	case 4:
	case 5:	
	case 6:	
	case 7:	
	case 8:
	case 9:	
	case 10:
	case 11:
	case 12:
	case 13:
	case 14:
		alarmTime.nxHour = XCIRCLECENTER + cos( (90 - time.wHour * 6.0 ) / 180.0 * 3.14159 )  * hourRadio;
		alarmTime.nyHour = YCIRCLECENTER - sin( (90 - time.wHour * 6.0 ) / 180.0 * 3.14159 )  * hourRadio;

		break;
	//15
	case 15:
		alarmTime.nxHour = XCIRCLECENTER + hourRadio;
		alarmTime.nyHour = YCIRCLECENTER;
		break;
	//16----29
	case 16:
	case 17:
	case 18:
	case 19:
	case 20:
	case 21:
	case 22:
	case 23:
	case 24:
	case 25:
	case 26:
	case 27:
	case 28:
	case 29:
		alarmTime.nxHour = XCIRCLECENTER + cos( (-90 + time.wHour * 6.0 ) / 180.0 * 3.14159 )  * hourRadio;
		alarmTime.nyHour = YCIRCLECENTER + sin( (-90 + time.wHour * 6.0 ) / 180.0 * 3.14159 )  * hourRadio;

		break;
	//30
	case 30:
		alarmTime.nxHour = XCIRCLECENTER;
		alarmTime.nyHour = YCIRCLECENTER + hourRadio;
		break;
	//31-----44
	case 31:
	case 32:
	case 33:
	case 34:
	case 35:
	case 36:
	case 37:
	case 38:
	case 39:
	case 40:
	case 41:
	case 42:
	case 43:
	case 44:
		alarmTime.nxHour = XCIRCLECENTER - cos( (270 - time.wHour * 6.0 ) / 180.0 * 3.14159 )  * hourRadio;
		alarmTime.nyHour = YCIRCLECENTER + sin( (270 - time.wHour * 6.0 ) / 180.0 * 3.14159 )  * hourRadio;

		break;
	//45
	case 45:
		alarmTime.nxHour = XCIRCLECENTER - hourRadio;
		alarmTime.nyHour = YCIRCLECENTER;

⌨️ 快捷键说明

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