资源简介
采用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
相关资源
- 基于mfc的多线程文件传输
- VC++ 多线程文件读写操作
- 移木块游戏,可以自编自玩,vc6.0编写
- MFC数字钟(基于VC6.0)
- 电子时钟 有C语言程序,PROTEUS仿真图
- VC++MFC小游戏实例教程(实例)+MFC类库
- VC++实现CMD命令执行与获得返回信息
- ChartCtrl控件库(可在VS2019中使用)
- 商品库存管理系统 C++ MFC
- Proteus仿真:基于定时器的可调时钟
- Proteus仿真:DS1302(时钟or日历).rar
- mfc 调用redis
- MFC视频播放器源码(支持avi/wma/mp3等格
- VC++基于OpenGL模拟的一个3维空间模型
- mfc绘图大全(画直线、矩形、椭圆)
- MFC控件重绘
- hook,捕获所有案件,查找所有窗口,
- (学习)VS2010之MFC入门到精通教程
- 基于VC++的SolidWorks二次开发SolidWorks
- MFC文档_视图_框架_模板结构体系深入
- 简单员工管理系统(适合初学MFC)
- 派克变换VC++源码(附文档)
- VC++ 串口
- MFC五子棋游戏
- VC++ 大富翁4_大富翁游戏源码
- MFC UDP编程
- MFC的异步网络通讯应用程序
- VC++ 摄像头视频采集与回放源程序
- C++MFC模块讲解,黑发程序员课程整理
- 转 VC++ 实现电子邮件(Email)发送
评论
共有 条评论