C++MFC画图程序记事本程序计算器 程序.docx

上传人:b****6 文档编号:5024796 上传时间:2022-12-12 格式:DOCX 页数:18 大小:361.73KB
下载 相关 举报
C++MFC画图程序记事本程序计算器 程序.docx_第1页
第1页 / 共18页
C++MFC画图程序记事本程序计算器 程序.docx_第2页
第2页 / 共18页
C++MFC画图程序记事本程序计算器 程序.docx_第3页
第3页 / 共18页
C++MFC画图程序记事本程序计算器 程序.docx_第4页
第4页 / 共18页
C++MFC画图程序记事本程序计算器 程序.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

C++MFC画图程序记事本程序计算器 程序.docx

《C++MFC画图程序记事本程序计算器 程序.docx》由会员分享,可在线阅读,更多相关《C++MFC画图程序记事本程序计算器 程序.docx(18页珍藏版)》请在冰豆网上搜索。

C++MFC画图程序记事本程序计算器 程序.docx

C++MFC画图程序记事本程序计算器程序

 

姓名:

班级:

学号:

完成日期:

 

武汉科技大学机械自动化学院

 

任务一开发一个计算器程序

(1)软件目标:

实现数字的加、减、乘、除、平方、开方、正弦、正切,余弦等功能,并设置显示学生信息按钮。

(2)软件设计:

A.开发环境

基于VC++6.0的MicrosoftFoundationClasses(即MFC)开发。

MFC以类的形式封装了windows的API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。

在开发过程中运用到了windows的内建控件和组件的封装类。

该程序选用了MFC中的对话框模式。

B.基本操作流程

打开VC++6.0后点击MFCappwizard(exe),选择对话框创建工程。

在对话框中分别添加Button控件、static控件和edit控件。

Button控件作为数字输入和运算符号的选择,static控件用来显示静态提示标题,用edit控件显示计算结果。

将设置的控件改好ID,基本用户界面如下图:

使用CString变量m_result保存结果,在构造函数中初始化使得m_result=0

数字1、2、3、4等用一个函数进行响应,函数如下图:

从函数中可以看到,当按下button1(即数字1)时,函数OnButton1()响应,CString变量m_result的值被改为1,使用UpdateData(FALSE)函数在edit控件中更新显示。

当按下其他数字键函数同样处理。

同样用一个函数对运算符号,加减乘除进行响应,为了能区别用户所输入的运算字符,在

中申请一个int型的变量,并在构造函数中初始化,使得n=0.当用户按下运算符按钮时,n的值更新,如用户按下加号时,n=1,同时使用函数atof对m_result的变量类型进行转化,使得CStr;ing型变为double型,用data变量进行保存,以备运算使用,edit控件中仍然显示m_result的值。

其实现如下图所示

当用户按下另一个数字按钮时,m_result的值更新。

当用户输入完毕时,按下等号,用一个函数对等号按钮进行响应,对新输入的m_result的值进行一次强制转变,转为double型,与先前的得到data进行运算,并用data保存,再用Format函数对data的值转变成CString型并用m_result进行保存,并用Updatedata(FALSE)在edit控件中更新显示。

函数实现如下:

值得注意的是,函数中

用来识别,用户输入的运算符类型,根据运算符的类型选择相对应的运算方法。

值得一提的是对于单目运算,如正弦、开方、平方的运行,在函数实现中与双目运算符(加减乘除)不同,用正弦运算举例,其函数实现如下:

当按下SIN按钮时,更改n的值,并对m_result的值进行转变,赋值给变量data

当用户按下等号时,把data由角度转化为弧度后用头文件math.h所包含的sin()函数运算,用format函数将结果数据类型转变为CString后,保存在m_result中,用Updatedata(FALSE)g更新,在edit控件中显示。

其他双目运算,用不同的n标记后,函数处理同加法。

不再赘述。

其他单目运算符,用不同的n标记后,函数处理同正弦。

不再赘述。

用按钮清空对结果进行清除,其实现函数如下:

m_result的值重新初始化,并用Updatedata(FALSE)函数对edit控件进行清空。

用一个按钮“学生信息”显示学生的信息,其按钮响应如下

编程所用到的头文件,添加在

代码中,此处不做描述。

(3)软件界面截图

