搜档网
当前位置:搜档网 › C _MFC快速超简单入门

C _MFC快速超简单入门

C  _MFC快速超简单入门
C  _MFC快速超简单入门

C++MFC快速超简单入门学习

注意:红色字体为重要的信息,必须理解并记住。

在学习MFC之前,你必须对C++的“类和对象有一定的认识和理解,因为MFC就是C++完全的面向对象设计,它里面封装了好多类,我们只要调用就OK,就像C语言调用库函数一样,直接使用,这就是C++

第一特性:封装性,第二性就是继承与派生,

这个在MFC中体现得淋淋至间(字打错了)。如果不懂,我再来解释一下,例:有一个商品类,class GOODS商品属性有名字,价格

它可作为一个基类,我可以派上出苹果类,class Apple:public GOODS.苹果属性出了继承了商品的属性名字,价格之外,还可派生出,颜色,等属性,继承与派生就是一个是另一个的子集,但是这个子集不仅包括父集的特征,还具有一些新的特性,懂了吧,这样。MFC其中重要的类是:CDialog对话框类,CEdit,(编辑框

类)CButton,(按钮类)CRadio(单选钮类),这些都是作为基类,由我们自己定义的类去派生它们。

好了,现在先了解一下什么是MFC吧,请看当前目录下的MFC入门知识的幻灯片1—20张,或大概的浏览一下当前目录下的其它连个word文件,后面的幻灯片我觉得没必要看了,因为是快速吗,节约时间,(首先看不懂没关系,)但但看完之后,必须掌握如下知识:

1.MFC是作什么用的?与以前我们写的C,C++语言有什

么不同。以及它的一些优点,

不同,以前的是控制台的界面不好看,不友好,操作不

方便,黑框框的一片。

MFC反之。

优点:可用极少的代码实现强大的功能,

2.关于MFC的一些术语,概念啊

3.你要知道MFC的对话框是由控件组成的,具有

哪些控件(例按钮:Button,单选钮:radio,Edit)例:要知道MFC的编程的原则,也就是宗旨理念吧,“消息映射,事件驱动“,这句话要记住并理解,很重要,真的。那到底是什么意思呢?

现实举例:一个人具备一种“感知“的能力,(也可称消息吧),当用火接近这个人时(发生的事件),就会(驱动)这个人做出反应,远离”火“,

用MFC举例:一个按钮有什么消息啊,我可以单击它,所以它具备单击的消息:

第一个就是左键单击的消息,第二个

就是双击的消息,见名思议就OK了。我单击这个按钮要产生某个事件,

我就可以第一步,先给按钮添加一个消息响应函数,意思就是当我单击按钮时,就调用那个函数,按钮时时刻刻都处于待命的状态,

假如添加的函数如下:

void CDsDlg::OnButton1()

{

AfxMessageB ox(“我单击了这个按钮”);

//这个函数要记住,就是弹出一个消息框.其中的字

//符串自己设置。

}

当用户单击了这个按钮时,就会调用上述函数,弹

出一个消息框显示“我单击了这个按钮”好了,接

下来就看其它控件的消息吧!

接下来的就用实例傻瓜式的教大家怎样创建MFC程序吧,

第五章对话框和常用控件

对话框是Windows应用程序中最重要的用户界面元素之一,是与用户交互的重要手段,在程序运行过程中,对话框可用于扑捉用户的输入信息或数据。对话框是一个特殊类型的窗口,任何对窗口进行的操作(如:移动、最大化、最小化等)都可在对话框中实施,一般来说,在对话框中通过各种控件(如:按钮、编辑框、列表框、组合框等)来和用户进行交互。控件是在系统内部定义的用于和用户交互的基本单元。

一、对话框的使用

Visual C++提供的对话框编辑器能“可视”地进行设计、编辑,并可用ClassWizard为对话框从CDialog基类中派生一个类,MFC的CDialog类封装了用于对话框的显示、关闭等操作的许多功能函数,例如:DoModal函数用来显示模式对话框并返回用户操作的结果。这个函数先记住吧,会有用的。

例:CDialog d1;//因为CDialog(对话框类)是MFC已经封装的一个类,就是相当于一个库函数的差不多,库函数晓得吧,例C语言的,printf();这个也是库函

数,是输出函数,而这里用类来表示罢了,反正语句就是定义一个

对话框的对象d1;然后我用这个对象就可以直接调用CDialog中得成员函数或成员变量了,(记住定义了某个MFC的封装类的对象后就可以直接使用这个类的函数和成员变量了,)

例:d1.DoModal();//就是调用对话框类CDialog的成员函数DoModal();打开一个对话框。

那么如何建立对话框?接下来你要跟着一步一步的去做,

只有实践才能检验真理!!!!才能学会,学懂!!

第一步:单击”文件----新建选择”工程”的下面红色选项.填好工程名,单击确定

:

第二步:选择红色区域.直接单击”完成”按钮.

第三步;出现如下图界面,

