?? 0510210204watchview.cpp
字號:
// 0510210204watchView.cpp : implementation of the CMy0510210204watchView class
//
#include "stdafx.h"
#include "0510210204watch.h"
#include"ClockDlg.h"
#include"DaoDialog.h"
#include"AlarmDialog.h"
#include"Dialog1.h"
#include "0510210204watchDoc.h"
#include "0510210204watchView.h"
#include"math.h"
#define pi 3.141592654
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMy0510210204watchView
IMPLEMENT_DYNCREATE(CMy0510210204watchView, CView)
BEGIN_MESSAGE_MAP(CMy0510210204watchView, CView)
//{{AFX_MSG_MAP(CMy0510210204watchView)
ON_COMMAND(ID_CURRENT_TIME, OnCurrentTime)
ON_WM_TIMER()
ON_WM_CREATE()
ON_COMMAND(ID_SHUMA_TIME, OnShumaTime)
ON_COMMAND(ID_JISHI_BEGIN, OnJishiBegin)
ON_COMMAND(ID_JISHI_END, OnJishiEnd)
ON_COMMAND(ID_JISHI_RESET, OnJishiReset)
ON_WM_DESTROY()
ON_COMMAND(ID_JISHI_PAUSE, OnJishiPause)
ON_COMMAND(ID_DAOJI_BEGIN, OnDaojiBegin)
ON_COMMAND(ID_DAOJI_END, OnDaojiEnd)
ON_COMMAND(ID_DAOJI_SET, OnDaojiSet)
ON_COMMAND(ID_DAOJI_PAUSE, OnDaojiPause)
ON_COMMAND(ID_ALARM_CLOSE, OnAlarmClose)
ON_COMMAND(ID_ALARM_SET, OnAlarmSet)
ON_COMMAND(ID_JISUANQI, OnJisuanqi)
ON_WM_ERASEBKGND()
ON_COMMAND(ID_JISHI_SET, OnJishiSet)
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMy0510210204watchView construction/destruction
CMy0510210204watchView::CMy0510210204watchView()
{
// TODO: add construction code here
}
CMy0510210204watchView::~CMy0510210204watchView()
{
}
BOOL CMy0510210204watchView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CMy0510210204watchView drawing
void CMy0510210204watchView::OnDraw(CDC* pDC)
{
CMy0510210204watchDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
DrawFace(pDC);
}
/////////////////////////////////////////////////////////////////////////////
// CMy0510210204watchView printing
BOOL CMy0510210204watchView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CMy0510210204watchView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CMy0510210204watchView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CMy0510210204watchView diagnostics
#ifdef _DEBUG
void CMy0510210204watchView::AssertValid() const
{
CView::AssertValid();
}
void CMy0510210204watchView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CMy0510210204watchDoc* CMy0510210204watchView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMy0510210204watchDoc)));
return (CMy0510210204watchDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMy0510210204watchView message handlers
void CMy0510210204watchView::ShowTime(int left, int top)
{
CDC *pDC=GetDC();
if(mode==0)
{
CTime time =CTime::GetCurrentTime();
CString shijian;
shijian.Format(" 現在時間:%d - %02d- %02d %02d : %02d : %02d ",time.GetYear(),time.GetMonth(),time.GetDay(),time.GetHour(),time.GetMinute(),time.GetSecond());
pDC->TextOut(left,top,shijian);
}
else if(mode==1)
{
CString shijian;
shijian.Format(" 秒表時間: %02d :%02d : %02d %02d ",m_jishi_h,m_jishi_m,m_jishi_s,m_jishi_tens);
pDC->TextOut(left,top,shijian);
}
else if(mode==2)
{
CString shijian;
shijian.Format(" 倒計時: %02d :%02d : %02d %02d ",m_daoji_h,m_daoji_m,m_daoji_s,m_daoji_tens);
pDC->TextOut(left,top,shijian);
}
DrawZhizhen(pDC);
}
void CMy0510210204watchView::OnCurrentTime()
{
// TODO: Add your command handler code here
mode=0;
}
void CMy0510210204watchView::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
CTime time=CTime::GetCurrentTime();
CMenu* MainMenu;CMenu* menu;
{
if(mode==1&&(!m_jishi_mode))
{
MainMenu=AfxGetApp()->m_pMainWnd->GetSystemMenu(FALSE);
MainMenu->EnableMenuItem(SC_CLOSE,MF_BYCOMMAND | MF_GRAYED);
menu=AfxGetApp()->m_pMainWnd->GetMenu();
menu->EnableMenuItem(ID_APP_EXIT,MF_BYCOMMAND | MF_GRAYED);
m_jishi_tens++;
if(m_jishi_tens==100)
{
m_jishi_tens=m_jishi_tens%100;
m_jishi_s++;
if(m_jishi_s==60)
{
m_jishi_m++;
if(m_jishi_m==60)
{
m_jishi_h++;
m_jishi_s=m_jishi_s%60;
m_jishi_h=m_jishi_h%12;
}
}
m_jishi_m=m_jishi_m%60;
}
}
else if(mode==2&&(!m_daoji_mode))
{
MainMenu=AfxGetApp()->m_pMainWnd->GetSystemMenu(FALSE);
MainMenu->EnableMenuItem(SC_CLOSE,MF_BYCOMMAND | MF_GRAYED);
menu=AfxGetApp()->m_pMainWnd->GetMenu();
menu->EnableMenuItem(ID_APP_EXIT,MF_BYCOMMAND | MF_GRAYED);
if((m_daoji_s==0)&&(m_daoji_m==0)&&(m_daoji_tens==0))
{
OnDaojiPause();
MessageBox("倒計時時間到!");
return;
}
m_daoji_tens--;
m_daoji_tens=(m_daoji_tens+100)%100;
if(m_daoji_tens==99)
{
m_daoji_s--;
m_daoji_s=(m_daoji_s+60)%60;
if(m_daoji_s==59)
{
m_daoji_m--;
m_daoji_m=(m_daoji_m+60)%60;
if(m_daoji_m==59)
{
m_daoji_h--;
m_daoji_h=(m_daoji_h+12)%12;
}
}
}
}
else
{
MainMenu=AfxGetApp()->m_pMainWnd->GetSystemMenu(FALSE);
MainMenu->EnableMenuItem(SC_CLOSE,MF_BYCOMMAND | MF_ENABLED);
menu=AfxGetApp()->m_pMainWnd->GetMenu();
menu->EnableMenuItem(ID_APP_EXIT,MF_BYCOMMAND | MF_ENABLED);
}
}
if(m_alarm_mode)
{
if((m_alarmh==time.GetHour())&&(m_alarmm==time.GetMinute()))
{
m_alarm_mode=0;
MessageBox("時間到!時間到!");
//PlaySound("res\\1.wav",NULL,SND_ASYNC|SND_NODEFAULT);
}
}
ShowTime(350,50);
CView::OnTimer(nIDEvent);
}
int CMy0510210204watchView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
SetTimer(3,10,NULL);
q=0;
mode=0;
mpoint_s=(0,0),mpoint_m=(0,0),mpoint_h=(0,0);
m_jishi_mode=m_daoji_mode=m_alarm_mode=0;
m_daoji_ho=m_daoji_so=m_daoji_tenso=0;m_daoji_mo=1;
m_jishi_ho=m_jishi_mo=m_jishi_so=m_jishi_tenso=m_jishi_h=m_jishi_m=m_jishi_s=m_jishi_tens=0;
return 0;
}
void CMy0510210204watchView::OnShumaTime()
{
// TODO: Add your command handler code here
CClockDlg dlg;
dlg.DoModal();
}
void CMy0510210204watchView::DrawFace(CDC *pDC)
{
CPoint pt;
CString str;
CBrush*pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
CBrush*pOldBrush=pDC->SelectObject(pBrush);
pDC->Rectangle(503-118,202-118,503+118,202+118);
pDC->SelectObject(pOldBrush);
double m=-pi/3, n=2.0*pi/12;
for(int i=1;i<13;i++)
{
pt=CPoint(495,192)+CPoint(int(100*cos(m)),int(100*sin(m)));
str.Format("%2d",i);
pDC->TextOut(pt.x,pt.y,str);
m+=n;
}
}
void CMy0510210204watchView::DrawZhizhen(CDC *pDC)
{
CTime time=CTime::GetCurrentTime();int s,m,h;
if(mode==0)
{
s=time.GetSecond();
m=time.GetMinute();
h=time.GetHour();
}
else if(mode==1)
{
s=m_jishi_s;
m=m_jishi_m;
h=m_jishi_h;
}
else if(mode==2)
{
s=m_daoji_s;
m=m_daoji_m;
h=m_daoji_h;
}
CPen pen;
pen.CreatePen(0,2,RGB(255,255,255));
CPen *pOldPen=pDC->SelectObject(&pen);
pDC->MoveTo(500,200);
pDC->LineTo(mpoint_s.x,mpoint_s.y);
pen.DeleteObject();
pen.CreatePen(0,3,RGB(255,255,255));
pDC->SelectObject(&pen);
pDC->MoveTo(500,200);
pDC->LineTo(mpoint_m.x,mpoint_m.y);
pen.DeleteObject();
pen.CreatePen(0,4,RGB(255,255,255));
pDC->SelectObject(&pen);
pDC->MoveTo(500,200);
pDC->LineTo(mpoint_h.x,mpoint_h.y);
pen.DeleteObject();
double t=s*2.0*pi/60.0-pi/2.0;
pen.CreatePen(0,2,RGB(255,0,255));
pDC->SelectObject(&pen);
pDC->MoveTo(500,200);
mpoint_s.x=500+80*cos(t),mpoint_s.y=200+80*sin(t);
pDC->LineTo(mpoint_s.x,mpoint_s.y);
pen.DeleteObject();
pen.CreatePen(0,3,RGB(0,255,0));
pDC->SelectObject(&pen);
t=(m+s/60.0)*2.0*pi/60.0-pi/2.0;
pDC->MoveTo(500,200);
mpoint_m.x=500+60*cos(t),mpoint_m.y=200+60*sin(t);
pDC->LineTo(mpoint_m.x,mpoint_m.y);
pen.DeleteObject();
pen.CreatePen(0,4,RGB(0,0,255));
pDC->SelectObject(&pen);
t=(h+m/60.0)*2.0*pi/12.0-pi/2.0;
pDC->MoveTo(500,200);
mpoint_h.x=500+45*cos(t),mpoint_h.y=200+45*sin(t);
pDC->LineTo(mpoint_h.x,mpoint_h.y);
DeleteObject(pen);
pDC->SelectObject(pOldPen);
}
void CMy0510210204watchView::OnJishiBegin()
{
// TODO: Add your command handler code here
CClientDC dc(this);
mode=1;
CString str;
m_jishi_h=m_jishi_ho;
m_jishi_m=m_jishi_mo;
m_jishi_s=m_jishi_so;
m_jishi_tens=m_jishi_tenso;
str.Format("開始時間:%02d:%02d: %02d %3d ",m_jishi_h,m_jishi_m,m_jishi_s,m_jishi_tens);
dc.TextOut(680,80+q*30,str);
q++;
m_jishi_mode=0;
}
void CMy0510210204watchView::OnJishiPause()
{
// TODO: Add your command handler code here
CClientDC dc(this);
m_jishi_mode=1;
CString str;
str.Format("暫停時間:%02d:%02d: %02d %3d ",m_jishi_h,m_jishi_m,m_jishi_s,m_jishi_tens);
dc.TextOut(680,80+q*30,str);
q++;
m_jishi_ho=m_jishi_h;m_jishi_mo=m_jishi_m;m_jishi_so=m_jishi_s;m_jishi_tenso=m_jishi_tens;
}
void CMy0510210204watchView::OnJishiSet()
{
// TODO: Add your command handler code here
CDaoDialog dlg;
if(dlg.DoModal()==IDOK)
{
m_jishi_ho=dlg.m_edith;
m_jishi_mo=dlg.m_eidm;
m_jishi_so=dlg.m_edits;
m_jishi_tens=0;
}
}
void CMy0510210204watchView::OnJishiEnd()
{
// TODO: Add your command handler code here
CClientDC dc(this);
mode=0;
CString str,str1;
long int i=(m_jishi_h-m_jishi_ho)*360000+(m_jishi_m-m_jishi_mo)*6000+(m_jishi_s-m_jishi_so)*100+m_jishi_tens-m_jishi_tenso;
str1.Format("中間時間:%02d:%02d: %02d %3d ",i/360000,i%360000/6000,i%6000/100,i%100);
dc.TextOut(680,80+q*30,str1);
q++;
str.Format("結束時間:%02d:%02d: %02d %3d ",m_jishi_h,m_jishi_m,m_jishi_s,m_jishi_tens);
dc.TextOut(680,80+q*30,str);
q++;
m_jishi_ho=m_jishi_h;m_jishi_mo=m_jishi_m;m_jishi_so=m_jishi_s;m_jishi_tenso=m_jishi_tens;
}
void CMy0510210204watchView::OnJishiReset()
{
// TODO: Add your command handler code here
m_jishi_ho=m_jishi_h=m_jishi_m=m_jishi_s=m_jishi_tens=m_jishi_mo=m_jishi_so=m_jishi_tenso=0;
}
void CMy0510210204watchView::OnDestroy()
{
CView::OnDestroy();
// TODO: Add your message handler code herE
KillTimer(3);
}
void CMy0510210204watchView::OnDaojiBegin()
{
// TODO: Add your command handler code here
mode=2;
m_daoji_mode=0;
m_daoji_h=m_daoji_ho;
m_daoji_m=m_daoji_mo;
m_daoji_s=m_daoji_so;
m_daoji_tens=m_daoji_tenso;
}
void CMy0510210204watchView::OnDaojiEnd()
{
// TODO: Add your command handler code here
mode=0;
m_daoji_ho=m_daoji_h;
m_daoji_mo=m_daoji_m;
m_daoji_so=m_daoji_s;
m_daoji_tenso=m_daoji_tens;
}
void CMy0510210204watchView::OnDaojiSet()
{
// TODO: Add your command handler code here
CDaoDialog dlg;
if(dlg.DoModal()==IDOK)
{
m_daoji_ho=dlg.m_edith;
m_daoji_mo=dlg.m_eidm;
m_daoji_so=dlg.m_edits;
m_daoji_tens=0;
}
}
void CMy0510210204watchView::OnDaojiPause()
{
// TODO: Add your command handler code here
m_daoji_mode=1;
m_daoji_ho=m_daoji_h;
m_daoji_so=m_daoji_s;
m_daoji_mo=m_daoji_m;
m_daoji_tenso=m_daoji_tens;
}
void CMy0510210204watchView::OnAlarmClose()
{
// TODO: Add your command handler code here
m_alarm_mode=0;
}
void CMy0510210204watchView::OnAlarmSet()
{
// TODO: Add your command handler code here
CAlarmDialog dlg;
m_alarm_mode=1;
if(dlg.DoModal()==IDOK)
{
m_alarmh=dlg.m_alarmh;
m_alarmm=dlg.m_alarmm;
}
}
void CMy0510210204watchView::OnJisuanqi()
{
// TODO: Add your command handler code here
CDialog1 dlg1;
dlg1.DoModal();
}
BOOL CMy0510210204watchView::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
return CView::OnEraseBkgnd(pDC);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -