VC++实验报告

时间:2024.4.30

VC++程序设计实验报告

姓名:徐新 成绩:____

实验名称:简易的图形显示记录程序。

实验目的:熟悉并掌握VC++的MFCAppWizard程序的使用,自行并设计和实现一个简单的VC++程序,如能应用更好。

一.设计过程和算法描述:

1. 界面设计:我的VC++界面上存在的控件有:文件,编辑,帮助,查看,显示图形和颜色。其中,文件,编辑,帮助和查看控件为系统自动定义,显示图形和颜色控件为本人自行添加。

2. 下面介绍一下我的程序的主要控件的情况:

(1).图形显示:图形显示控件主要用于用户选择想要在窗口中显示的图形,其中包括:1.ID_YUAN圆形

2 .ID_JVXING矩形

3.ID_YJJVXING圆角矩形

4ID_SHANXING扇形

由于是显示图形,所以选好了图形之后只能显示事先定义好的图形,位置和颜色可以变(可以根据鼠标的位置和颜色选择控件修改),但是图形的大小等无法更改,这也是一个缺憾。

(2).颜色:颜色控件主要是用于用户选择所显示图形的边框颜色。 其中包括:1..ID_YANSE颜色选择

颜色选择用于选择用户需要现实的图形的边框颜色,如果用户在程序一开始没有指定颜色的话,默认为黑色。

以上为界面主要控件的描述。

二.算法设计

我设计这个程序的灵感来源于时间计数器(书后实验之一),主要用于实现已给出图形的绘图应用和记录以画图形的数量记载,再加上一些颜色和画笔的应用。

1..主要标识符:

这个程序包括的主要标识符有:

(1).左键响应函数:m_nLButton:用于响应鼠标左键按下消息;

,m_nLButton1,2,3,4:分别表示圆形,矩形,圆角矩形和扇形的数量;

(2).m_nLButton:用于启动计时器和弹出用于统计的MessageBox;

(3).画笔:p1,p2,p3,p4:用于画出边框(四种颜色的线,与边框对齐); Pen:用于在鼠标点击时显示图形;

(4).时间计数器Timer:定义为系统自动定义,但要调用。我的这个程序中时间计数器主要用于记录鼠标左键的点击次数,以便在MessageBox中显示;

(5).颜色变量color[i]:用于保存颜色,color[0]为黑色,color[1]为红色,color[2]为绿色,color[3]为蓝色;

(6).菜单中的标识符:ID_YUAN显示圆形,

ID_JVXING显示矩形

ID_YJJVXING显示圆角矩形

ID_SHANXING显示扇形

ID_YANSE调用颜色选择对话框

(7)变量:i,k:就是普通的变量-_-||||

(8)变量:ID:这个变量很重要,用于调用鼠标左键点击事件的图形显示消息响应,方法是使变量ID=ID_YUAN等,再用switch语句调用圆形,矩形,圆角矩形和扇形的画图语句,使得鼠标左键点击事件调用图形绘制函数,显示已有的图形;

2..主要代码段功能:

主要代码段都位于CXxxView中

(1) 四条边框:其实就是用画笔画四条线,要与窗口的边框相一致 先定义四个画笔:CPen p1,p2,p3,p4;

全都是实线,宽度为20,颜色不同:p1->CreatePen(PS_SOLID,20,color[i]); 紧贴四条边框:p1:MoveTo(10,0);LineTo(10,450);

P2:MoveTo(940,0);LineTo(940,450);

P3:MoveTo(30,10);LineTo(920,10);

P4:MoveTo(30,450);LineTo(920,450);

(2) 图形选择:

使用switch语句调用四个图形的ID地址,改变鼠标左键点击出现的图形,使用ID作为变量:switch(ID),当case分别为ID_YUAN, ID_JVXING, ID_YJJVXING, ID_SHANXING时,画出圆形,矩形,圆角矩形和扇形,并显示在窗口上;

(3) 记录用时间计数器:

先在鼠标左键点击函数中启用时间计数器:SetTimer(3,50,NULL); 再定义鼠标单击变量的变化:m_nLButton++;

当然了,在switch语句中,m_nLButton1,2,3,4也要自加来记录各个图形的数量。

到OnTimer中定义鼠标点击消息响应:If(nIDEvent=3);

先关闭时间计数器:KillTimer(nIDEvent);

在弹出MessageBox:MessageBox(str,"报告");

