資源簡介
采用vs2008 編寫的一款MFC時鐘程序。
V2.0主要更新了數字顯示和圖標的顯示。
采用vs2008 編寫的一款MFC時鐘程序。
V2.0主要更新了數字顯示和圖標的顯示。
采用vs2008 編寫的一款MFC時鐘程序。
V2.0主要更新了數字顯示和圖標的顯示。

代碼片段和文件信息
//?ChildView.cpp?:?CChildView?類的實現
//
#include?“stdafx.h“
#include?“Clock.h“
#include?“ChildView.h“
#include?“math.h“
#define?M_PI?3.14159265358979323846
#ifdef?_DEBUG
#define?new?DEBUG_NEW
#endif
//?CChildView
CChildView::CChildView()
{
}
CChildView::~CChildView()
{
}
BEGIN_MESSAGE_MAP(CChildView?CWnd)
ON_WM_PAINT()
ON_WM_TIMER()
ON_WM_CREATE()
ON_WM_DESTROY()
END_MESSAGE_MAP()
//?CChildView?消息處理程序
BOOL?CChildView::PreCreateWindow(CREATESTRUCT&?cs)?
{
if?(!CWnd::PreCreateWindow(cs))
return?FALSE;
cs.dwExstyle?|=?WS_EX_CLIENTEDGE;
cs.style?&=?~WS_BORDER;
cs.lpszClass?=?AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS?
::LoadCursor(NULL?IDC_ARROW)?reinterpret_cast(COLOR_WINDOW+1)?NULL);
return?TRUE;
}
int?CChildView::OnCreate(LPCREATESTRUCT?lpCreateStruct)
{
if?(CWnd::OnCreate(lpCreateStruct)?==?-1)
return?-1;
SetTimer(1001000NULL);//WM_TIMER消息,?每秒觸發一次
return?0;
}
void?CChildView::OnPaint()?
{
CPaintDC?dc(this);?//?用于繪制的設備上下文
DrawClock(&dc);//重繪時鐘面
}
void?CChildView::OnTimer(UINT_PTR?nIDEvent)
{
CWnd::OnTimer(nIDEvent);
if(nIDEvent?==?100)
{//每秒會觸發一次,在客戶區重繪時鐘面
CClientDC?dc(this);
DrawClock(&dc);
}
}
void?CChildView::OnDestroy()
{
CWnd::OnDestroy();
KillTimer(100);//已經不需要計時器了,將它刪除
}
//該重載函數可以將CSize的兩個成員都乘上一個倍率
static?CSize?operator*(const?CSize&?szdouble?scalar)
{
CSize?new_sz;
new_sz.cx?=?int?(sz.cx?*?scalar);
new_sz.cy?=?int?(sz.cy?*?scalar);
return?new_sz;
}
//根據角度和半徑,計算橢圓圓周上的點坐標
CSize?PositionOnCircle(const?CSize&?radiusdouble?angle)
{
CSize?result;
result.cx?=?(int)(sin(angle*2*M_PI)*radius.cx);
result.cy?=?(int)(-cos(angle*2*M_PI)*radius.cy);
return?result;
}
//時鐘面的每個分度的顏色
const?static?COLORREF?pieColorLookup[]=
{
RGB(170251210)RGB(235252169)RGB(215245255)
};
//繪畫時鐘
void?CChildView::DrawClock(CDC*?pDC)
{
CRect?clockRect;
GetClientRect(&clockRect);
CPen?pen;
CBrush?brush;
int?piePart;
CPoint?centerp1p2;
CSize?radius;
SYSTEMTIME?st;
GetLocalTime(&st);//獲取當前時間
//設置半徑和圓心
radius?=?clockRect.Size();
center?=?clockRect.CenterPoint();
//設置走向為逆時針
pDC->SetArcDirection(AD_CLOCKWISE);
double?th?=?30;
double?r?=??radius.cx/2;
CPoint?num;
//將時鐘面分為12區域,并填充不同顏色
for(piePart?=?0;piePart?<12;piePart?++)
{
COLORREF?pieColor;
pieColor?=?pieColorLookup[piePart%3];
pen.CreatePen(PS_SOLID5pieColor);
brush.CreateSolidBrush(pieColor);
pDC->Selectobject(&pen);
pDC->Selectobject(&brush);
//計算每個區域在圓周上的起止位置
p1?=?center?+?PositionOnCircle(radiuspiePart/12.0);
p2?=?center?+?PositionOnCircle(radius(piePart?+?1)/12.0);?
pDC->Pie(&clockRectp1p2);
//顯示?時鐘數字
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(50180250));
pDC->TextOut(1380“12“);
pDC->TextOut(21015“1“);
pDC->TextOut(26565“2“);
pDC->TextOut(280132“3“);
pDC->TextOut(264205“4“);
pDC->TextOut(215255“5“);
pD
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2012-08-04?12:30??Clock\
?????文件????????4024??2012-08-04?11:01??Clock\ChildView.cpp
?????文件?????????561??2012-08-04?00:09??Clock\ChildView.h
?????文件???????63304??2012-08-04?09:15??Clock\Clock.aps
?????文件????????2803??2012-08-04?08:27??Clock\Clock.cpp
?????文件?????????470??2012-08-03?23:35??Clock\Clock.h
?????文件????????8507??2012-08-04?09:15??Clock\Clock.rc
?????文件????????5655??2012-08-04?08:28??Clock\Clock.vcproj
?????文件????????1423??2012-08-04?12:28??Clock\Clock.vcproj.caizhiming-PC.caizhiming.user
?????文件????????3072??2012-08-04?09:16??Clock\MainFrm.cpp
?????文件?????????947??2012-08-03?23:43??Clock\MainFrm.h
?????文件????????2947??2012-08-03?14:52??Clock\ReadMe.txt
?????目錄???????????0??2012-08-04?12:30??Clock\res\
?????文件?????????724??2012-08-03?23:41??Clock\resource.h
?????文件???????21630??2012-08-04?12:27??Clock\res\Clock.ico
?????文件?????????361??2012-08-03?14:52??Clock\res\Clock.rc2
?????文件?????????598??2003-07-24?09:52??Clock\res\Toolbar.bmp
?????文件?????????136??2012-08-03?14:52??Clock\stdafx.cpp
?????文件????????1796??2012-08-03?14:52??Clock\stdafx.h
?????文件????????1030??2012-08-03?14:52??Clock\targetver.h
- 上一篇:掃雷游戲源程序 c++課程設計必備
- 下一篇:文件MD5查看器工具軟件
評論
共有 條評論