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

📄 alarmdlg.cpp

📁 EVC下闹钟程序,很简单,只播放简单MP3音乐
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		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.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;
	}


	return alarmTime;

}



void CAlarmDlg::OnTimer(UINT nIDEvent) 
{
	if (nIDEvent == 2)
	{
		GetLocalTime(&time);
		if (time.wYear == nAlarmYear  
			&& time.wMonth == nAlarmMonth 
			&& time.wDay == nAlarmDay 
			&& time.wHour == nAlarmHour
			&& time.wMinute == nAlarmMinute)
		{
			KillTimer(2);
			//开始唱歌。
			PlayMp3();
		}
	}

	if (nIDEvent == 1)
	{
		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);
		InvalidateRect(CRect(85,71,223,124));

		
	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);

	}


		// TODO: Add your message handler code here and/or call default
	if (nIDEvent == mSliderTimer && mFilterGraph)
	{
		double pos = 0, duration = 1.;
		mFilterGraph->GetCurrentPosition(&pos);
		mFilterGraph->GetDuration(&duration);
	
	}


	CDialog::OnTimer(nIDEvent);
}

void CAlarmDlg::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	//设字体大小
	CFont font;
	LOGFONT lf;
	memset(&lf, 0, sizeof(LOGFONT));
	lf.lfHeight = 36;
	lf.lfWeight = FW_BOLD;//粗体
	//lf.lfItalic = TRUE;//斜体

	dc.SetTextColor(RGB(255,255,255));
	lstrcpy(lf.lfFaceName, _T("Arial"));
	VERIFY(font.CreateFontIndirect(&lf));
	CFont* def_font = dc.SelectObject(&font);
	dc.SetBkMode(TRANSPARENT);//透明
	dc.DrawText(s5,CRect(85,71,139,124),ETO_CLIPPED| DT_LEFT);
	dc.DrawText(s6,CRect(157,71,223,124),ETO_CLIPPED| DT_LEFT);

/*	
	//秒针
	CPen *pOldPen_second;
	CPen NewPen_second;
	NewPen_second.CreatePen(PS_DASH,2,RGB(82,82,82));
	pOldPen_second = dc.SelectObject(&NewPen_second);
	dc.MoveTo(XCIRCLECENTER,YCIRCLECENTER);
	dc.LineTo(alarm.nxSecond,alarm.nySecond);
	dc.MoveTo(XCIRCLECENTER-1,YCIRCLECENTER-1);
	dc.LineTo(alarm.nxSecond,alarm.nySecond);
	dc.MoveTo(XCIRCLECENTER+1,YCIRCLECENTER+1);
	dc.LineTo(alarm.nxSecond,alarm.nySecond);
	dc.SelectObject(pOldPen_second);	

	// 分针。
	CPen *pOldPen_second1;
	CPen NewPen_second1;
	NewPen_second1.CreatePen(PS_DASH,2,RGB(82,82,82));
	pOldPen_second1 = dc.SelectObject(&NewPen_second1);
	dc.MoveTo(XCIRCLECENTER,YCIRCLECENTER);
	dc.LineTo(alarm.nxMinute,alarm.nyMinute);
	dc.MoveTo(XCIRCLECENTER-1,YCIRCLECENTER-1);
	dc.LineTo(alarm.nxMinute,alarm.nyMinute);
	dc.MoveTo(XCIRCLECENTER+1,YCIRCLECENTER+1);
	dc.LineTo(alarm.nxMinute,alarm.nyMinute);
	dc.SelectObject(pOldPen_second1);	

	// 时针。
	CPen *pOldPen_second2;
	CPen NewPen_second2;
	NewPen_second2.CreatePen(PS_DASH,2,RGB(82,82,82));
	pOldPen_second2 = dc.SelectObject(&NewPen_second2);
	dc.MoveTo(XCIRCLECENTER,YCIRCLECENTER);
	dc.LineTo(alarm.nxHour,alarm.nyHour);
	dc.MoveTo(XCIRCLECENTER-1,YCIRCLECENTER-1);
	dc.LineTo(alarm.nxHour,alarm.nyHour);
	dc.MoveTo(XCIRCLECENTER-2,YCIRCLECENTER-2);
	dc.LineTo(alarm.nxHour,alarm.nyHour);
	dc.MoveTo(XCIRCLECENTER+1,YCIRCLECENTER+1);
	dc.LineTo(alarm.nxHour,alarm.nyHour);
	dc.MoveTo(XCIRCLECENTER+2,YCIRCLECENTER+2);
	dc.LineTo(alarm.nxHour,alarm.nyHour);
	dc.SelectObject(pOldPen_second2);	

	//画中间的圆。
	CBrush *pNewBrush,*pOldBrush;
	pNewBrush = new CBrush;
	pNewBrush->CreateSolidBrush(RGB(82,82,82));
	pOldBrush = dc.SelectObject(pNewBrush);
	dc.Ellipse(125,112,151,138);
	dc.SelectObject(pOldBrush);
	delete pNewBrush;
*/	
}


