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