第四步:删除上图中的默认控件(控件是什么?例:按钮,,静态文本框

操作:先选择需要删除的按钮,然后按键盘上得“delete”键就可以删除。

注意了:当你新建完工程之后,左边会有个这样的窗口:

这叫工作区间:这里有三种视图,Class叫类视图,就是系统自动会生成一些类,然后你可以单击这个

按钮之后,快速找到某个类,例:系统自动生成了三个类,一个全局变量(),最常用到的是这只有一个类:

接下来你可以单击上图的

加号展开这个类。下面的就是这个类的成员函数和成员变量(绿色),你可以双击它们,然后在右边的窗口就可以看到这个成员函数的地方了,这个方法要记住,方便以后查找某个函数在哪里。

是对话框(CDialg)类的派生类,命名的规则“C+“你自己写的工程名”+Dlg。最常用到的函数是这个,你现在双击它,然后在右边窗口就可以看到这个函数的实现了,这个函数的意义在于,初始化一些数据。

初始化,晓得吧,就是给某些变量赋初值。

大概这么多,这上面的代码看不懂,没关系,因为具体我也看不懂,

绝对不影响你写程序,然后找到这个函数下面的一条语句:

//后面的是注释语句,意思是,在下面添加你的额外的代码,

我们就可以在这下面添加自己要写的代码了,这个注释要记住啊,在以后我们要添加语句通常都是在这个下面添加,一般每个函数下面都会有。

还有一个函数要了解:

这个函数是什么啊,还记得吗。对,这个就是CTestDlg的构造函数,当然你也可以在这里面初始化一些成员变量。好了,系统为我们生成的类的函数,你只要了解这两个就行了,

哦,对了,如果我想要回到刚才那个“对话框“的绘制界面那里怎

么回去呢?我有办法。选中下面这个

资源视图,这个视图就是包括一些对话框资源啊,图标资源啊,等。

然后:单击红色标记就OK了,这个也要记住啊,

再来了解第三个视图:文件视图

这几个的意思都晓得吧,应该比我的英文好吧,展开头文件

选择(老大,我必须说下,我的这个文件名应该和你

的会不相同,但是共同点是后面都有个Dlg.h,命名的规则就是工程名+Dlg.h,下同,不再做解释,)这个是最常用到的一个头文件了,记住了。

它能做什么用呢,哦,先来谈下,为什么系统会帮我们这样分配这个MFC的程序呢,为什么把头文件和资源文件分开呢,这个吗,老师也说过了,我们的实验要求是要写成几个文件的,类的定义,及成员变量,成员函数的说明等写在头文件中。函数的实现写在资源文件中,一般的一个完善的系统开发都是这样的(清晰,

明了),所以证明老师说的是正确的。所以,这个头文件是干什么的,就不用我说了吧,先双击这个头文件,

我们就可以在public中添加我们自己的成员变量了,说明一点,其实我们设计的MFC就是在系统已有的一些函数里,或自己定义的函数里,添加一点点代码,就OK了,

这下面就是函数说明了,

诶呀,不懂的话,我就这样举个例:我们书上定义类是怎样的啊。

Class Person{

Private:char name[10];

Public:char getname(char name1[10]);

}然后在类的外面实现它.

拖动滚动条看下面。

找到程序中的如下函数说明,

这个就是刚才我们说的经常用到的类,首先它在头文件中定义说明然后在类外中实现,在程序中找到如下函数,找某个函数会找吧,不懂看前面。

{…………}

BOOL返回值,这是返回一个逻辑值,就是“true真或是false 假两种情况,CTestDlg::OnInitDialog()就是声明OnInitDialog()是属于CTest这个类懂吧。

好了,基本的情况都介绍了,因为是快速其余系统生成的类中得函数啊,等不知道就不用去研究了,不会影响我们写程序,

先回到对话框这个视图界面:怎样操作不用我说了吧,单击,出现单击

这个是对话框的ID下面会有介绍。名称你的会不一样啊,找到

有命名规则是IDD_你的工程名_DIALOG.

下面先认识控件:

最常用的就是这几种了:

第五步:绘制对话框界面:

直接拖动右边的某个控件,到左边的对话框界面,绘制下面这个图型:

操作方法:例:我先拖动一个“按钮”到对话框界面。

它会如下显示,哦,对了,如果你按住CTRL键不动,拖动对话框面板的控件还可以直接复制呢!

然后修改:按钮的文字。方法是:右击该按钮,在弹出的快捷菜单选择“属性”,接着弹出如下图。

分析如下:

ID框:修改或选择对话框的标识符名称,ID这个术语很重要,要记住“就像一个人有一个名字一样,我知道这个名字,我就能找到这个人。

下面介绍几种常见ID,这个真的要记住啊,而且要理解

IDC_BUTTON1按钮

IDC_RADIO1单选钮IDC_CHECK1复选框

ID名称可以修改,在这里就不用修改了,使用默认就行了,

但是一般你看见一个ID名称就要知道他是属于那种控件。

很容易记,例:按钮:英文就是BUTTON,

标题框:输入控件的名称,中英文均可。这里只需修改标题名称改为“确定“就OK了,其余的控件修改名称都是一样的。好了界面就绘制好了。

接下来,你可以单击编译——运行了,哈哈,是不是发现自己绘制的对话框就显示出来了啊,但是有没有发现“当我单击某个按钮时什么事也没发生,没动静,这是怎么回事呢,好吧,接下来就注意看了,听我娓娓道来。

我们通过一个登陆对话框的实例来深入学习MFC。

接下来就了解一下怎么去写代码,去实现各个控件的功能吧!

先看最终效果吧!

第一步:绘制界面就不说了,自己绘制吧,注意各个控件的排版啊,要整齐一点。

只说一点,因为是有个密码输入框,所以你必须设置

这个输入框输入的文字显示为*,不能让别人看见。

操作步骤:首先右击“这个密码输入框在弹出的快捷菜单中选择“属性”

接着在单击样式选项卡。选择密码复选框。其余的地方大家也可自己去了解。例:数字选项卡啊,就说明这个输入框中只能输入数字。

好了,接下来,你可测试一下,在,没选这个“密码”和选了这个密码之后的对话框的密码输入框。输入文字有什么不同吧,。直接运行程序就可以,记住了,新建工程后,你可以随时都运行你的程序,看效果,

第二步:为控件添加成员变量,成员函数。在我们书上的介绍的那种,我们以前学的,是手工一个一个代码去写去实现添加成员变量,成员函数,但是今天学的MFC就So easy 了。快速添加,不用打代码,我们使用“建立类向导”来添加。

操作方法:右击对话框面板的空白处(我们称以下这个为“对话框面板“)

选择“建立类向导“弹出如下对话框。

跟你说啊,MFC的一切代码都可以用英文去解释它。去记住它。红色标记1 Message Map消息地图(作用是位消息添加响应函数),也可以方便查看某些控件的消息,何为消息不用我说了吧,前面已介绍了,自己去看,不懂百度,“下面的我都是会根据那句话来做解释“消息映射,事件驱动”

红色标记3这个地方是控件的ID你看这里就ok了,对象的ID,

何为ID,还用我解释吗,前面自己去看,说了很重要是不是,上面显示了有5个ID,

这5个ID就对应了,对话框的五个控件,就像5张身份证对应5个人一样,

那我们怎么查看某个变量的ID呢,其实前面已经有了,再说下吧,右击某个控件,

选择属性,然后在对话框中你就可以看见它的ID了,

红色标记4这里是某个控件的消息,前面有些许介绍,

例我们要为登陆按钮,添加一个单击的消息,我们先选中登陆按钮对应的这个ID名称

再选择单击这个消息:下面第二个为双击,我

们单击一下就OK了,然后再单击红色标记6中得添加函数,下面我不会在解释了,自己根据英文去理解。弹出如下图,然后填写一个函数名,随便你自己写只要跟我们C语言定义函数名一样就行了,我们就是用默认的算了。

然后在红色标记6中就可看到我们添加的消息函数了。函数名为”OnButton

还要为按钮添加一个单击函数,自己模仿添加一个。添加时你要记住哪个函数是登陆的消息函数,哪个是取消的消息函数啊。

接下来我们添加“成员变量“,选择红色标记2英文成员变量。

如下图

怎样添加呢,我们要为,用户名输入框和密码输入框添加两个变量。先选择对应的ID名称

单击红色标记6中得(添加变量)弹出如下对话框

填写一个成员变量,我写的是m_user方便记忆

定义变量知道吧,诶呀就是普通定义变量一样,就像int i;一样

第一个是变量的类别,我们就使用值类型,类型定义浮选择,CString这个是字符串类

你就这样理解跟string是一样的,功能差不多,这个类要记住,以后会用到。

已上就是这样一个定义变量的过程:CString m_user;

接下来你就为密码输入框也定义一个变量吧,

一般按钮没有变量,其余的都有变量,所以我们按钮就不定义变量了。

这个也说下吧,就是这个输入框最多可以输

入多少个字符。还有这个先选择变量,然后可以直接删除它。

这个对话框的其它

选项卡,就不介绍了,用的很少,最后单击确定。

以上这个要记住啊,会经常用到。

第二步:在我们已经添加的成员函数中写代码。

操作方法如下:第一步找到该函数。

例我们要在我们刚已经添加的确定按钮的消息函数中写代码,这个函数名

你还记得吗,刚才定义函数的时候我说了要记住它,好吧,没关系,

不记得的话,我们一种办法是重新查看“建立类向导对话框中,属于确定按钮的这个函数。

第二种:直接双击这个按钮,我们马上就可跳到这个函数的地方。

这个方法要记住哦,

好了,我们先不急着写代码,先看下我们的类视图

展开这个类,

是不是看到我们刚才添加的成员函数(即按钮的消息响应函数)和变量在其中啊,哈哈。我们再来看看,还有没有奇特地方做了修改。

可以这样想,因为我们添加了成员变量,添加了成员函数“

还记得添加“成员变量,成员函数“是哪个文件吗,前面我们已介绍了,好说到这,我必须说下,前面的知识大家一定要记住,OK吗?

当然就是“文件视图中的“头文件”啦!

选择

,展开我们经常用到的头文件“

是不是看到这里多了几行语句:意思如果你不懂了的话,你就OUT了。

第三步:接下来回归主题,正式写代码了,注意了啊,看好了,

先找到“确定“按钮的这个函数”自己找吧!

添加如下代码:代码不是很多,解释多,认真看看吧,

完成了,接下来测试一下吧。运行这个程序,看是不是当你输入正确的用户名和密码都为123时,才显示“亲。,恭喜你…………”,错误就“您输入的…………“

此程序我已经测试成功,不要说你的程序有错误啊,

第四步:还有一个按钮我们没有添加代码呢,就是“取消“

单击这个按钮还没反应,接下来我们就添加如下代码吧:

OnOK();//因为当单击取消,我们就要退出这个对话框,所以这句话的意思就是这样的。调用一个对话框退出的函数OnOK();这个也要记住了。

注意:书写这个函数时一定要注意大小写,我猜你今后肯定会出错的,

O大写,n小写OK两个大写,记住了吗?亲,

今天我们的学习就到这里了哦,

你的程序是否运行成功了呢,

是否还有什么地方不知道的错误呢?

是否感觉MFC很好玩呢?

是否学懂上面的知识了呢?

是否觉得还有什么更好的关于MFC的诚意呢?

是否觉得这个程序还不是很完善呢?

只有一个用户名和密码,而且没有注册,而且信息是显示的,

好吧,这些就留着以后解决吧,

有种方法叫做数据库,数据库就是保存数据的地方,很简但,5分钟就可学会我们要用到的这个数据库的地方了,关键是数据库编程,但绝对不难,就几行代码,实现很大得功能,

想具体了解就看当前目录下VC的数据库编程吧!不过初学者看不懂就算了,哦,告诉你哦,现在你已经具备了MFC开发的基础知识了哦,

为以后的开发打下了基础,想深入学习MFC的话,可到网上,或图书馆借书来看看。

如果想看视频:百度一搜:就是孙鑫的视频,但我看过一点,觉得一般般,不是很好,还是多看书吧,推荐:10级通信班大一学期的C/C++程序设计的书,

当时大一第一学期我就是看这本书入门的。毕竟是教材吗,还是不错的!

课外学习:添加单选钮,复选框,列表框。

了这几个类的对象的一些成员函数,例:

CEdit m_edit1,m_edit2;//定义CEdit编辑框类的对象m_edit1;

mfc绘图程序上机步骤

首先生成MFC程序空框架 空框架中的每个类的职责是什么要自己理解清楚 第一次课: 1.定义自己的数据类CLine直线类,用于绘图 点击菜单:插入—类 选择Generic class,输入类名,每个类都是分成两个文件.h 中只有类体,包含类的数据成员定义和成员函数声明,.cpp中就是成员函数的类体外实现 classCLine { int x1,y1,x2,y2; public: CLine(int a=0,int b=0,int c=0,int d=0); virtual ~CLine(); int Getx1(); int Gety1(); int Getx2(); int Gety2(); void SetPoint1(intx,int y);很多函数是在后面使用中发现问题逐渐添加的 void SetPoint2(intx,int y); }; 2.自定义的类要作为数据成员出现在Doc类中 classCSmallCADDoc : public CDocument { protected: // create from serialization only CSmallCADDoc(); DECLARE_DYNCREATE(CSmallCADDoc) // Attributes public: CLine line1; //数据成员应该是私有,但是由于文档类与视图类交换频繁,为了访问方便,直接定义成公有了。你也可以定义成私有,再定义一个Get函数间接访问,取他的值3.注意:添加了这个数据成员后,需要增加几个#include “Line.h”语句 添加的原则是,每个cpp文件都单独编译,哪里用到新的类,相应的cpp前就要增加#include “。。。”语句 此处是在CSmallCADDoc类中添加了一个CLine line1;类对象,在SmallCADDoc.h文件中。所以,凡是包含了#include “SmallCADDoc.h”的地方都要在前面添加#include “Line.h” 语句。共3处:app doc view 这3个类的cpp文件前 4.注意:初始化 CLine line1; //数据成员是文档类的,它不像dos下程序,明确能看到定义,调用构造

mfc简单绘图程序

M F C 简 单 的 绘 图 程 序 ——王帅

目录 摘要 (2) 关键字 (2) 1 引言 (2) 设计目的 ............................................................................................................ 错误!未定义书签。 2 功能说明 (2) 2.1菜单栏....................................................................................................... 错误!未定义书签。 2.1.1图形 (3) 2.1.2画笔 (4) 2.1.3画硬币 (4) 2.2工具栏 (5) 2.3状态栏 (5) 3 功能的实现 (5) 3.1 视图设计 (5) 3.2 编辑资源 (6) 3.3 编程思路及各个函数的实现 (7) (1)思路 (7) (2)代码的实现 (7)

1.为基本形状创建一个基类 (8) 2.基本形状类的创建 (8) 2.1矩形类的创建及定义 (8) 2.2圆形类的创建及定义 (10) 2.3正五边形类的创建及定义 (11) 2.4正三角形类的创建及定义 (14) 2.5椭圆类的创建及定义 (16) 2.6正四边形类的创建及的定义 (17) 2.7正六边形类的创建及定义 (18) 2.8直线类的创建及定义 (19) 3.各基本形状类在CMyDraw2_0类中的调用和绘图的实现 (20) 3.1矩形类的调用与与绘图的实现 (20) 3.2圆形类的调用 (24) 3.3正三角形类的调用 (25) 3.4基本类型调用的剩余代码 (26) 4.画笔的使用、颜色及大小的调整 (29) 5.画硬币 (35) 6.工具栏中的自定义控件 (38) 7.状态栏中的显示 (39) 4程序功能的测试 (41) 5最后总结 (42)

简单的绘图程序实验报告

面向对象程序设计实训(基于MFC程序设计) 题目: 简单的绘图程序 院系专业: 姓名: 学号: 同组其他学生(学号):

简单绘图程序说明 1、功能分析 目前这个软件的主要功能有如下: 1、画直线:通过OnLine()函数实现。 2、画矩形:通过OnRectangle()函数实现。 3、画圆角矩形:通过OnRoundrect()函数实现。 4、画椭圆:通过OnEllipse()函数实现。 5、铅笔工具:可以画任意线条。通过直接在OnMouseMove(UINT nFlags, CPoint point)函数里面添加代码实现。 6、右键弹出菜单:可以在客户中点击鼠标右键,快速选择常用菜单。通过 OnContextMenu函数实现。 7、状态栏显示鼠标移动的坐标:在程序的右下角显示,通过调用setWidnowText 和GetParent()实现。 8、画图颜色选择:可以画任何颜色的线条,通过OnColor()函数实现。 9、线条类型及线宽的设置:可以将画出的线条设置成实线、虚线、点线、点划 线,双点划线,还可以设置线条的粗细,,通过实例这一功能立刻显示所选择线条的粗细及线型。通过新建CLineSettingDlg类,其中OnSelchangeLineStyle()函数实现线型的改变,OnChangeEditLineWidth()函数实现线宽的改变。再在CDrawView类中调用OnLineSetting()函数实现画笔的对话框, CLineSettingDlg类中的OnPaint()函数是实现示例功能的。 10、窗口的重绘时不擦除原来的内容:新建CShape类用来保存线条的颜色,线 宽,填充色等属性,在窗口大小发生变化时有OnDraw(CDC* pDC)函数进行重绘工作,重绘中调用了各个绘图函数的Draw(CDC *pDC)函数。 11、所绘图形的保存于读取,通过Serialize(CArchive &ar)函数进行序列化操作, 将所绘图形的信息通过文件的形式保存起来。

C++实验报告(MFC简单画图程序)

VC++程序设计实验报告 一、实验目的 掌握MFC编程 二、实验内容 用MFC向导创建单文档应用程序,一个简单的画图程序。 ?使用C++语言实现 ?使用VC++6.0集成开发环境开发 ?使用MFC应用程序开发框架 三、实验步骤 ?基本功能描述 1. 打开exe文件,在绘图下拉菜单中可分别设置绘制的图形形状,如直线、 曲线、矩形及椭圆,线宽选项,有1-6可供选择,线型选项有实线、虚线、点线和点段线供设置,还可以设置线色以及填充色,通过弹出的颜色对话框选择需要的颜色,如果不选择线宽、线色以及填充色,则按默认的画笔,画刷来绘制选择的图形。 2. 选择好图形后,通过鼠标可以绘制出相应的直线,矩形或椭圆,鼠标的按下确定图形的起点,鼠标的拖动则确定了图形的终点,即通过鼠标的拖动来决 定图形的大小,当鼠标弹起,此图形则绘制完毕。 ?设计思路 1. 对需要用到的变量进行初始化。 2. 选择相应的图形之后就响应相应的消息处理函数,给shape赋对应的值。选择不同的线宽,线色与填充色,即可改变画笔或画刷的属性。 3. 鼠标的按下响应函数OnLButtonDown(),捕捉鼠标当前位置得到起点的坐标,鼠标的拖动响函数OnMouseMove()改变终点的坐标,鼠标的弹起响应OnLButtonUp(),确定终点坐标,刷新,得到绘制图形。 4. 选择图形或其它属性,可进行下一次绘制。 ?软件设计 A 设计步骤 1.创建单文档 创建一个MFC AppWizard[exe]工程,命名为“Draw”,如图1所示,并创建单文档,如图2所示。创建成功后,系统自动生成相应的类,如图3所示。

图1 创建工程 图2 创建单文档

mfc简单绘图程序报告

简单绘图程序 1 需求说明 1.1 问题描述 设计一个简单的绘图应用程序,可以绘制图形或自由绘制线段,可以更改颜色、画笔粗细、保存文件。 1.2功能说明 1.图形绘制功能:直线、椭圆、矩形。 在菜单栏中选择需要的图形(也可以通过工具栏中选择)用鼠标便能在视图中绘出相应的图形。 2.可以绘制自由线段 3.对图形的操作:能通过菜单栏弹出对话框选择线宽、自定义颜色,也可以擦除绘制的线段。 4.可以保存绘图文件,保存后打开可以继续绘制。 2.1.3 数据说明 在程序运行以后,当用户单击某个菜单项时,应该把用户的选择保存起来,以便随后的绘图操作使用。在CDzyView类中添加一个私有变量xz;用来保存用户的选择(直线、矩形、椭圆、自由绘图)在绘制时都可有两点来确定其图形。当鼠标左击时得到一个点,当鼠标停止移动时得到另外一个点。为视图类CDzyView分别捕获鼠标左键按下和弹起这两个消息。当鼠标左键按下时,需要将鼠标当前按下点保存至sx、sy,在鼠标移动停止后,将当前坐标保存至ex,ey.

其他主要数据说明: int fd 判断是否为自由绘图模式int w 线宽 int R RGB中的R int G RGB中的G int B RGB中的B CGraph类中 int m_nType:保存后重绘时用户的选择int qdx; 重绘起点x int qdy; 重绘起点y int zdx; 重绘终点x int zdy; 重绘终点y CLine类中 int cx; 重绘线宽 int sx; 重绘起点x int sy; 重绘起点y int zx; 重绘终点x int zy; 重绘终点y int w; 重绘线宽 自定义颜色对话框关联变量: IDC_EDIT_RED int m_Red IDC_EDIT_GREEN int m_Green IDC_EDIT_BLUE int m_Blue IDC_SCROLL_RED CScrollBar m_Sred IDC_SLIDER_GREEN CSliderCtrl m_Sgreen IDC_SPIN_BLUE CSpinButtonCtrl m_Sblue 2 分析、设计与实现 2.1 主要功能设计与实现

MFC实现简单画图形程序(学习相关)

《MFC编程及应用》课程设计报告题目:简单画图形程序 学号:姓名: 指导老师: 时间: 评语:

程序设计步骤: 一、建立基于对话框的应用程序框架; 二、CMy0910200155Dlg类中关键新增变量的作用: CPtrArray pta; //用于保存已绘图形的相关信息。 CMemoryNode *pmN; //指向CMemoryNode类的指针,程序运行过 程中动态保存对象信息。 CMemoryNode *pmn; //指向CMemoryNode类的指针,从文件中读 取信息时动态创建类的对象。 COLORREF m_CurrentBrushColor; //用于存放当前画刷的颜色。 COLORREF m_CurrentPenColor; //用于存放当前画笔的颜色。 int num; //用于存放从"Index.txt"文件中读取的数字。 int flag=0; //用于标识:当为1时,表示按下了”画图”按钮;当为2时, 表示按下了”撤消”按钮;当为3时,表示按下了”加载历史” 按钮,则从文件中读取信息。 int mark; //用于标识:当为0时,表示刚画过矩形;当为1时,表示 刚画过圆角矩形;当为2时,表示刚画过椭圆。 int index; //用于存放pta数组的容量。 int flag1=0; //用于标识,和flag搭配,用来处理多种情况下的窗口重绘 问题。 int ButtonState=0; //用于标识,是类CShow和类CMy0910200155Dlg 的一个接口,通过其值在1和0之间转换,来处理弹出式对 话框的初次绘制和移动时的重绘问题。

c面向对象程序设计MFC简单计算器实验报告

计算机与信息工程学院 《程序设计基础》课程设计报告 题目名称:60.编写一个能实现简单功能的计算器学生姓名:刘沛东 学生学号:2011508154 专业班级:电子信息工程(1)班 指导教师:高攀

1 课程设计的题目 编写一个能实现简单功能的计算器 2 题目要求 1. 有一个计算器图形。 2. 能实现加、减、乘、除及乘方的运算。 3. 当输入题目时,屏幕上要在指定位置上显示出相应的题目内容,且相应的数字键要改变颜色 例如:输入数字1 时,在计算器图形上的1键变为红色。 4. 屏幕、图形颜色、形状自定 3 总体设计 3.1 总体框架 图1 系统框架

3.2 系统功能说明 在VC++6.0中绘制计算器界面,各控件的设置 对0~9控件设定相应的ID和其他属性: 图2 “1”控件设置 对“+、-、*、\”控件设定相应的ID和其他属性: 图2 “+”控件设置 对其它控件设定相应的ID和其他属性: 图3 其它控件设置

主要使用到Layout菜单中的Align功能对各个按钮进行对其,使界面更加整洁。拖出的控件有上面的一个Edit控件用于显示数字,Button控件用于处理鼠标的消息。 4 程序详细设计 4.1系统主调模块 图5 程序流程图

4.2各模块详细设计 4.2.1 建立的变量,控件的命名,对应的消息处理函数对应表 double poz; //保存小数点的位置,初始化为1,表示poz-1个小数点。 double m_Dis; //Edit控件上需要显示的数字 BOOL point_flag; //小数点表示位,判定是否是小数,是小数为1,不是小数为0。 double numfirst; //保存计算过程中的前一个数字, double numsecond;//保存计算过程中的第二个数字 char op;//记录当前的计算符号,可以为’+’,’-’,’*’,’/’,’=’,’c’,’n’ 变量初始化: poz=1; m_Dis = 0.0; numfirst=0; numsecond=0; op=0;

简易画图板设计报告

设计报告:Graphic简易画 图板 -----韩伟谢程焜肖越周峰 电科二班

1设计目的 设计一个单文档类型的MFC AppWizard (exe)工程,工程取名为:Graphic。此程序将实现简单的绘图功能,包括点、直线、矩形、椭圆、扇形和连续线的绘制。并且能实现绘图的控制,包括线宽、线型和颜色的设置,图形的保存和打开以及笔刷的使用。 2 总体设计 设计图如图6

图6 3详细设计 首先,新建一个单文档类型的MFC AppWizard (exe)工程,工程取名为:Graphic。为此程序添加一个子菜单,菜单名称为“绘图”,并为其添加六个菜单项,分别用来控制不同图形的绘制。当用户选择其中的一个菜单项后,程序将按照当前的选择进行相应图形的绘制。添加的六个菜单项的ID及名称如表1所示。然后分别为这六个菜单项添加命令响应,本程序让视类(CGraphicView)对这些菜单命令进行响应,这六个响应函数的名称分别如表1所示。

在程序运行以后,当用户单击某个菜单项时,应该把用户的选择保存起来,以便随后的绘图操作使用。因此在CGraphicView类中添加一个私有变量m_nDrawType;用来保存用户的选择,该变量的定义如下所述: private: UINT m_nDrawType; 接着,在视类的构造函数中将此变量初始化为0,程序代码如下: CGraphicView::CGraphicView() { // TODO: add construction code here m_nDrawType=0; } 利用switch/case语句,来分别完成相应图形的绘制。当用户选择【绘图】菜单下的不同子菜单项时,将变量m_nDrawType设置为不同的值。程序代码如下:void CGraphicView::OnDot() { // TODO: Add your command handler code here m_nDrawType=1; } void CGraphicView::OnLine() { // TODO: Add your command handler code here m_nDrawType=2; } void CGraphicView::OnRectangle() { // TODO: Add your command handler code here m_nDrawType=3; } void CGraphicView::OnEllipse() { // TODO: Add your command handler code here m_nDrawType=4;

基于MFC的OpenGL绘图

基于MFC的OpenGL绘图 本文更新版本请点击 [置顶]《基于MFC的OpenGL编程》系列文章 一、简介 GDI是通过设备句柄(Device Context以下简称"DC")来绘图,而OpenGL则需要绘制环境(Rendering Context,以下简称"RC")。每一个GDI命令需要传给它一个DC,但与GDI不同,OpenGL使用当前绘制环境(RC)。一旦在一个线程中指定了一个当前RC,在此线程中其后所有的OpenGL命令都使用相同的当前RC。虽然在单一窗口中可以使用多个RC,但在单一线程中只有一个当前RC。下面我将首先产生一个OpenGL RC并使之成为当前RC,这将分为三个步骤:设置窗口像素格式;产生RC;设置为当前RC。 二、MFC中的OpenGL基本框架 1、首先创建工程 用AppWizard产生一个MFC EXE项目,其他默认即可。 2、将此工程所需的OpenGL文件和库加入到工程中 在工程菜单中,选择"Build"下的"Settings"项。单击"Link"标签,选择"General"目录,在Object/Library Modules的编辑框中输入"opengl32.lib glu32.lib glut.lib glaux.lib"(注意,输入双引号中的内容,各个库用空格分开;否则会出现链接错误),选择"OK"结束。然后打开文件"stdafx.h",加入下列头文件: #include #include 3、改写OnPreCreate函数并给视图类添加成员函数和成员变量

OpenGL需要窗口加上WS_CLIPCHILDREN(创建父窗口使用的Windows风格,用于重绘时裁剪子窗口所覆盖的区域)和WS_CLIPSIBLINGS(创建子窗口使用的Windows风格,用于重绘时剪裁其他子窗口所覆盖的区域)风格。把OnPreCreate改写成如下所示:BOOL COpenGLDemoView::PreCreateWindow(CREATESTRUCT& cs) { // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs cs.style |= (WS_CLIPCHILDREN | WS_CLIPSIBLINGS); return CView::PreCreateWindow(cs); } 产生一个RC的第一步是定义窗口的像素格式。像素格式决定窗口着所显示的图形在内存中是如何表示的。由像素格式控制的参数包括:颜色深度、缓冲模式和所支持的绘画接口。在下面将有对这些参数的设置。我们先在COpenGLDemoView的类中添加一个保护型的成员函数BOOL SetWindowPixelFormat(HDC hDC)(用鼠标右键添加)和保护型的成员变量:int m_GLPixelIndex;并编辑其中的代码如下: BOOL COpenGLDemoView::SetWindowPixelFormat(HDC hDC) {//定义窗口的像素格式 PIXELFORMATDESCRIPTOR pixelDesc= { sizeof(PIXELFORMATDESCRIPTOR), 1, PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL| PFD_DOUBLEBUFFER|PFD_SUPPORT_GDI, PFD_TYPE_RGBA, 24, 0,0,0,0,0,0, 0, 0,

基于MFC的简单画图程序实验

简单画图程序 【实验目的】 本实验目的是通过构建基于MFC的windows画图程序,使学生: (1) 理解MFC应用程序的运行机制 (2) 掌握使用MFC构建Windows应用程序的基本结构及编程的基本方法 (3) 理解和掌握MFC应用程序消息处理机制及应用 (4) 掌握类向导(ClassWizard)的使用 【实验要求】 (1) 必须做好实验原理的预习。 (2) 需要对提供的程序代码进行分析,并明确实验时还应在何处添加哪些语句。 【实验环境】 Microsoft Windows XP Microsoft Visual C++ 6.0 1 基本功能描述 1) 在单文档菜单中,在菜单行中可插入一个菜单项,命名为绘图,在下拉菜单中可分别设置绘制的图形形状,如直线、矩形及椭圆,线宽选项,有1-5可供选择,还可以设置线色以及填充色,通过弹出的颜色对话框选择需要的颜色,如果不选择线宽、线色以及填充色,则按默认的画笔,画刷来绘制选择的图形。 2) 选择好图形后,通过鼠标可以绘制出相应的直线,矩形或椭圆,鼠标的按下确定图形的起点,鼠标的拖动则确定了图形的终点,即通过鼠标的拖动来决定图形的大小,当鼠标弹起,此图形则绘制完毕。 3) 增添工具栏,设置绘制的图形形状,线色以及填充色,可更方便地选择相应的功能。 2 设计思路 1) 对需要用到的变量进行初始化。 2) 选择相应的图形之后就响应相应的消息处理函数,给shape赋对应的值。选择不同

