资源简介
采用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
相关资源
- VC++的MFC计算机图形学点线多边形裁剪
- 图书管理信息系统课程设计 C++ MFC
- mfc-static控件显示图片-滚动条-放大缩
- VC++6.0MFC扫雷程序
- FIr滤波器的设计基于VC++
- 基于MFC的绘图程序,可以选择,移动
- 分水岭算法VC++实现
- 基于Scintilla开发的MFC多文档源代码编
- MFC实现简易绘图软件
- 2个线程同时运行MFC
- 银行排号系统MFC实现和控制台实现
- vc++2010学习版 最新版Microsoft Visual C+
- VC++编写的科学计算器
- 在MFC的对话框类中向闭合区域填充颜
- MFC+OpenGL 读取并显示STL三维模型
- MFC与SQL Server
- MFC编写的图书管理系统,用到数据库
- MFC 版俄罗斯方块
- 基于MFC的UDP通信实现
- 自定义消息
- Opengl VC++演示六轴机械手
- mfc 实现迷宫程序
- 记账本小程序
- vc++6.0 MFC 写的贪吃蛇工程源码
- MFC 绘图工具 绘制简单 图形文档和代
- MFC平台下的电子词典
- MFC 贪吃蛇
- MFC教师住房管理系统和矩阵运算以及
- 高斯投影坐标正反算MFC
- mfc实现的考试出题系统
评论
共有 条评论