int CAlarmDlg::ReadReg()
{
	//读注册表,获得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);
		//将从注册表里读出的语种信息存入变量
		return dwValue;
	}
	else
	{	RegCloseKey(hKey);
		//将从注册表里读出的语种信息存入变量
		return 0;

	}
}

HBRUSH CAlarmDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
	
	if(nCtlColor == CTLCOLOR_STATIC )
	{
		pDC->SetTextColor(RGB(255,255,255));
		pDC->SetBkColor(RGB(0,0,0));
		m_brMine = ::CreateSolidBrush(RGB(0,0,0));
		return m_brMine;
	}	
	// TODO: Return a different brush if the default is not desired
	return hbr;
}

void CAlarmDlg::OnAlarm_1() 
{
	m_bAlarm_1 = !m_bAlarm_1;

	if (m_bAlarm_1)
	{

		m_YearUp.ShowWindow (SW_HIDE);
		m_YearDown.ShowWindow (SW_HIDE);
		m_MonthUp.ShowWindow (SW_HIDE);
		m_MonthDown.ShowWindow (SW_HIDE);
		m_MinuteUp.ShowWindow (SW_HIDE);
		m_MinuteDown.ShowWindow (SW_HIDE);
		m_HourUp.ShowWindow (SW_HIDE);
		m_HourDown.ShowWindow (SW_HIDE);
		m_DayUp.ShowWindow (SW_HIDE);
		m_DayDown.ShowWindow (SW_HIDE);

		dlg.DoModal();
		m_Music.SetWindowText(dlg.strName) ;


		//开始等待时间
		//先得到定时的时间。
		CString t1,t2,t3,t4,t5;
		GetDlgItemText(IDC_ALARMYEAR,t1);
		GetDlgItemText(IDC_ALARMMONTH,t2);
		GetDlgItemText(IDC_ALARMDAY,t3);
		GetDlgItemText(IDC_ALARMHOUR,t4);
		GetDlgItemText(IDC_ALARMMINUTE,t5);

		nAlarmYear=atoi(t1);
		nAlarmMonth=atoi(t2);
		nAlarmDay=atoi(t3);
		nAlarmHour=atoi(t4);
		nAlarmMinute=atoi(t5);
	

		SetTimer (2,60000,NULL);
	}	
	else
	{
		m_YearUp.ShowWindow (SW_SHOW );
		m_YearDown.ShowWindow (SW_SHOW);
		m_MonthUp.ShowWindow (SW_SHOW);
		m_MonthDown.ShowWindow (SW_SHOW);
		m_MinuteUp.ShowWindow (SW_SHOW);
		m_MinuteDown.ShowWindow (SW_SHOW);
		m_HourUp.ShowWindow (SW_SHOW);
		m_HourDown.ShowWindow (SW_SHOW);
		m_DayUp.ShowWindow (SW_SHOW);
		m_DayDown.ShowWindow (SW_SHOW);

		KillTimer (2);
		//关闭上一个
		if (mFilterGraph)
		{
	//		mFilterGraph->Stop();
	//		mFilterGraph->SetNotifyWindow(NULL);
			delete mFilterGraph;
			mFilterGraph = NULL;
			if (mSliderTimer)
			{
				KillTimer(mSliderTimer);
				mSliderTimer = 0;
			}
		}
	}


}

void CAlarmDlg::OnYearup() 
{
	CString str;
	GetDlgItemText(IDC_ALARMYEAR,str);
	int l = atoi(str);
	if (l > 2000)
	{
		l--;
		str.Format(L"%d",l);
		m_AlarmYear.SetWindowText(str);
	}
	else
		m_AlarmYear.SetWindowText(str);
	

}

void CAlarmDlg::OnMonthup() 
{
	CString str;
	GetDlgItemText(IDC_ALARMMONTH,str);
	int l = atoi(str);
	if (l > 1)
	{
		l--;
		str.Format(L"%02d",l);
		m_AlarmMonth.SetWindowText(str);
	}
	else
		m_AlarmMonth.SetWindowText(str);
		
}

void CAlarmDlg::OnDayup() 
{
	CString str;
	GetDlgItemText(IDC_ALARMDAY,str);
	int l = atoi(str);
	if (l > 1)
	{
		l--;
		str.Format(L"%02d",l);
		m_AlarmDay.SetWindowText(str);
	}
	else
		m_AlarmDay.SetWindowText(str);
		
}

