?? alarmdlg.cpp
字號:
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 + -