64,701
社区成员
发帖
与我相关
我的任务
分享
void CAlarm::OnTimer(UINT_PTR nIDEvent)
{
// TODO: Add your message handler code here and/or call default
UpdateData(TRUE);
Ctime = CTime::GetCurrentTime();
CClientDC dc(this);
CDC cdc;
int rr = 150;
const double PI = 4.0 * atan( 1.0 );
const double AG = 180.0 / PI;
switch(/*ALARMSOUND == */nIDEvent)
{
case SETALARM:
m_curtimeValue = Ctime.Format("%H : %M : %S");
UpdateData(false);
bm.GetBitmap(&BT);
cdc.CreateCompatibleDC(&dc);
cdc.SelectObject(&bm);
dc.BitBlt(110,20,BT.bmWidth+110,BT.bmHeight+20,&cdc,0,0,SRCCOPY);
cdc.DeleteDC();
POINT mid;
mid.x = 310;
mid.y = 300;
POINT p1, p2, p3;
SYSTEMTIME st;
GetLocalTime(&st);
double h, m, s;
s = st.wSecond;
m = st.wMinute + s/60;
h = st.wHour + m/60;
p1.x = LONG(0.8*rr*cos((s*6-90)/AG) + mid.x);
p1.y = LONG(0.8*rr*sin((s*6-90)/AG) + mid.y);
dc.MoveTo(p1.x, p1.y);
dc.LineTo(mid.x, mid.y);
dc.SelectObject(&greenPen);
p1.x = LONG(0.8*rr*cos((m*6-90)/AG) + mid.x);
p1.y = LONG(0.8*rr*sin((m*6-90)/AG) + mid.y);
p3.x = LONG(-0.1*rr*cos((m*6-90)/AG) + mid.x);
p3.y = LONG(-0.1*rr*sin((m*6-90)/AG) + mid.y);
p2.x = LONG(0.1*rr*cos((m*6-75)/AG) + mid.x);
p2.y = LONG(0.1*rr*sin((m*6-75)/AG) + mid.y);
//m_memDC.BeginPath();
dc.MoveTo(p3.x, p3.y);
//m_memDC.LineTo(p2.x, p2.y);
dc.LineTo(p1.x, p1.y);
p2.x = LONG(0.1*rr*cos((m*6-105)/AG) + mid.x);
p2.y = LONG(0.1*rr*sin((m*6-105)/AG) + mid.y);
dc.MoveTo(p3.x, p3.y);
//m_memDC.LineTo(p2.x, p2.y);
dc.LineTo(p1.x, p1.y);
// m_memDC.EndPath();
// rgn1.CreateFromPath(&m_memDC);
dc.SelectObject(&bluePen);
p1.x = LONG(0.7*rr*cos((h*30-90)/AG) + mid.x);
p1.y = LONG(0.7*rr*sin((h*30-90)/AG) + mid.y);
p3.x = LONG(-0.1*rr*cos((h*30-90)/AG) + mid.x);
p3.y = LONG(-0.1*rr*sin((h*30-90)/AG) + mid.y);
p2.x = LONG(0.1*rr*cos((h*30-60)/AG) + mid.x);
p2.y = LONG(0.1*rr*sin((h*30-60)/AG) + mid.y);
// m_memDC.BeginPath();
dc.MoveTo(p3.x, p3.y);
//m_memDC.LineTo(p2.x, p2.y);
dc.LineTo(p1.x, p1.y);
p2.x = LONG(0.1*rr*cos((h*30-120)/AG) + mid.x);
p2.y = LONG(0.1*rr*sin((h*30-120)/AG) + mid.y);
dc.MoveTo(p3.x, p3.y);
//m_memDC.LineTo(p2.x, p2.y);
dc.LineTo(p1.x, p1.y);
// m_memDC.EndPath();
break;
CDialog::OnTimer(nIDEvent);
}