3) 鼠标的按下响应函数OnLButtonDown(),捕捉鼠标当前位置得到起点的坐标,鼠标的拖动响函数OnMouseMove()改变终点的坐标,鼠标的弹起响应OnLButtonUp(),确定终点坐标,刷新,得到绘制图形。 4) 选择图形或其它属性,可进行下一次绘制。

c++实验报告mfc简单画图程序).doc

V C++程序设计实验报告 一、实验目的 掌握MFC编程 二、实验内容 用MFC向导创建单文档应用程序,一个简单的画图程序。 ?使用C++语言实现 ?使用VC++6.0集成开发环境开发 ?使用MFC应用程序开发框架 三、实验步骤 ?基本功能描述 1. 打开exe文件,在绘图下拉菜单中可分别设置绘制的图形形状,如直线、曲线、矩形及椭圆,线宽选项,有1-6可供选择,线型选项有实线、虚线、点线和点段线供设置,还可以设置线色以及填充色,通过弹出的颜色对话框选择需要的颜色,如果不选择线宽、线色以及填充色,则按默认的画笔,画刷来绘制选择的图形。 2. 选择好图形后,通过鼠标可以绘制出相应的直线,矩形或椭圆,鼠标的按下确定图形的起点,鼠标的拖动则确定了图形的终点,即通过鼠标的拖动来决定图形的大小,当鼠标弹起,此图形 则绘制完毕。 ?设计思路 1. 对需要用到的变量进行初始化。 2. 选择相应的图形之后就响应相应的消息处理函数,给shape赋对应的值。选择不同的线宽,线色与填充色,即可改变画笔或画刷的属性。 3. 鼠标的按下响应函数OnLButtonDown(),捕捉鼠标当前位置得到起点的坐标,鼠标的拖动响函数OnMouseMove()改变终点的坐标,鼠标的弹起响应OnLButtonUp(),确定终点坐标,刷新,得到绘制图形。 4. 选择图形或其它属性,可进行下一次绘制。 ?软件设计 A 设计步骤 1.创建单文档 创建一个MFC AppWizard[exe]工程,命名为“Draw”,如图1所示,并创建单文档,如图2所示。创建成功后,系统自动生成相应的类,如图3所示。

