C++面向对象程序设计实验指导书(谭浩强)(6)

2019-01-03 17:48

C++面向对象程序设计实验指导书 实验七

#include \

class CBase {

public:

CBase(int a) :a(a) { } int a; };

class CDerive1 : public CBase {

public:

CDerive1(int a) :CBase(a) { } };

class CDerive2 : public CBase {

public:

CDerive2(int a) :CBase(a) { } };

class CDerive : public CDerive1,public CDerive2 {

public:

CDerive(int a,int b) :CDerive1(a),CDerive2(b) { } };

void main() {

CDerive d(1,2); cout<

问题一:在不改变原有程序意图的前提下,分别用三种方法改正以上程序,并使程序正确输出。

23

C++面向对象程序设计实验指导书 实验七

7.2.2 程序设计

1.建立普通的基类building,用来存储一座楼房的层数、房间数以及它的总平方数。建立派生类house,继承building,并存储卧室与浴室的数量,另外,建立派生类office,继承building,并存储灭火器与电话的数目。设计一主函数来测试以上类的用法。

7.3思考题

1.按照下图的类层次结构 编写程序,定义属于score的对c1以及类teacher的对象t1,分别输入个数据成员的值后再显示出这些数据。

personnameidstudaddrtelteacherdegreedepstudentoldsnomathengscore24

C++面向对象程序设计实验指导书 实验八

实验八 C++程序、Windows程序和MFC

程序

8.1 实验目的

1.理解C++程序、Windows程序以及MFC程序之间的联系与区别; 2.理解Windows程序的消息机制;

3.学会应用VC++6.0的AppWizard创建基于MFC的Windows程序; 4.理解C++在MFC中的位置和作用。

8.2 实验内容 8.2.1 实验描述

1.理解C++程序、Windows程序和MFC程序的联系与区别 C++是面向对象编程语言中的一种,它具有封装性、继承性以及多态性三大特性,用C++语言写出来的程序需要借助编译器才能生成可执行的二进制代码,VC++6.0中具有能识别C++程序的编译器,所以VC++6.0可以用来作为C++程序的开发环境。 MFC(Microsoft Foundation Class)是微软公司开发出来的一套用于Windows程序开发的类库,MFC是建立在C++语言基础之上的,它利用C++语言的三大特性对自己进行了封装,极大地方便了用户在Windows上进行程序开发,同时MFC也借助AppWizard使开发者摆脱离了那些每次都必写基本代码,借助ClassWizard和消息映射使开发者摆脱了定义消息处理时那种混乱和冗长的代码段。 Windows程序与其他程序最大的不同之处在于使用消息机制,在Windows程序中所发生的一切都可以用消息表示,消息用于告诉操作系统所发生的事情。在MFC中遵循Windows的消息机制,MFC对消息的处理利用了消息映射的方法,所谓消息映射就是将消息与处理函数相联系,即当系统产生一条消息时,它能找到处理该消息的函数,该方法的基础是宏定义实现。 2.Windows系统是一个消息驱动的OS,可以从以下几个方面来理解Windows的消息机制: ? 消息的组成:一个消息由一个消息名称(UINT),和两个参数(WPARAM,LPARAM)。

当用户进行了输入或是窗口的状态发生改变时系统都会发送消息到某一个窗口。例如当菜单选中之后会有WM_COMMAND消息发送,WPARAM的高字中(HIWORD(wParam))是命令的ID号,对菜单来讲就是菜单ID。当然用户也可以定义自己的消息名称,也可以利用自定义消息来发送通知和传送数据。

? 谁将收到消息:一个消息必须由一个窗口接收。在窗口的过程(WNDPROC)中可以对

消息进行分析,对自己感兴趣的消息进行处理。例如你希望对菜单选择进行处理那么你可以定义对WM_COMMAND进行处理的代码,如果希望在窗口中进行图形输出就必须对WM_PAINT进行处理。

25

C++面向对象程序设计实验指导书 实验八

? 未处理的消息到那里去了:Windows系统为窗口编写了默认的窗口过程,这个窗口过程

将负责处理那些你不处理消息。正因为有了这个默认窗口过程我们才可以利用Windows的窗口进行开发而不必过多关注窗口各种消息的处理。例如窗口在被拖动时会有很多消息发送,而我们都可以不用处理,而是让系统自己去做默认处理。 ? 窗口句柄:说到消息就不能不说窗口句柄,系统通过窗口句柄来在整个系统中唯一标识

一个窗口,发送一个消息时必须指定一个窗口句柄表明该消息由那个窗口接收。而每个窗口都会有自己的窗口过程,所以用户的输入就会被正确的处理。例如有两个窗口共用一个窗口过程代码,你在窗口一上按下鼠标时,消息就会通过窗口一的句柄被发送到窗口过程代码中。

? Windows系统的消息机制:系统将会维护一个或多个消息队列,所有产生的消息都回被

放入或是插入队列中。系统会在队列中取出每一条消息,根据消息的接收句柄而将该消息发送给拥有该窗口的程序的消息循环。每一个运行的程序都有自己的消息循环,在循环中得到属于自己的消息并根据接收窗口的句柄调用相应的窗口过程。而在没有消息时消息循环就将控制权交给系统所以Windows可以同时进行多个任务。

3.本次实验将利用MFC的应用程序向导(AppWizard)生成一个支持MFC的Windows程序,同时在生成应用程序的过程中理解不同设置对工程的影响。

8.2.2 实验步骤

1.启动VC++6.0开发环境,选择File|New菜单项,弹出如图11-1对话框。

图11-1

2.选择MFC AppWizard[exe],在Location文本编辑框中输入文件欲保存的目录位置,或单击省略号“...”按钮选择已有的目录;同时在Project name下面的文本编辑框中输入工程名称,本次实验我们的工程名称为MyTestProject,这时OK按钮被激活。该对话框中还有以下选项:(如图11-1)

? Create new workspace单选按钮:表示创建一个新的工作区,并将新项目添加到这个工

26

C++面向对象程序设计实验指导书 实验八

作区。

? Add current workspace单选按钮:表示将项目添加到当前工作区,如果此时有多个工作

区,那么可以通过选中Dependency of复选按钮来选择当前项目需要添加到的工作区。 2.单击OK按钮,进入如图11-2所示的MFC AppWizard - Step 1对话框,该对话框主要有以下选项:

? What type of application would you like to current?你想要创建的应用程序有以下单选项

供选择:

? Single document:生成单文档应用程序。 ? Multiple document:生成多文档应用程序。

? Dialog based:生成基于对话框的应用程序(如计算器等)。

? Document/View architecture support?是否需要支持文档/视图结构,需要则选中该选项,

如果不需要,则应用程序中关于文件的打开、关闭、保存及文档/视图的相互作用等功能需要程序员自己实现。

? What language would you like your resources in?选择生成何种语言界面的应用程序,如

果需要中文界面,则选择如图11-2中的“中文[中国]”,本例中选择生成单文档的应用程序。

图11-2

3.单击Next按钮进入MFC AppWizard – Step 2 of 6对话框,如图11-3所示,该对话框用于支持数据库功能选项的选择,本例中选择None,下面分别为该对话框中的主要选项做一个简单介绍:

? What database support would you like to include?有四个单选项供选择:

? None:不支持数据库。

? Header files only:只生成头文件。

27


C++面向对象程序设计实验指导书(谭浩强)(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:课外阅读考级题目-《大林和小林》

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: