求一C++指针式时钟的源代码

[复制链接]
查看11 | 回复3 | 2009-2-25 08:22:53 | 显示全部楼层 |阅读模式
用Visual C++ 编写一个指针式时钟的程序,要求用单文档应用程序。
设计思想:1)用MFCAppWizard(exe)创建一个新工程,将其命名为clock。
2)在MFCAppWizard第一步中设计应用程序的类型为单个文档模式,然后单击“确定”按钮,于是应用程序clock 就创建完毕。
3)打开MFCAppWizrd,为clock,为clock类添加OnCreater和OnTimer函数
4)编辑OnDraw函数的代码,实现绘制时钟;编辑OnTimer函数的代码,用来更新窗口;编辑OnCreater函数的代码,用来设置时钟。
5)最后对此工程进行编译,若有错误,则进行修改,没有错误则运行成功。
具体内容:
首先,工程建立完毕后,打开此工程,在clockView.cpp窗口中
进行编译。
在函数void CClockView::OnDraw(CDC* pDC)下进行编译。
源代码如下:
void CClockView::OnDraw(CDC* pDC)
{
CClockDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CClockDoc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
//获取客户区大小
RECT Rect;
GetClientRect(&Rect);
//计算椭圆位置
int CenterX=Rect.right/2;
int CenterY=Rect.bottom/2;
CTime Time=CTime::GetCurrentTime();
//取当前时间
CString str;
int i,x,y;
CSize size;//创建一支黑色的笔
CPen Pen(PS_SOLID,5,RGB(0,0,0));
//选进设备表,保存原笔
CPen*Oldpen=pDC->SelectObject(&Pen);
//绘制钟面椭圆
pDC->Ellipse(5,5,Rect.right-5,Rect.bottom-5);
//设置字体颜色为红色
pDC->SetTextColor(RGB(255,0,0));
for(i=1;iGetTextExtent(str,str.GetLengh());
//计算时间点放置位置
Radians=(double)i*6.28/12.0;
x=CenterX-(size.cx/2)+(int)((double)(CenterX-0)*sin(Radians));
y=CenterY-(size.cy/2)-(int)((double()CenterY-20)*cos(Radians));
//绘制12个时间点(1-12)
pDC->TextOut(x,y,str);
}//计算时钟指针的夹角
Radians=(double)Time.GetHour()+(double)Time.GetMinute()/60.0+(double)Time.GetSecond()/3600.0;
Radians*=6.28/12.0;
//创建时针指钟画笔
CPen HourPen(PS_SOLID,5,RGB(0,255,0));
pDC->SelectObject(&HourPen);
//绘制时钟指针线
pDC->MoveTo(CenterX,CenterY);
pDC->LineTo(CenterX,(int)((doble)(CenterX/3)*sin(Radians)),CenterY-(int)((double)(CenterY/3)*cos(Radians)));
Radians=(double)Time.GetMinute()+(double)Time.GetSecond()/60.0;
Radians*=6.28/60.0;
//创建分钟指针画笔
CPen MinutePen(PS_SOLID,3,RGB(0,0,255));
pDC->SelectObject(&MinutePen);
//绘制分钟指针线
pDC->MoveTo(CenterX,CenterY);
pDC->LineTo(CenterX+(int)((double)(CenterX*2/3)*sin(Radians)),CenterY-(int)((double)(CenterY*2/3)*cos(Radians)));
Radians=(double)Time.GetSecond();..
基本上都有了
但老是提示"stdafx.h"不存在
怎么弄啊?

回复

使用道具 举报

千问 | 2009-2-25 08:22:53 | 显示全部楼层
按照下图修改工程设置,选择不使用预编译头。...
回复

使用道具 举报

千问 | 2009-2-25 08:22:53 | 显示全部楼层
以前遇到过这种情况,你可以尝试先关闭工作空间,然后把工作目录下Debug文件夹彻底删除,再打工作空间后,直接点build按纽,重新建立一个文件夹。...
回复

使用道具 举报

千问 | 2009-2-25 08:22:53 | 显示全部楼层
VC的话,是不需要"stdafx.h"的,你直接删掉这个头文件include就可以了...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行