图1 创建工程 图2 创建单文档

画图程序设计报告(MFC)

Windows程序设计课程设计报告 班级:计本08-1班 姓名:X X 学号:XXXXXXXXX 指导老师: 2010-11-29

目录 1 引言 (3) 1.1 课题背景 (3) 1.2 课程设计目的 (3) 2 功能说明 (3) 3 系统的实现 (4) 3.1 视图设计 (4) 3.2 编辑资源 (4) 3.3 编程思路及各个函数的实现 (5) 4程序功能的测试 (7) 4.1测试的研究与选择 (7) 4.2 测试环境 (7) 5.3 实例测试结果 (7) 5学习的总结 (9) 6参考文献 (10)

摘要:本课程设计实现的是画椭圆、矩形、直线和随手画功能等。这个画图小程序实现了简单的画图功能,具有简洁大方的图文外观。它的设计按软件工程的方法进行,系统具有良好的界面、必要的交互信息和简易的菜单进行操作。即时准确地获得需要的画图的工具,适合休闲娱乐和简单的画画,对人们的生活有一定的帮助。在课程设计中,系统开发平台为WindowsXP,程序设计设计语言采用Visual C++,在程序设计中,采用了结构化与面向对象两种解决问题的方法。 关键词:程序设计;画图;MFC;画图函数Ellipse()Restangle() 1 引言 1.1 课题背景 本课程设计主要在生活中的娱乐,可以在本程序上进行简单的绘图娱乐。 画图是日常生活中有效的工具,能实现简单的画图。本程序是在VC6.0中使用AppWizard创建基于对话框的应用程序。 1.2 课程设计目的 画图的实现,通过C++语句实现。在视图中实现画线功能,更好的了解MFC、C++等面向对象语言的设计和实现,运用自己所学的一些知识来实现其运用到现实的实践中,从而做到学而有用。 2 功能说明 本程序可以实现的功能如下: 1.运行程序后单击“编辑”菜单,选择“画矩形”后,用鼠标就可以在视图中画出一个矩形。 2.选择“画椭圆”,用鼠标就可以在视图中画出一个椭圆。 3.选择“画直线”,用鼠标就可以在视图中画出一条直线。 4.选择“随手画”,用鼠标就可以在试图中随手画画。 5.选择“TOP”就可以让画图窗口一直保持在其他窗口前面。 6.窗口右下角显示系统的当前时间。 7.将项目的默认图标换成自己设计的图标。