再设置弹出的消息:str.Formi("你已经画了%d图形!\n含有%d个圆形!\n含有%d个矩形!\n含有%d个圆角矩形!\n含有%d个扇

形!",m_nLButton,m_nLButton1,m_nLButton2,m_nLButton3,m_nLButton4);

(4) 颜色选择对话框:void CXxxView::OnYanse()

{

CColorDialog dlg;

dlg.m_cc.Flags|=CC_RGBINIT;

dlg.m_cc.rgbResult=YANSE;

if(IDOK==dlg.DoModal())

{YANSE=dlg.m_cc.rgbResult;}}

四.原代码清单(只列出我自己写的部分,系统自定定义的没写): CXxxView::CXxxView()

{

m_nLButton=0;

m_nLButton1=0; m_nLButton2=0; m_nLButton3=0; m_nLButton4=0; i=0; k=0; color[0]=RGB(0,0,0); color[1]=RGB(255,0,0); color[2]=RGB(0,255,0); color[3]=RGB(0,0,255);

}初始化变量。

void CXxxView::OnDraw(CDC* pDC)

{

CXxxDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc); CPen p1,p2,p3,p4; p1.CreatePen(PS_SOLID,20,color[0]); CPen*pOldPen=pDC->SelectObject(&p1); pDC->MoveTo(10,0); pDC->LineTo(10,450); pDC->SelectObject(pOldPen); p2.CreatePen(PS_SOLID,20,color[1]); pDC->SelectObject(&p2); pDC->MoveTo(940,0); pDC->LineTo(940,450); pDC->SelectObject(pOldPen); p3.CreatePen(PS_SOLID,20,color[2]); pDC->SelectObject(&p3); pDC->MoveTo(30,10); pDC->LineTo(920,10); pDC->SelectObject(pOldPen); p4.CreatePen(PS_SOLID,20,color[3]); pDC->SelectObject(&p4); pDC->MoveTo(30,450); pDC->LineTo(920,450); pDC->SelectObject(pOldPen); SetTimer(1,500,NULL);

}用四个画笔p1,p2,p3,p4 话一个边框。

void CXxxView::OnLButtonDown(UINT nFlags, CPoint point)

{

CDC*pDC=GetDC();

CPen pen; pen.CreatePen(PS_SOLID,6,YANSE); pDC->SelectObject(&pen); m_nLButton++; SetTimer(2,50,NULL);

switch(ID)

{ case ID_YUAN:

pDC->RoundRect(point.x-50,point.y-50,point.x+50,point.y+50,100,100);m_nLButton1++;break;

case ID_JVXING:

pDC->Rectangle(point.x-60,point.y-30,point.x+60,point.y+30);m_nLButton2++;break;

caseID_YJJVXING:pDC->RoundRect(point.x-50,point.y-60,point.x+50,point.y+60,20,20);m_nLButton3++;break;

caseID_SHANXING:pDC->Pie(point.x-40,point.y-60,point.x+40,point.y+60,point.x-30,point.y-30,point.x+30,point.y+30);m_nLButton4++;break; }

void CXxxView::OnRButtonDown(UINT nFlags, CPoint point)

{SetTimer(3,50,NULL);

CView::OnRButtonDown(nFlags, point);} CView::OnLButtonDown(nFlags, point);}

与显示图形相对应,显示目标图形;

五、实验结果分析

打开界面,有一个边框,点击显示图形,选择想要的图形,在选择颜色,鼠标点击左键显示图形,再摁右键显示统计结果。

1遇到的但没有解决的问题:

(1)如果事先没有选择要画的图形而直接点击窗口,则右键点击也会显示有图形画出。

(2)在小窗口画的图形在窗口最大化后会消失,但是用画笔画的边框就不会消失。

2、遇到并解决的问题:

(1)、没写或忘写符号、。。。。。。。。

(2)、设置变量ID是老是提示“未声名的变量error C2065: 'ID' : undeclared identifier”,解决是在CView,和CDoc中都定义ID。

(3)、pen等定义时的错误

(4)、颜色对话框的设计实际上我不是很懂,是从同学那里考下来的 其实在编译过程中有许多问题,大体可以分为两类,一是自身的书写错误,二是输入的语句不符合VC++的规则。

六、感想

这个程序是我用了5天时间做的,开始是想做一个画图程序,但是由于自身能力有限和作画图程序的人太多,所以就该做这个了。我的灵感来源于书后的一个练习,就是鼠标点击次数统计,当时觉得有意思就当练习做了一下,后来一想,为什么不自己加一些东西呢?于