void CAlarmDlg::OnHourup() 
{
	CString str;
	GetDlgItemText(IDC_ALARMHOUR,str);
	int l = atoi(str);
	if (l > 0)
	{
		l--;
		str.Format(L"%02d",l);
		m_AlarmHour.SetWindowText(str);
	}
	else
		m_AlarmHour.SetWindowText(str);
		
}

void CAlarmDlg::OnMinuteup() 
{
	CString str;
	GetDlgItemText(IDC_ALARMMINUTE,str);
	int l = atoi(str);
	if (l > 1)
	{
		l--;
		str.Format(L"%02d",l);
		m_AlarmMinute.SetWindowText(str);
	}
	else
		m_AlarmMinute.SetWindowText(str);
		
}

void CAlarmDlg::OnYeardown() 
{
	CString str;
	GetDlgItemText(IDC_ALARMYEAR,str);
	int l = atoi(str);
	l++;
	str.Format(L"%d",l);
	m_AlarmYear.SetWindowText(str);
}

void CAlarmDlg::OnMonthdown() 
{
	CString str;
	GetDlgItemText(IDC_ALARMMONTH,str);
	int l = atoi(str);
	if (l<12)
	{
		l++;
	}
	
	str.Format(L"%02d",l);
	m_AlarmMonth.SetWindowText(str);}

void CAlarmDlg::OnDaydown() 
{
	CString str;
	GetDlgItemText(IDC_ALARMDAY,str);
	int l = atoi(str);
	if (l<31)
	{
		l++;
	}
	
	str.Format(L"%02d",l);
	m_AlarmDay.SetWindowText(str);
}

void CAlarmDlg::OnHourdown() 
{
	CString str;
	GetDlgItemText(IDC_ALARMHOUR,str);
	int l = atoi(str);
	if (l<23)
	{
		l++;
	}
	str.Format(L"%02d",l);
	m_AlarmHour.SetWindowText(str);
}

void CAlarmDlg::OnMinutedown() 
{
	CString str;
	GetDlgItemText(IDC_ALARMMINUTE,str);
	int l = atoi(str);
	if (l<59) 
	{
		l++;
	}
	str.Format(L"%02d",l);
	m_AlarmMinute.SetWindowText(str);
}

void CAlarmDlg::PlayMp3()
{
	if (dlg.strName == "SysMusic") 
	{//播放WAV
		//PlaySound(MAKEINTRESOURCE(IDR_WAV),AfxGetResourceHandle(),SND_ASYNC|SND_RESOURCE|SND_NODEFAULT);
	}
	else
	{
		//播放MP3
		//关闭上一个
		if (mFilterGraph)
		{
			mFilterGraph->Stop();
			mFilterGraph->SetNotifyWindow(NULL);
			delete mFilterGraph;
			mFilterGraph = NULL;
			if (mSliderTimer)
			{
				KillTimer(mSliderTimer);
				mSliderTimer = 0;
			}
		}
		//创建一个。
		mFilterGraph = new CDXGraph();
		if (mFilterGraph->Create())
		{
			CString str = "\\sdmmc\\alarm\\" + dlg.strName;
			mFilterGraph->RenderFile(str);
			mFilterGraph->Pause();
		}
		//开始播放。
		if (mFilterGraph)
		{
			mFilterGraph->Run();
			if (mSliderTimer == 0)
			{
				mSliderTimer = SetTimer(SLIDER_TIMER, 1000, NULL);
			}
		}
	}
}
HRESULT CAlarmDlg::FindFilterByInterface(REFIID riid, IBaseFilter **ppFilter)
{
	*ppFilter = NULL;
	if (!mFilterGraph)
	{
		return E_FAIL;
	}
	
    IEnumFilters* pEnum;
    HRESULT hr = mFilterGraph->GetGraph()->EnumFilters(&pEnum);
    if (FAILED(hr)) 
	{
		return hr;
    }
	
    IBaseFilter* pFilter = NULL;
    while (pEnum->Next(1, &pFilter, NULL) == S_OK) 
	{
		// Check for required interface
		IUnknown* pUnk;
		HRESULT hrQuery = pFilter->QueryInterface(riid, (void**)&pUnk);
		if (SUCCEEDED(hrQuery)) 
		{
			pUnk->Release();
			pEnum->Release();
			*ppFilter = pFilter;
			return S_OK;
		}
		pFilter->Release();
    }
    pEnum->Release();
	
    return E_FAIL;
}

void CAlarmDlg::OnOk() 
{

	if(!m_bAlarm_1 )
	{
//		AfxMessageBox (L"close");
		CDialog::OnOK();
	}
	else
	{
//		AfxMessageBox (L"Noclose");
		this->ShowWindow(SW_HIDE);
	}
		
}

⌨️ 快捷键说明

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