MFC画笔程序实验报告

功能说明 1、在画图之前,点菜单【画笔】,设置画笔之后才能绘图 图1、画笔设置 2、左侧工具条依次对应直线、自由画线、实体矩形、实体圆形、实体椭圆、选中区域、擦除功能 图2、图形绘制及编辑 3、选中区域后删除,点击菜单【编辑\删除选定区域】,即可完成删除功能 4、颜色设置,点击菜单【颜色】,弹出颜色对话框,选中颜色

图3、颜色设置 5、背景设置,点击菜单【背景设置】,弹出对话框,选择“是”加载默认位图 资源 图4、背景设置 6、点击保存按钮,生成图片保存到工程文件的文件夹中 问题分析 建立MFC单文档工程文件:Draw 一、画图程序支持画直线、自由连线(随鼠标移动连线)、实体圆形、实体矩形、实体椭圆。 在主窗口中添加工具条,工具条上有直线、自由连线、实体圆形、实体矩形、实体椭圆的的图标,命名为IDR_DRAWFRAME,在CmainFrame的OnCreat函数中将工具条加载上去,函数名为:LoadToolBar 二、支持区域选中(通过鼠标拖拽方框选中),并删除选中区域内所画的形状。 鼠标拖拽方框选中:可以设计绘制为背景为透明色的矩形 删除选中区域即将选中矩形上的图像去掉,变为系统白色区域,即:设计矩形填充为白色 三、支持各种笔形画图时的前景色和背景色