`

任务二开发一个画图程序

1

(1)软件目标:

绘制点、直线、矩形、圆、椭圆,并能进行线宽设置。

并设置显示学生信息菜单。

(2)软件设计

A.开发环境

基于VC++6.0的MicrosoftFoundationClasses(即MFC)开发。

MFC以类的形式封装了windows的API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。

在开发过程中运用到了windows的内建控件和组件的封装类。

该程序运用了MFC中一个单文档工程进行实现。

B.基本操作流程

打开VC++6.0后点击MFCappwizard(exe),选择单文档创建工程。

打开resource工作空间,在menu中双击

打开主框架,设置菜单。

菜单设置如下图:

首先对菜单项“点”,进行响应。

过程如下:

在菜单项“点”上右键,弹出右键菜单,选择“建立类向导”,在ObjectIDD中选择菜单项“点”的ID,即IDD_DIAN,在Classname中选择

,在Message中选择command后单击addfunction添加消息响应函数,并选择editcode进行编辑。

如下图所示:

为了能区分用户所要绘图的类型,在CHuangweiliang_2View类中添加成员变量m_nDrawType,并在构造函数中初始化:

如下图所示

所以IDD_DIAN的消息响应COMMAND函数编写如下

对变量m_nDrawType进行赋值使得,m_nDrawType=1

当用户单击了“点”菜单项后,进入绘图状态,当用户在绘图区按下鼠标左键时画出一个点,所以需要对用户单击鼠标左键是箭头所在的位置坐标,所以又在CHuangweiliang_2View类中添加成员变量

用来记录初始点的位置。

构造函数中对m_ptOrigin进行初始化,其过程如下图

其中m_ptOrigin的变量类型为CString。

用voidCHuangweiliang_2View:

:

OnLButtonDown(UINTnFlags,CPointpoint)函数对按下鼠标左键进行响应,同把得到的点的坐标信息保存在参变量point中,在函数体中把point的值赋给m_ptOrigin,以便绘图函数调用。

实现过程如下

有了初始点后便可以画点了。

当松开鼠标左键时,表示用户已经确定了所要画点的位置,在CHuangweiliang_2View类添加成员函数用来响应用户松开左键。

在CHuangweiliang_2View类添加为

在该成员函数中用CClientDC声明dc(this);,并调用CClientDC中的SetPixel()成员函数,进行绘图。

使用条件语句对用户所绘画点的类型进行判断,当用户需要画点时m_nDrawType=1,所以用swtichcase1语句进行响应,如下图所示

用得到的初始点传给SetPixel()函数,进行画点,过程如下

函数中用RGB()函数制定点的颜色。

画点完成。

当用户单击了“直线”菜单项时m_nDrawType的值更改,使得m_nDrawType=2。

由于画直线需要两个点,所以需要对松开鼠标左键的响应函数的到终点的坐标进行获取,终点坐标被保存在参数point中,所以可以直接调用。

绘画直线是需要调用CClientDC中的成员函数MoveTo()和LineTo()。

起点的坐标值传递给MoveTo(),终点的坐标值传递给LineTo(),实现如下图

当用户需要绘画矩形时m_nDrawType=3,需要绘画圆时m_nDrawType=4,需要绘画椭圆时m_nDrawType=5,根据m_nDrawType的值switch语句进入不同的分支,调用CClientDC的成员函数。

当绘画矩形时,调用函数Rectangle(),参数为起点m_ptOrigin和终点point

当绘画圆时,调用函数Ellipse(),参数为起点X坐标m_ptOrigin.x,起点Y坐标m_ptOrigin.y,终点X坐标m_ptOrigin.x+100,终点Y坐标m_ptOrigin.y+100,此因为调用Ellipse()函数,为保证所画为原型,给定100的终点偏移量。

当需要绘画椭圆时调用函数Ellipse(),参数为起点m_ptOrigin,终点point。

其具体实现过程如下:

所绘画结果如图所示

从结果中可以看到,新画的会把原先画的进行覆盖,这是因为系统确实的画刷进行内部填充。

现为改善这一缺点,重新设置画刷,添加代码如下

重新绘图结果

可见问题已被解决。

设置对话框以改变线宽

在菜单中添加线宽菜单项,如下图所示

用一个对话框对线宽设置进行响应,对话框设置如下

在对话框中加入了edit控件,在CHuangweiliang_2View中添加成员变量UINTm_nLineWidth;并在构造函数中初始化,如下图所示

对新建的对话框资源构建新类,其基类为对话框类,并在该类中同样添加UINTm_nLineWidth以便得到线宽大小。

实现如下图所示

在构造函数中对m_nLineWidth初始化

这样当在edit控件中输入数字是便可以传递到m_nLineWidth中

在绘画线宽中用m_nLineWidth代替,即可绘出需要的线宽的图形如下图

设置右键快捷菜单

在resource中添加menu资源,设置为右键响应

在在CHuangweiliang_2View中用contextmenu进行响应如下图

对于右键快捷菜单项用不同的函数项,在函数体中书写相对应的m_nDrawType值,以便选择相对应的绘画类型,如下图所示

这样右键快捷菜单设置完成。

显示学生信息操作同上一程序,不再赘述。

所编写的文件中,更改了icon资源,更改了图标更改为QQ头像

下同。

(3)软件界面截图

任务三开发一个显示系统时间程序

(1)软件功能与目标

开发一个显示系统时间软件,显示的时间与系统同步,并可以退出。

 

(2)软件设计:

A.开发环境

基于VC++6.0的MicrosoftFoundationClasses(即MFC)开发。

MFC以类的形式封装了windows的API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。

在开发过程中运用到了windows的内建控件和组件的封装类。

该程序选用了MFC中的对话框模式。

B.设计过程

打开VC++6.0后点击MFCappwizard(exe),选择对话框创建工程。

在对话框中分别添加Button控件、static控件和edit控件。

Button控件作为数字输入和运算符号的选择,static控件用来显示静态提示标题,用edit控件显示计算结果。

将设置的控件改好ID,基本用户界面如下图:

在\huangweiliang_3Dlg.cpp添加计数器SetTimer(1,1000,NULL);//在这里设置计数器

添加时间响应函数用以获得时间响应,如下图所示

用FORMAT函数将获得的时间转变为字符型变量

将获得的时间字符量在edit控件中输出

在对话框中设置退出按钮

双击退出按钮进行按钮响应,在响应函数中对设置的计数器进行清除KillTimer

(1)

创建按钮控件,以显示学生信息

对按钮进行响应,在响应函数中添加CAboutDlgdlg;变量,调用其成员函数弹出详细信息对话框,

详细信息中的icon图标已被更改为qq头像。

方法不再赘述

软件完成。

3最终页面

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 少儿英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1