课后习题答案(3)

2019-08-01 23:59

dlg.SetActivePage(3);

6. 基本控件有哪些?举例说明基本控件的方法?

答: Button、 StaticText、EditBox、ScrollBar、ComboBox、ListBox和CheckListBox等

例如按钮控件使用方法。

(1)新建一个基于对话框的应用程序项目,命名为“Button”。

(2)删除对话框上自带的“确定”和“取消”以及静态文本框。 (3)添加一个按钮和编辑框控件。

在右边工具栏上单击Button按钮拖动到对话框,修改Button的Captio为叮咚按钮。单击Edit Control按钮,拖动到对话框。

(4)给按钮添加消息处理函数,方法是双击“叮咚按钮”在OnBnClickedButton1()函数中添加如下代码:

void CButtonDlg::OnBnClickedButton1() {

SetDlgItemText(IDC_EDIT1, _T(\按钮功能实现了\

}

调试运行程序。单击“叮咚按钮”,结果如图所示。

7. 设计一个对话框应用程序。要求:能选择字体(宋体、黑体、楷体)、字型(粗体、斜体、下划线)、字号(1-64,带旋转按纽)并在“示例”组框中显示示例文字“基于对话框的应用”。

答:创建对话框程序,添加按钮,建立消息映射,添加代码,使用字体对话框CFontDialog。 8. 编写一个对话框应用程序,程序运行时,通过编辑框输如被减数与减数的值,单击“计算”按钮,将像是这两个数的差。

答:创建对话框程序,添加三个编辑框和一个计算按钮,为编辑框添加关联的double类型的变量,在按钮中进行计算,注意需要使用UpdateData函数进行更新。

9. 设计一个“用户登录对话框”,要求用户输入帐号和用户密码,单击“确定”按钮,

可以实现用户登录功能。 答:创建对话框程序,添加一个对话框,在InitInstance中添加代码进行验证,不正确则退出,正确则继续。

10. 要求通过滑动水平滚动条和垂直滚动条,同时有对应进度条显示滑动范围。

答:创建对话框程序,添加一个水平、一个垂直滚动条和一个进度条,为其添加关联变量。再添加一个按钮,添加消息映射函数,添加相关代码。

第五章习题 参考答案

1. 常见的菜单类型有哪几种?

答:常见的菜单可以分为三类:主菜单、弹出菜单和快捷菜单。

主菜单是指出现在应用程序主窗口或最上层窗口的菜单。主菜单由菜单名和菜单项构成。菜单名指出一组菜单项命令的主要功能和目标。常见的菜单名有:文件、编辑、帮助等。通常,每个主菜单都对应有一个弹出菜单作为它的子菜单,而一个菜单项或对应一个确定的

功能,或对应一个弹出菜单。

弹出菜单是指选择主菜单或一个菜单项时弹出的子菜单。用户可以定义多重嵌套的弹出式菜单,菜单项右边的三角符号表示有子菜单存在。可以通过放置分隔线在逻辑或功能上对菜单项进行分组。

快捷菜单是显示于窗体之上的浮动式菜单,快捷菜单的显示是由单击鼠标右键触发的,所弹出的具体菜单依赖于被选中的对象,以及光标或鼠标在工作区域内所指的位置,由此,快捷菜单又称为上下文菜单。

2. 简述菜单设计的主要步骤有哪些? 答:1.用菜单编辑器编辑菜单资源

2.将菜单资源链接到对话框(对于对话框的菜单) 3.添加消息响应函数 4.编写消息响应函数

3. 简述快捷菜单创建的基本步骤有哪些? 答:1. 添加菜单资源

2.建立消息映射,编辑响应函数

3.在CMainFrame类中加入WM_CONTEXTMENU消息的处理函数

4.编辑WM_CONTEXTMENU消息处理函数 4. 简述工具栏创建的基本步骤有哪些?

答:1.用编辑器编辑工具栏资源;2.若工具栏资源没有对应的菜单资源,或者没有给对应的菜单资源添加消息响应函数则进行3和4,否则编辑完成; 3.添加消息响应函数; 4.编写消息响应函数

5. 编写一个单文档应用程序MyDraw,为程序添加一个“颜色”主菜单,当运行程序时,

用户单击“颜色”菜单时,弹出系统自定义的颜色对话框。 答:略

6. 为应用程序MyDraw新增一个“线宽”主菜单,且“线宽”主菜单下包含“1”“2”

两个菜单项,在状态栏的最右侧,增加一个窗格,当运行程序时,用户选择了“线宽”下的“1”菜单项后,在窗格中显示“线宽1”,当用户选择了“2”是在窗格中显示“线宽2”。 答:略

7. 为应用程序MyDraw新增菜单项控制功能,当“线宽”下的“1”或“2”被选中时,在“1”或“2”前添加复选标记。 答:略

8. 为应用程序MyDraw中增加的菜单添加工具栏按钮,并为“线宽”菜单添加快捷菜单。 答:略

9. 新建一个基于对话框的应用程序,为其添加在单文档应用程序中添加的两个主菜单。 答:略

第六章习题 参考答案

1. 什么是DC?什么是CDC类?

答:DC:Windows使用抽象设备的管理方法,一个图形输出设备可以是显示器或打印机等物理设备。Windows用一个称为设备环境(Device Context,DC)的虚拟逻辑设备来描述这些输出设备。CDC:包括在MFC类库中的所有设备环境类的基类,对GDI的所有绘图函数进

行了封装。

2. 什么是OnDraw函数?

答:OnDraw函数是视图类的成员函数,是关于WM_PAINT消息的映射函数,当视图窗口的显示状态发生变化,窗口会收到WM_PAINT消息,OnDraw函数中的代码即被自动调用执行。若图形绘制的代码写在OnDraw函数内,则图形应该始终出现在窗口上。

OnDraw函数不能在程序中调用,若需要调用,可以通过调用函数Invalidate函数,实现对OnDraw的间接调用。Invalidate函数是窗口类的一个成员函数,功能是刷新窗口,向窗口发送WM_PAINT消息,因此会执行到OnDraw函数。 3. 如何创建CDC对象 答:CClientDC dc(this);

4. CDC中关于图形输出的函数有哪些?

答:CDC类中实现基本几何图形输出的一些常用函数有:

? 绘制椭圆

BOOL Ellipse( int x1, int y1, int x2, int y2 );

BOOL Ellipse( LPCRECT lpRect ); // lpRect和x1,y1,x2,y2意义一致

绘制一个椭圆,其中参数x1,y1是椭圆外接矩形的顶点坐标,x2,y2是椭圆外接矩形的另一个顶点坐标。即二个点确定一个矩形,矩形尺寸确定了椭圆的范围,如图6-5-a所示。

? 绘制矩形

BOOL Rectangle( int x1, int y1, int x2, int y2 );

BOOL Rectangle( LPCRECT lpRect ); // lpRect和x1,y1,x2,y2意义一致

绘制一个矩形,其中参数x1,y1,x2,y2是矩形的顶点坐标。即二个点确定一个矩形,如图6-5-b所示。

? 绘制线段

CPoint MoveTo( int x, int y );

CPoint MoveTo( POINT point ); //point和x,y意义一致 BOOL LineTo( int x, int y );

BOOL LineTo( POINT point ); //point和x,y意义一致

绘制一个线段需要调用二个函数,MoveTo()功能是将笔移到(x1,y1)位置;LineTo()是绘制线条到(x2,y2)位置,如图6-5-c所示。

? 绘制圆弧

BOOL Arc( int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4 );

BOOL Arc( LPCRECT lpRect, POINT ptStart, POINT ptEnd ); //参数目的一致

此函数的功能为绘制一个圆弧。圆弧是圆周的一部分,所以需要的参数是4个点的坐标,前二个点x1,y1和x2,y2确定了圆所在的位置,后个点x3,y3和x4,y4则指明了在这儿点之间截取圆弧。参见图6-5-d所示。

? 绘制扇形

BOOL Pie( int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4 );

BOOL Pie( LPCRECT lpRect, POINT ptStart, POINT ptEnd ); //参数目的一致 此函数的功能为绘制一个扇形。参数的意义与Arc相同。 ?

绘制一段弦

BOOL Chord( int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4 );

BOOL Chord( LPCRECT lpRect, POINT ptStart, POINT ptEnd ); //参数目的一致 此函数的功能为绘制一个弦。参数的意义与Arc相同。 ? 绘制多边形

BOOL PolyPolygon( LPPOINT lpPoints, LPINT lpPolyCounts, int nCount );

此函数是根据二个以上的顶点,绘制一个多边形,其中point[]是POINT类型的数组,可以存储一系列点的坐标,参数n是顶点的个数。 5. 如何使用画笔类CPen?

答:画笔对象保存了绘制图形时线条的类型、宽度和颜色参数,CDC对象通过选择画笔对象,使用某个画笔。

(1)使用库存画笔

库存画笔是MFC预设好参数的画笔对象,不需要定义和设置,可以直接使用。CDC类中选用库存画笔的成员函数为:

virtual CGdiObject* SelectStockObject( int nIndex ); 其中nMode是库存画笔的类型,可用取值如下: BLACK_PEN:黑笔 WHITE_PEN:白笔 NULL_PEN:空笔

例如,在OnDraw函数中执行: pDC->SelectStockObject(BLACK_PEN);

pDC->Ellipse(10,10,100,100);

以上二行实现的是,pDC选用了一个黑色的画笔。

库存画笔的样式很少,远不能满足应用,因此多数情况下需要自定义画笔对象。

(2)使用自定义对象

画笔类是CPen类,定义画笔对象,设置参数,然后应用于DC对象。 ?

创建画笔

CPen( );

CPen( int nPenStyle, int nWidth, COLORREF crColor );

BOOL CreatePen( int nPenStyle, int nWidth, COLORREF crColor ); 可以使用第二个函数直接创建一种画笔,也可以先使用第一个函数先创建画笔对象,在设置画笔样式。笔模式有若干种,所表示的是线条的形状,其可用值均由系统定义好,用符号常量来表示,编程时选择所需要的一种。

nPenStyle具体包括:PS_SOLID实线;PS_DASH虚线; nWidth表示宽度;

crColor表示笔颜色,一个COLORREF类型的数值,可以用RGB方式进行合成表示。 与CreatePen函数相对应的函数为DeleteObject,此函数清除前次所做的画笔参数设置,以便设置新的参数。

? 应用画笔

使用CDC类中的SelectObject函数即可将创建的新画笔选入DC中,例如,在OnDraw函数中执行如下代码:

CPen pen ;

pen.CreatePen(PS_SOLID,4,RGB(255,0,0)); pDC->SelectObject(&pen);

pDC->Ellipse(10,10,100,100); //pDC选了一个红色、宽度为4、实线笔画园 6. 如何使用画刷类CBrush?

答:画刷是在画封闭图形时用来填充的颜色,例如画圆形或方形时系统会用当前的刷子对内部进行填充。

(1)使用库存的画刷

和画笔类似,可以使用SelectStockObject (nMode)函数选择库存画刷。nMode的值可以有:BLACK_BRUSH、WHITE_ BRUSH、GRAY_ BRUSH和NULL_ BRUSH等

(2)使用自定义画刷

? 创建画刷涉及的函数有:

CBrush( );

CBrush( COLORREF crColor );

CBrush( int nIndex, COLORREF crColor ); CBrush( CBitmap* pBitmap );

BOOL CreateSolidBrush( COLORREF crColor );

BOOL CreateHatchBrush( int nIndex, COLORREF crColor );

函数中的参数意义:crColor为画刷颜色。nIndex代表网格画刷中的网格类型,包括HS_BDIAGONAL、HS_CROSS、HS_DIAGCROSS、HS_FDIAGONAL、HS_HORIZONTAL和HS_VERTICAL。pBitmap代表创建位图画刷的位图对象。

与CreateSolidBrush及CreateHatchBrush函数相对应的函数为DeleteObject,此函数清除前次所做的画刷参数设置,以便设置新的参数。 ? 应用画刷:

使用CDC类中的SelectObject函数将创建的画刷选入DC中。例如,在OnDraw函数中执行如下代码:

CBrush bsh ;

bsh.CreateHatchBrush (HS_CROSS,RGB(255,0,0)); pDC->SelectObject(&bsh);

pDC->Ellipse(10,10,100,100);

以上代码pDC选用了一个红色的、十字网格的刷子画椭圆。 7. 编程实现在视图上输出各种基本的图形。 答:参考实验六

8. 编程实现在视图上绘制红、黄、蓝组成的三色交通灯。 答:参考第一章交通灯实例

9. 编程实现,绘制一个由浅红色到深红色的渐变矩形。 答:参考例题6-7

10. 编程实现,尺寸由小到大逐渐变化的文字动画显示。 答:略

第7章 文档与视图

1. 在应用程序中,文档有什么作用?如何声明一个文档类?

答:在文档视图结构里,文档是一个应用程序数据基本元素的集合,它构成应用程序所使用的数据单元;另外它还提供了管理和维护数据的手段。文档是一种数据源,数据源有很多种,最常见的是磁盘文件,但它不必是一个磁盘文件,文档的数据源也可以来自串行口、网络或摄像机输入信号等。文档对象负责来自所有数据源的数据的管理。

MFC提供了一个文档模板类CDocTemplate支持文档模板。文档模板类是一个抽象的基类,它定义了文档模板的基本处理函数接口。由于它是一个抽象基类,因此不能直接用它来定义对象而必需用它的派生类。对一个单文档界面程序,使用CSingleDocTemplate(单文档模板类),而对于一个多文档界面程序,使用CMultipleDocTemplate。如:


课后习题答案(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:宪法知识竞赛题(正式稿不含答案)

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

马上注册会员

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