前景色:在菜单中添加颜色菜单,单击颜色菜单,弹出颜色选择框,选择颜色对画笔的颜色进行设置。 背景色:在菜单栏中添加背景设置按钮,选择背景设置,则默认设置图画位图背景为选定的文件 四、支持图擦功能,选中图擦时,随着图擦的移动,根据图擦的大小,将图擦经过的区域中的形状相关部分清除。 在工具条上添加擦出按钮,随着鼠标的移动,鼠标经过的区域图形消失,采用InvalidateRect函数、 五、支持打印、打印预览功能,并保持图片所见即所得。 在视图窗口绘制图形是在逻辑坐标系中展示的,而打印设备对应的是物理坐标系。为了实习所见即所得,需要继续逻辑坐标系到物理坐标系的转换。 六、支持将所画的内容保存为文件,格式为BMP格式。 在菜单【文件】中有“保存按钮”,点击此按钮,将所绘图形保存为.bmp文件。MFC没有提供文件的保存函数,需要自己设计算法,以完成.bmp文件的保存。首先当前显示的屏幕位图拷贝到BITMAP中,然后将BITMAP保存到内存中。 方案设计 一、画图程序支持画直线、自由连线(随鼠标移动连线)、实体圆形、实体矩形、实体椭圆。 实现步骤: (1)在主窗口中添加工具条,工具条上有直线、自由连线、实体圆形、实体矩形、实体椭圆的的图标,命名为IDR_DRAWFRAME,在CmainFrame 的OnCreat函数中将工具条加载上去,函数名为:LoadToolBar (2)直线图标ID号为:ID_SLINE;自由连线图标ID号为:ID_CLINE; 实体圆形ID号为:ID_ROUND 实体椭圆图标ID号为:ID_ELLIPSE 实体矩形ID号为:ID_RECTANGL (3)在CDrawView类中添加m_nDrawType变量控制画图类型,添加m-ptStart变量,保存鼠标起始点。为以上ID号添加COMMAND函数, 分别为:OnSline() 、OnCline() 、OnRound()、OnRectangle() 、OnEllipse()。 函数中控制m_nDrawType的值,以控制图形类型 (4)在CDrawView类中添加成员函数OnLButtonDown、OnLButtonUp和OnMouseMove,OnLButtonUp中完成直线、实体圆形、实体矩形、实 体椭圆的绘制;OnMouseMove中完成自由连线的绘制。 (5)为保证视图窗口刷新时,图形能够再现,添加类CGraph,此类中包含变量nFlags(控制OnMouseMove函数)、m_nDrawType(绘图类型)