是我就用已学的知识,加上同学的帮助,做了这个小程序。其实,过程中有好几回想放弃,遇到了不会的问题都恨不得摔电脑,(值得一提的是我们寝室的人几乎是都在奋斗,为了解决一个问题,好几天都是2点才睡觉)但是每完成一个小的语句就会有一种高兴的心情,再加上同学的鼓励,于是就继续了。也许我的程序不是很好,不是很复杂,但确实是本人的一个作品,除了颜色对话框外没有任何抄袭,也算是一个小成就吧,因为毕竟是很用心的做了一件事,呵呵。结果如何请老师您自行定夺,但是完成这个作品我已经很高兴了,谢谢您!


第二篇:VC++实验报告1


北电力大学实验报告 华

华 北 电 力 大 学 实 验 报 告

VC实验报告1

第 1 页

VC实验报告1

第 2 页

VC实验报告1

第 3 页

VC实验报告1

第 4 页

VC实验报告1

第 5 页

VC实验报告1

第 6 页

VC实验报告1

第 7 页

VC实验报告1

第 8 页

更多相关推荐:
c语言实验报告模板完成版

高级语言程序设计学生实验报告专业计算机科学与技术学号姓名1实验一C程序的运行环境和使用方法1实验目的1了解所用的计算机系统的基本操作方法学会独立使用该系统2了解在该系统上如何编辑编译连接和运行一个C程序3通过运...

C语言实验报告

实验一C程序的运行环境和使用方法1实验目的1了解所用的计算机系统的基本操作方法学会独立使用该系统2了解在该系统上如何编辑编译连接和运行一个C程序3通过运行简单的C程序初步了解C程序的特点2实验程序清单及运行结果...

C语言实验报告(三)

华北水院高级语言程序设计C语言实验报告20xx20xx学年第二学期20xx级专业班级学号一实验题目循环结构程序设计二实验目的略三实验内容1程序验证略2程序设计1找出100900之间的无暇素数所谓无暇素数是指本身...

C语言实验报告(样板)

滁州学院机械与电子工程学院实验报告课程姓名专业20xx机械本科学号实验一工作平台一目的和要求1熟悉语言程序的支持运行环境了解所用计算机系统的软硬件配置和使用方法2初步了解运行一个语言程序的过程二实验环境硬件环境...

C语言实验报告样本

实验报告课程名称C语言程序设计实验项目顺序结构程序设计实验仪器计算机系别机电工程学院专业机械设计制造及其自动化班级学号机械110120xx010008学生姓名郭奎宇实验日期20xx年10月24日成绩指导教师一实...

c语言实验报告

C语言程序设计实验报告1实验目的1熟悉C语言编译器2掌握基本的C代码编写方法与风格3掌握基本的数据类型运算符与表达式的灵活运用4掌握顺序分支结构程序设计思想与代码编写方法实验内容1在D盘根目录创建以自己姓名拼音...

c语言实验报告

实验报告1已知三角形的边为abc试设计程序输入三边的值并计算三角形的面积已知三角形的面积计算公式为Sabc2Areaasbsc截图为程序及其运行结果分析常错的地方就是容易后面使用到的字母忘记定义导致程序不认识不...

c实验报告

西安科技大学计算机基本技能训练报告班级学号姓名20xx年1月1题目文件移位加密与解密一题目介绍此题目根据移位给文件加密和解密将某一已知文件的内容仅限于英文字母以字符形式读出根据密钥用户从键盘输入将对应字符进行移...

c均值算法c++实现实验报告

模式识别实验二c均值算法1实验目的熟悉c均值算法通过程序语言实现该算法比较每个聚类的初始均值不同时算法结果的差别理解动态聚类算法的算法思想2实验内容和要求写程序实现c均值算法并用表中的三维数据进行测试下面给出了...

C程序设计教程与实验 吉顺如主编 实验报告5参考答案

高级语言程序设计实验报告班级学号实验5循环结构程序设计一实验目的1掌握循环结构程序设计的3种控制语句while语句dowhile语句for语句的使用方法2了解用循环的方法实现常用的算法设计二实验内容11下列程序...

C语言实验报告标准格式

暨南大学本科实验报告专用纸课程名称高级语言程序设计成绩评定实验项目名称结构体和共用体指导教师张晓刚实验项目编号8060151108实验项目类型综合性实验地点C301学生姓名苟长弘学号20xx051282学院信息...

C语言实验报告(二)

C语言实验报告二一实验目的1234掌握C语言中选择结构掌握C语言中分段函数的输入与输出掌握ifelse条件语句的用法掌握数学函数的使用二实验内容1有一分段函数如下编写程序输入x实数的值输出以如下格式xy即小数部...

c++实验报告(35篇)