资源简介
MFC画时钟双缓冲防止闪烁 自适应窗口大小
代码片段和文件信息
// ChildView.cpp : CChildView 类的实现
//
#include “stdafx.h“
#include “DoClock.h“
#include “ChildView.h“
#include
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CChildView
CChildView::CChildView()
{
}
CChildView::~CChildView()
{
}
BEGIN_MESSAGE_MAP(CChildView CWnd)
ON_WM_PAINT()
ON_WM_CREATE()
ON_WM_TIMER()
ON_WM_SIZE()
ON_WM_ERASEBKGND()
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;
}
void CChildView::OnPaint()
{
CPaintDC dc(this); // 用于绘制的设备上下文
// TODO: 在此处添加消息处理程序代码
// 不要为绘制消息而调用 CWnd::OnPaint()
m_memDC.FillSolidRect(m_rtClientRGB(255255255)); //填充内存背景色
//1.画圆部分
CPen CirclePen(PS_SOLID 1 RGB(02550));
CPen * pOldPen = m_memDC.Selectobject(&CirclePen);
CRect rtCircle;
GetClientRect(&rtCircle);
int nWidth = min(rtCircle.Width()rtCircle.Height()); //获取最小宽度
int nRadius = nWidth/2; //获取最小半径
CPoint ptCenter = rtCircle.CenterPoint();
rtCircle.left = ptCenter.x - nRadius; //获取左上顶点x
rtCircle.top = ptCenter.y - nRadius; //获取左上顶点y
rtCircle.right = rtCircle.left + nWidth; //获取右下角x
rtCircle.bottom = rtCircle.top + nWidth; //获取右下角y
m_memDC.Ellipse(rtCircle);
// 2.刻度部分
CPoint ptBig ptSmall;
double fpi_6 = 3.1415926 * 2 / 12;
double fpi_60 = 3.1415926 * 2 / 60;
for(int i = 0; i < 12; i++)
{
ptBig.x = ptCenter.x + (int)((double)nRadius * cos(fpi_6 * i));
ptBig.y = ptCenter.y + (int)((double)nRadius * sin(fpi_6 * i));
ptSmall.x = ptCenter.x + (int)((double)0.8f * nRadius * cos(fpi_6 * i));
ptSmall.y = ptCenter.y + (int)((double)0.8f * nRadius * sin(fpi_6 * i));
m_memDC.MoveTo(ptSmall);
m_memDC.LineTo(ptBig);
}
for(int i = 0; i < 60; i++)
{
ptBig.x = ptCenter.x + (int)((double)nRadius * cos(fpi_60 * i));
ptBig.y = ptCenter.y + (int)((double)nRadius * sin(fpi_60 * i));
ptSmall.x = ptCenter.x + (int)((double)0.9f * nRadius * cos(fpi_60 * i));
ptSmall.y = ptCenter.y + (int)((double)0.9f * nRadius * sin(fpi_60 * i));
m_memDC.MoveTo(ptSmall);
m_memDC.LineTo(ptBig);
}
//3.钟表指针部分
CTime Time = CTime::GetCurrentTime(); //获取当前时间
CString strTime;
//计算时间走动角度
double fpi_h = (double)Time.GetHour() + (double)Time.GetMinute()/60.0 +(double)Time.GetSecond()/3600.0;
fpi_h *= (2*3.1415926 / 12.0);
CPen HourPen(PS_SOLID5RGB(000));
m_memDC.Selectobject(&HourPen);
//绘画时钟指针
CPo
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5985 2015-05-06 19:33 DoClock\DoClock\ChildView.cpp
文件 677 2015-04-27 08:58 DoClock\DoClock\ChildView.h
文件 7418 2015-05-06 15:12 DoClock\DoClock\Debug\BuildLog.htm
文件 1196 2015-04-24 16:59 DoClock\DoClock\Debug\DoClock.exe.em
文件 1120 2015-05-06 15:12 DoClock\DoClock\Debug\DoClock.exe.intermediate.manifest
文件 67 2015-05-06 15:12 DoClock\DoClock\Debug\mt.dep
文件 3295 2015-04-24 16:46 DoClock\DoClock\DoClock.cpp
文件 618 2015-04-24 16:46 DoClock\DoClock\DoClock.h
文件 9388 2015-04-24 16:46 DoClock\DoClock\DoClock.rc
文件 5760 2015-04-27 10:26 DoClock\DoClock\DoClock.vcproj
文件 1415 2015-05-07 19:38 DoClock\DoClock\DoClock.vcproj.SN4580446.Administrator.user
文件 6178 2015-04-24 16:46 DoClock\DoClock\MainFrm.cpp
文件 1173 2015-04-24 16:46 DoClock\DoClock\MainFrm.h
文件 3103 2015-04-24 16:46 DoClock\DoClock\ReadMe.txt
文件 67777 2007-11-28 16:21 DoClock\DoClock\res\DoClock.ico
文件 363 2015-04-24 16:46 DoClock\DoClock\res\DoClock.rc2
文件 598 2003-07-23 17:52 DoClock\DoClock\res\Toolbar.bmp
文件 2994 2008-02-08 14:46 DoClock\DoClock\res\Toolbar256.bmp
文件 815 2015-04-24 16:46 DoClock\DoClock\Resource.h
文件 140 2015-04-24 16:46 DoClock\DoClock\stdafx.cpp
文件 1854 2015-04-24 16:46 DoClock\DoClock\stdafx.h
文件 1030 2015-04-24 16:46 DoClock\DoClock\targetver.h
文件 7976 2007-08-30 17:14 DoClock\DoClock\UserImages.bmp
文件 23505920 2015-05-07 19:38 DoClock\DoClock.ncb
文件 887 2015-04-24 16:46 DoClock\DoClock.sln
..A..H. 29184 2015-05-07 19:38 DoClock\DoClock.suo
目录 0 2015-05-18 14:04 DoClock\DoClock\Debug
目录 0 2015-04-27 08:50 DoClock\DoClock\res
目录 0 2015-05-18 14:04 DoClock\Debug
目录 0 2015-05-06 19:33 DoClock\DoClock
............此处省略4个文件信息
- 上一篇:用vc++6.0实现的银行账户管理系统
- 下一篇:利用FFT计算频谱图
评论
共有 条评论