MFC实验报告

实验报告 实验日期: 2013 年 05 月 18 日 一、实验目的 1、熟悉Visual C++的基本操作。 2、基本了解基于对话框的windows应用程序的编写过程。 3、对于Windows Socket编程建立初步概念。 二、实验要求 1、应用Visual C++中MFC CSocket类,实现网络数据传输。 2、仿照本实验步骤,制作实用的局域网一对一聊天程序。 三、实验原理

设置加入连接的数目,通过更改IP地址和端口号,成为不同的客户端,与服务器端连接,实现用户间的聊天功能。 1.程序整体框架:主程序监听一端口,等待客户接入;同时构造一个线程类,准备接管会话。当一个Socket会话产生后,将这个会话交给线程处理,然后主程序继续监听。 2.客户端(Client) 客户端,使用Socket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功,打开会话;会话完成后,关闭Socket。客户端不需要指定打开的端口,通常临时的、动态的分配一个端口。 3.服务器端(Server) 服务器端,使用ServerSocket监听指定的端口,端口可以随意指定(由于1024以下的端口通常属于保留端口,在一些操作系统中不可以随意使用,所以建议使用大于1024的端口),等待客户连接请求,客户连接后,会话产生;在完成会话后,关闭连接。 4.用户图形界面 用户图形界面方便程序与用户的交互,多个用户参加,完成会话功能,具体的设计要方便用户的使用,直观清晰,简洁明了,友好美观。 四、实验内容 一个最简单的点对点聊天程序 客户机/服务器模式是socket点对点网络程序典型的模式,以下这个实验就是实现一个简单的点对点通信的聊天程序。它用到的方法也是面向连接TCP连接的套接字MFC典型方式。其工作过程是:服务器首先启动,创建套接字后等待客户的连接;客户启动以后,创建套接字,然后和服务器建立连接;连接建立后,客户机和服务器可以通过建立的套接字连接进行信息通信。

MFC02_Visual Studio C++ MFC简单绘图程序

Visual studio C++ MFC 简单绘图程序-绘制国际象棋棋盘 功能:由Button将绘制的棋盘显示于Picture Control中 一、建立一个MFC功程序: 1.启动Visual Studio C++; 2.新建一个MFC对话框项目:New|Project|MFCAplication; https://www.sodocs.net/doc/b015200960.html,中输入mfc_pic,然后点|OK; 4.在Welcome to the MFC Application窗口:点next; 5.在Application Type窗口:点dialoge base;然后点Finish;出现如图所示的窗口; 6.删除窗口中的TODO…文本对象; 二、向窗口添加一个Picture Control和一个Button共二个对象: 1.修改Button的Caption属性为“绘制棋盘”,ID属性为IDC_BUTTON_DRAR; 2.修改Picture Control的ID属性为IDC_PIC,建立关联变量名为picD; 3.双击Button,添加如下代码: voidCmfcpicDlg::OnBnClickedButton1() { CRect r; intw,h,dxy,i,j; CWnd *pic = GetDlgItem(IDC_PIC); //取Picture的长宽信息 GetDlgItem(IDC_PIC)->GetWindowRect(&r); w=r.Width(); h=r.Height(); dxy=(wGetDC(); pdc->Rectangle(r); CBrushmyBrush; pdc->Rectangle(0,0,8*dxy,8*dxy); //绘制外框线 myBrush.CreateSolidBrush(RGB(0,0,0)); for(i=0;i<8;i++){ for(j=i%2;j<8;j+=2){ r.left=i*dxy; r.top=j*dxy; r.right=(i+1)*dxy; r.bottom=(j+1)*dxy;

c++简单画图程序

目录 1. 基本功能描述 (1) 2. 设计思路 (1) 3. 软件设计 (4) 设计步骤 (4) 界面设计 (6) 关键功能的实现 (7) 4. 结论与心得体会 (8) 5. 思考题 (8) 6. 附录 (10) 调试报告 (10) 测试结果 (10) 关键源代码 (10)

简单画图程序 1. 基本功能描述 简单画图程序实现了常见图形的绘制、图形属性的设置和图形数据的暂存等功能。该程序的具体功能模块包括以下几项: 1) 图形绘制模块。该模块实现直线段、椭圆、矩形等图形的绘制功能。在鼠标移动的过程中能实时显示当前绘制的图形。 2) 图形属性设置模块。该模块实现绘图线条的线宽,线色,图形填充色等属性设置功能。 3) 图形数据暂存模块。该模块实现直线段、椭圆、矩形等图形数据暂存功能,涉及图形的坐标、线宽、线色、填充色等数据。 2. 设计思路 1) 对需要用到的变量进行初始化。 2) 选择相应的图形之后就响应相应的消息处理函数,给shape赋对应的值。选择不同的线宽,线色与填充色,即可改变画笔或画刷的属性。 3) 鼠标的按下响应函数OnLButtonDown(),捕捉鼠标当前位置得到起点的坐标,鼠标的拖动响函数OnMouseMove()改变终点的坐标,鼠标的弹起响应OnLButtonUp(),确定终点坐标,刷新,得到绘制图形。 4) 选择图形或其它属性,可进行下一次绘制。 5) 程序的流程图如下:

图1 程序流程图 3. 软件设计 设计步骤 1) 创建单文档 创建一个MFC AppWizard[exe]工程,命名为“LiYuJing”,如图1所示,并创建单文

简单画图程序课程设计报告

