• 大小: 4.07MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-09-15
  • 语言: C/C++
  • 标签: 时钟  MFC  vc++  

资源简介

采用vs2008编写的一款MFC时钟程序

资源截图

代码片段和文件信息

// 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& szfloat 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);
//将时钟面分为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->TextOut(1380“12“);
pDC->TextOut(280132“3“);
pDC->TextOut(142275“6“);
pDC->TextOut(0135“9“);
pen.Deleteobject();
brush.Deleteobject();

//画时针
pen.CreatePen(PS_SOLID6RGB(18000));
pDC->Selectobject(&pen);
pDC->MoveTo(center);
pDC->Line

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2012-08-04 08:51  Clock\
     文件        3687  2012-08-04 08:46  Clock\ChildView.cpp
     文件         561  2012-08-04 00:09  Clock\ChildView.h
     文件       63304  2012-08-04 00:17  Clock\Clock.aps
     文件        2803  2012-08-04 08:27  Clock\Clock.cpp
     文件         470  2012-08-03 23:35  Clock\Clock.h
     文件    12692480  2012-08-04 08:51  Clock\Clock.ncb
     文件        8516  2012-08-04 00:17  Clock\Clock.rc
     文件        5655  2012-08-04 08:28  Clock\Clock.vcproj
     文件        1423  2012-08-04 08:50  Clock\Clock.vcproj.caizhiming-PC.caizhiming.user
     文件        3071  2012-08-04 08:21  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 08:50  Clock\res\
     文件         724  2012-08-03 23:41  Clock\resource.h
     文件       21630  2012-08-04 08:20  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

评论

共有 条评论