MFC课程设计实验报告讲稿文档格式.docx
《MFC课程设计实验报告讲稿文档格式.docx》由会员分享,可在线阅读,更多相关《MFC课程设计实验报告讲稿文档格式.docx(53页珍藏版)》请在冰豆网上搜索。
10.鼠标右键双击消息响应函数 17
11.颜色按钮 18
12.获取鼠标点击处的逻辑坐标 19
13.对话框中控件的显示与隐藏 19
14.文档的存取 20
四、运行效果 21
1.编译运行,按下Ctrl+鼠标左键 21
2.选择文本,弹出角度框 21
3.创建正方形、圆形、文本 22
4.创建三角形和椭圆 22
5.单击鼠标左键修改正方形和文本属性 23
6.右键双击删除三角形 23
7.保存退出 24
五、设计小结 24
六、主要代码清单 25
1.Shape.h 25
2.Shape.cpp 29
3.LwhView.cpp 44
53
一、课程设计的目的
1.参加本课程设计的同学已经学习了《C语言程序设计》和《面向对象可视化编程》两门课程,现在需要通过一个相对实际性的开发过程来巩固与鉴定一下学习成效,可以查看离实际需要还有哪些部分没有完全掌握,需要加强检测;
2.本课程设计可以提供一个稍微具有规模的程序开发的例子,让同学们可以体会到程序的构思、编码以及调试的完整过程,最后并总结课程设计的过程;
3.通过本次课程设计,可以对自身做一个评估,看看在哪方面不足从而加强学习;
二、课程设计的内容与设计思路
1.课设内容
要求:
采用单文档方式,文档中存储图形画面的各个图元数据,视图负责图形的绘制。
文档支持图形的序列化(连载),提供新建、打开、保存等操作。
视图除了绘制图形,还提供图形交互,能够按住Ctrl键再鼠标左键单击来创建图元,鼠标左键双击编辑修改图元属性,鼠标右键双击删除图元。
图元创建与修改时的参数由参数对话框来编辑。
创建时以鼠标左击时光标的所在位置作为基点来创建图元。
Square
Rectangle
Triangle
h
w w
w
a
r
Circle Ellipse
Text
2.设计思路
我们的最终目的是显示一个单文档窗口,且可利用从对话框中输入的数据绘制图形。
所以,首先建立一个单文档程序,再添加对话框,用来创建与修改图形参数,之后给对话框中的各复选框,编辑框,按钮添加消息响应函数,进行控件关联,并利用枚举型使参数传递。
定义一个动态数组以存储从对话框中获取的数据,之后添加Shape类,用来绘图,由Shape类定义一个指针指向动态数组,便可从中读出之前存储的数据进行绘图,从而达到目的,思路图参考如图1,2:
图1.Shape的六个派生类
图2.工程思路图解
三、程序实现过程与细节
1.涉及的主要函数列表
附表1
函数定义与功能一览表
序
号
函数名
函数定义
定义所在文
件名
函数功能
1
OnInitDialog()
BOOLCType:
:
Type.cpp
对对话框
进行初始化处理
2
OnOk()
voidCType:
OnOK()
按确定按
钮时调用
3
OnFillColorButton()
按下按钮弹出颜色选择对话
框
4
OnLinelColorButton()
OnLineColorButton()
5
OnDraw()
voidCLwhView:
OnDraw(CDC*pDC)
LwhView.cpp
应用程序窗口的客
户区进行
,
绘图
6
OnLButtonDown()
OnLButtonDown(UINTnFlags,CPointpoint)
按下鼠标
左键,执行该函数
7
OnRButtonDblClk()
OnRButtonDblClk(UINTnFlags,CPointpoint)
双击鼠标右键时,执行该函
数
8
OnSelchangeComBoxTuYuanType()
OnSelchangeComBoxTuYuanType()
选择图元属性组合框时,显示或隐藏某个编辑
9
Serialize()
voidCSquare:
Serialize(CArchive&
ar)voidCRectangle:
ar)
voidCTriangle:
voidCCircle:
ar)voidCEllipse:
voidCText:
Shape.cpp
将表单内容序列化
10
CSquare()
CSquare:
缺省构造函数,初
始化
11
CSquare()CRectangle()CCircle()CEllipse()CTriangle()Ctext()
CSquare()CRectangle:
CRectangle()CCircle:
CCircle()CEllipse:
CEllipse()CTriangle:
CTriangle()CText:
CText()
接受由对话框传递过来的参数
12
Draw(CDC*pDC)
Draw(CDC*pDC)voidCRectangle:
Draw(CDC*pDC)voidCCircle:
Draw(CDC*pDC)voidCEllipse:
Draw(CDC*pDC)voidCTriangle:
Draw(CDC*pDC)voidCText:
绘制函数
13
IsMatched(CPointpnt)
boolCSquare:
IsMatched(CPointpnt)boolCRectangle:
boolCCircle:
IsMatched(CPointpnt)boolCEllipse:
boolCTriangle:
图元匹配函数
boolCText:
图3.主要函数OnLButtonDown()
2.工程的新建
打开MicrosoftVisualC++6.0—>
点击File—>
New在Projects中选择MFCAppWizard(exe);
在Projectname中输入工程的名字Lwh,在Location中选择工程存放的路径。
填完后点击OK按钮。
填完后点击OK按钮,在弹出来的对话框中我们选择Singledocument,再点击Finish,完成工程的创建。
之后编译运行,结果参见图3。
图4.新建工程结果示意图
3.建立图元属性对话框
点击ResouceView,右击Dialog—>
插入Dialog,这时会弹出来一个对话框,双击“确定”按钮,选择“Create a new class”,点击OK,设置类名为CType—>
OK,之后设置对话框属性为IDD_TYType,参见图4,绘制对话框,参见附表2.属性表给各复选框、编辑框、按钮修改属性。
附表2
属性表
名称
ID
角度
IDC_Angle
图元类型
IDC_m_ComBox_TuYuanT
ype
线型
IDC_m_ComBoxLineType
线色按钮
IDC_LineColorButton
线色
(R/G/B)
IDC_LineColor(R/G/B)
填充色按钮
IDC_FillColorButton
填充色
IDC_FillColor(R/G/B)
高度
IDC_High
原点X
IDC_OrgX
宽度
IDC_Width
原点Y
IDC_OrgY
线宽
IDC_LineWidth
填充风格
IDC_m_ComBoxFillType
图5.构造对话框结果示意图
4.控件的关联
要实现这个步骤,首先要明白在MFC中变量的声明定义,对于控件关联型的数值变量,value类型(double,int,CString等等),在生成时向导帮你做了3件事:
1)在.h文件中进行声明;
2)在.cpp中的构造函数中,进行了初始化;
3)在.cpp文件中的DoDataExchange()中进行控件关联;
DDX_Text(pDX,IDOK,m_btnTest);
所以,要进行控件关联,要做的也是这三件事(可在ClassWizard中进行添加,
则系统自动生成。
下面介绍手动添加,以图元类型IDC_m_ComBox_TuYuanType
为例)
1)在Type.h中声明:
protected:
CComboBoxm_ComBox_TuYuanType;
2)在Type.cpp中进行初始化:
OnInitDialog()(在ClassWizard中添加)
{
CDialog:
OnInitDialog();
//TODO:
Addextrainitializationhere
m_ComBox_