目录 1 基本功能描述----------------------------------------------------------2 2 设计思路----------------------------------------------------------2 3 软件设计----------------------------------------------------------4 3.1 设计步骤----------------------------------------------------------4 3.2 界面设计----------------------------------------------------------8 3.3 关键功能实----------------------------------------------------------9 4. 附录----------------------------------------------------------9 4.1 调试报告----------------------------------------------------------9 4.2 测试结果----------------------------------------------------------10 4.3关键源代码---------------------------------------------------------12 5 结论与心得体会----------------------------------------------------------11 6. 参考文献----------------------------------------------------------11 7. 思考题----------------------------------------------------------11

解决MFC绘图过程中的闪烁

如何解决绘图过程中的闪烁 在VC中进行绘图过程处理时,如果图形刷新很快, 经常出现图形闪烁的现象。利用先在内存绘制,然后 拷贝到屏幕的办法可以消除屏幕闪烁,具体的方法是先在内存 中创建一个与设备兼容的内存设备上下文,也就是开辟一快内 存区来作为显示区域,然后在这个内存区进行绘制图形。在绘制完成后利用 BitBlt函数把内存的图形直接拷贝到屏幕上即可。 具体的代码实现为: (1)创建内存区域 CDC* pMem=new CDC; CBitmap* pBmp=new CBitmap; CBitmap* pOldBmp; CDC* pDC=GetDC(); CRect rectTemp;为绘图区域 pMem->CreateCompatibleDC(pDC); pBmp->CreateCompatibleBitmap(pDC, rectTemp.Width(), rectTemp.Height()); pOldBmp=pMem->SelectObject(pBmp); (2)进行图形绘制 pMem->LineTo(...); 进行绘图处理 (3)拷贝到屏幕 pDC->BitBlt(rectTemp.left,rectTemp.top,rectTemp.Width(),rectTemp.Height(),pMem,0,0,SRCCO PY); pMem->SelectObject(pOldBmp); pBmp->DeleteObject() ; pMem->DeleteDC(); ====================================================================== ========================== 双缓存机制解决VC++绘图时的闪烁问题 显示图形如何避免闪烁,如何提高显示效率是问得比较多的问题。 而且多数人认为MFC的绘图函数效率很低,总是想寻求其它的解决方案。 MFC的绘图效率的确不高但也不差,而且它的绘图函数使用非常简单, 只要使用方法得当,再加上一些技巧,用MFC可以得到效率很高的绘图程序。 我想就我长期(呵呵当然也只有2年多)使用MFC绘图的经验谈谈 我的一些观点。

C++大作业项目报告--贪吃蛇游戏的MFC设计

“C++程序设计”课程大作业 项目报告 项目名称:贪吃蛇游戏的MFC设计 姓名:XXX 学号:XXX 班级:XXX 日期:2013.12.25

小组概况

目录 1系统功能设计 (4) 2系统总体结构 (4) 3本人工作内容 (5) 4项目总结 (6) 5相关问题的说明 (6)

1系统功能设计 在一个密闭的空间内,通过按键上的四个光标控制蛇的上下左右四个方向移动,蛇头碰撞到食物则表示食物被蛇吃掉,这时蛇的身长长一节,接着出现食物,等待被蛇吃掉,如果蛇在移动过程中,蛇头撞到墙壁或者身体与蛇头接触则游戏结束。 2系统总体结构 2.1设计思路说明 在数据结构上,用数组存储蛇以及蛇的运动区域。在数组中,每个元素有四个云感动方向,分别为RIGHT,LEFT,UP,DOWN.在没有蛇身的区域,数组的元素值为0。在蛇身的每个节点,用一个数组元素存储当前蛇节点的运动方向。通过改变数组中元素的值来表示蛇身的移动。在程序中运用定时器来保证蛇的持续移动。每个一定的时间间隔,蛇移动一格。在设计界面时。在Visual Studio 6.0的环境下,建立基于对话框的单文档工程,在工程下设计游戏界面,实现贪食蛇运行算法。在对话框中画出一个矩形,实现封闭空间。在大矩形中,用20x20的像素单位绘出蛇身,当蛇每移动一小格的时候,重绘整个窗口。在对蛇身进行绘画时。通过数组元素的值将蛇身在对话框的矩形中显示出来。在蛇身运动时,首先在蛇头位置蛇身增长一个节点,然后判断蛇头是否到达食物所在位置,若在食物所在位置,则蛇尾不减一,蛇身继续移动,若蛇头不再食物位置,则蛇尾减一,蛇身继续移动。若蛇头越界或者蛇头与蛇身重叠,则游戏结束,并弹出得分。 2.2重要的MFC 1.CMenu:菜单 2.CView:视图,负责内存数据与用户的交互。包括数据的显示、用户操作的响应(如菜单的选取、鼠标的响应)。最重要的是OnDraw(重画窗口),通常用CW nd::Invalidate()来启动它。另外,它通过消息映射表处理菜单、工具条、快捷键和其他用户消息。另外,自己附加的许多功能都要加在里面,例如:背景音乐。 3.CDC:设备文本。无论是显示器还是打印机,都是画图给用户看。这图就抽象为CDC。CDC与其他GDI(图形设备接口)一起,完成文字和图形、图像的显

MFC单文档应用程序基础训练——文本输出、绘图等要点

MFC单文档 基础训练——文本输出、绘图等 平台为:VS2010

1.一个简单的单文档应用程序 文件->新建项目->MFC应用程序,出现窗口按“下一步”,出现下面窗口选择单文档 点"调试—>运行",最后运行界面为下图:

一个简单的单文档应用程序向导自动建立五个类: 向导自动建立的类相应源文件其他源文件相应头文件其他头文件CAboutDlg StdAfx.cpp StdAfx.h CXxxApp Xxx.cpp Xxx.rc Xxx.h Resource.h CXxxView XxxView.cpp XxxView.h CXxxDoc XxxDoc.cpp XxxDoc.h

CMainFrame MainFrame.cpp MainFrame.h 文档—视结构 每个类的主要函数: void CAboutDlg::DoDataExchange(CDataExchange* pDX) int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)//创建窗体的工具栏,状态栏等 BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) BOOL CXxxApp::InitInstance() void CXxxApp::OnAppAbout() BOOL CXxxDoc::OnNewDocument()//初始化文档字符数据、字体信息等 void CXxxDoc::Serialize(CArchive& ar) BOOL CXxxView::PreCreateWindow(CREATESTRUCT& cs) void CXxxView::OnDraw(CDC* pDC) BOOL CXxxView::OnPreparePrinting(CPrintInfo* pInfo)//弹出打印对话框 void CXxxView::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo) void CXxxView::OnEndPrinting(CDC* pDC, CPrintInfo* pInfo) CXxxDoc* CXxxView::GetDocument() // non-debug version is inline 创建单文档应用程序的一般步骤: ● 利用AppWizard 创建应用程序框架 ● 在文档内中声明保存文档数据所需要数据对象 ● 完成文档类的OnNewDocument 函数,初始化新文档 ● 完成文档类的Serialize 函数,保持和加载文档数据 ● 完成视类的OnInitialUpdate 函数,初始化显示 ● 完成视类的OnDraw 函数,显示当前文档内容 ● 在视类中加入可以使用户编辑文档数据所需的代码 视(View ) 显示用户程序的数据及处理用户与文档的交互 文档对象 永久存储 (磁盘文件) MainFrame 框架窗口

相关主题