资源简介
采用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查看器工具软件
相关资源
- 基于mfc的多线程文件传输
- MFC数字钟(基于VC6.0)
- 电子时钟 有C语言程序,PROTEUS仿真图
- VC++MFC小游戏实例教程(实例)+MFC类库
- ChartCtrl控件库(可在VS2019中使用)
- 商品库存管理系统 C++ MFC
- Proteus仿真:基于定时器的可调时钟
- Proteus仿真:DS1302(时钟or日历).rar
- mfc 调用redis
- MFC视频播放器源码(支持avi/wma/mp3等格
- mfc绘图大全(画直线、矩形、椭圆)
- vs2008 can总线通讯源码
- MFC控件重绘
- hook,捕获所有案件,查找所有窗口,
- (学习)VS2010之MFC入门到精通教程
- MFC文档_视图_框架_模板结构体系深入
- 简单员工管理系统(适合初学MFC)
- MFC五子棋游戏
- MFC UDP编程
- MFC的异步网络通讯应用程序
- C++MFC模块讲解,黑发程序员课程整理
- 一个简单而强大的基于MFC的web server源
- 基于MFC的VC++仿QQ浏览器源码(雏形)
- MFCaccess.rar
- VC++MFC课程设计的学生成绩管理系统
- MFC 日历控件 万年历 Calendar自绘
- CrystalDiskInfo-HDD/SSD硬盘信息,SMART信息
- MFC自定义界面HUI,高效简单,含详细
- 仿射密码-Affine cipher
- vs2008串口接收数据并存储于TXT文档
评论
共有 条评论