2024年3月21日发(作者:)

VC习题1

下列对于WinMain函数的描述中,错误的是( )。

A)WinMain函数的名称是固定的

B)WinMain函数是Windows程序的入口点

C)WinMain函数不能有参数

D)窗口函数与WinMain的关联是通过窗口类的注册实现的

以下四个特性中哪一个不属于面向对象的三大特性( )。

A)封装性 B)多态性 C)抽象性 D)继承性

下列关键字中哪一个不是用于类的访问控制的( )。

A)public B)friend C)private D)protected

下面四个MFC类中哪一个是管理MFC应用程序的( )。

A)CWinApp B)CMainFrame C)CDocument D)CView

下列类中不属于MFC框架基本类的是( )。

A)CWinApp B)CFrameWnd C)CView D)CObject

传统的软件开发主要采用 过程 驱动的方法,而Windows程序的开发使用 消息

驱动模型,该模型靠事件机制来实现其功能。

主框架类 是应用程序中负责控制菜单、工具栏和状态栏等界面元素的最主要的

类。命令视图类

VC习题2

VC开发环境可以生成的基于MFC appwizard的应用程序类型有单文档/视图结

构、多文档/视图结构和基本对话框。

包含类定义的文件称为 头文件 ,包含类中成员函数实现代码的文件称为 源文

件 ,包含资源信息的文件称为 资源文件 。

ResourceView的主要功是 编辑当前工程中的资源 。

应用程序向导的主要功能是 帮助生产应用程序 。

类向导的主要功能是 管理各个类中的消息 。

项目工作区窗口一般在开发环境的左侧,它包含工程的多个方面,分别是

classview 、 fileview 和 resource view 。

项目工作区文件的扩展名为 .dsw 。

VC习题3

下列选项中哪一个不是命令消息的触发途径:单击对话框中的按钮。

文档类文档模板类框架窗口类应用程序类

Windows应用程序的消息来源主要包括 输入消息 、 控制消息 和 系统消息 、

用户消息 。

发送消息可以采用的两个函数是 postmessage 和 sendmessage 。

CCmdUI类的主要功能是 主要用来更新命令用户接口的状态。如子菜单。工具栏上

的按钮等 。

代码ON_UPDATE_COMMAND_UI(ID_TEST, OnUpdateTest)的功能是:

映射标记号ID为ID_TEST的CN_UPDATE_COMMAND_UI消息到OnUpdateTest函数上。

功能是:将对ID_TEST的更新命令接口消息的处理映射到OnUpdateTest函数上。

VC习题4

CString类的功能是 处理字符串 ,其Format函数的功能是 格式化字符串 。

CTime类的功能是 处理日期时间 ,其Format函数的功能是 将时间对象格式化为

字符串 。

MessageBox函数的第一个参数表示 消息文字 ,第二个参数表示 标题文字 ,第

三个参数表示 图标与按钮组合 。

VC习题5

在Windows中,按下一个字符键,会依次触发 WM_KEYDOWN 、WM_CHAR和

WM_KEYUP 三个消息。

当Windows窗口内部需要重新绘制时,会得到一个 WM PAINT 消息,当释放鼠标

右键时,会得到一个 WM_RBUTTONUP 消息。

WM_LBUTTONDOWN表示 鼠标左键按下消息 ,WM_MOUSEMOVE表示 鼠标移动

消息 。

OnMouseMove(UINT nFlag,CPoint point)消息处理函数中的point表示 鼠标移动

到的坐标位置 。

OnChar(UINT nChar,UINT nRepCnt,UINT nFlags)消息处理函数中的nChar表示 当前

按下的字符键 。

VC习题6

Visual C++提供的资源编辑器不能编辑下列哪个资源( C )。

A)菜单 B)工具栏 C)状态栏 D)位图

MFC应用程序框架为状态栏定义的静态数组indicators放在哪个文件中( A )。

A) B) C) D)

deletemenu 用来删除某个菜单项,如果被删除的菜单项有相关的弹出菜单,则该

弹出菜单的句柄也要被删除并释放内存。

appendmenu 用来追加某个菜单项, trackpopupmenu 用来在一个POINT结构所

指定的位置显示一个上下文菜单。

工具栏上的按钮能触发的消息 command 和 update_command_ui 。

状态栏上的窗格可以分为 信息行窗格 和 指示器窗格 两类。

getsubmenu 可以得到指向某列菜单的指针。

用户可以通过项目工作区窗口的 资源 视图来查看资源。

在MFC中,工具栏的功能由 CToolBar 类实现。

在MFC中,状态栏的功能由 CStatusBar 类实现。

VC习题7

下列函数中,可以实现画圆功能的是( )。

A)Rectangle B)Ellipse C)Circle D)Line

CDC类为用户提供了下列四个文本输出函数,其中,能使输出的文本呈现一个多列

列表格式的是( )。

A)TextOut B)ExtTextOut C)TabbedTextOut D)DrawText

下列类中哪一个不是GDI对象类( )。

A)CPen B)CWnd C)CBrush D)CRgn

下面哪个不是CDC类的派生类( )。

A)GDI类 )CPaintDC类 C)CClientDC类 D)CWindowDC类

CDC类中实现绘制矩形功能的函数是 Rectangle ,实现绘制椭圆功能的函数是

Ellipse ,改变文本颜色的函数是 SetTextColor ,改变文本背景颜色的函数是

SetBkcolor ,在指定位置显示字符串的函数是 Textout 。

MFC绘图要素主要分为两大类,即 设备场景 和 基本绘图工具 。

Windows引入图形设备接口的目的是 屏蔽底层硬件的绘图细节,使编程更加容

易 。

Windows用 COLORREF 类型的数据存放颜色,它采用3个参数表示红、绿、蓝三

元基本色的分量值,这3个值的取值范围为 0~255 。

创建画笔后,必须调用CDC类的成员函数 SelectObject 将新画笔选进当前的绘图

环境。

VC习题8

MFC中的CDialog类封装了对话框的显示、关闭等常用功能,其中,用来显示模态

对话框的是函数( )。

A)CreateWindow B)ShowWindow C)DoModal D)UpdateWindow

对话框创建后,还没显示前就会触发( )消息。

A)WM_PAINT B)WM_INITDIALOG C)WM_CREATE D)WM_SIZE

通用对话框中,属于非模态对话框的是( )。

A)文件对话框 B)颜色对话框 C)打印对话框 D)查找对话框

要打开文件,应该使用哪个通用对话框( )。

A)CFileDialog B)CColorDialog C)CPrintDialog D)CFontDialog

通常将对话框的初始化工作放在下列哪个函数中进行( )。

A)OnOK B)OnCancel C)OnInitDialog D)DoModal

所有通用对话框都是由公共基类 CCommonDialog 派生出来的, CColorDialog实现

了标准的颜色对话框。

MFC中,与属性对话框相关的两个类是 CPropertyPage 和 CPropertySheet 。

VC习题9

下列控件中不属于按钮的是( )。

A)下压按钮 B)列表框 C)单选框 D)复选框

如果在输入时采用选择的方法进行,以下哪个控件不能实现( )。

A)列表框控件 B)单选按钮 C)复选框 D)编辑框

下面对UpdateData函数的描述中错误的是( )。

A)CWnd::UpdateData函数实现对控件中数值的输入和读取

B)UpdateData只有一个为TRUE或FALSE的参数

C)当调用UpdateData(FALSE)时,数据由控件关联的变量向控件传输

D)当调用UpdateData(TRUE)时,数据由控件关联的变量向控件传输

有两种方法可以创建静态文本控件,一种是 使用资源编辑器添加 ,另一种是 使

用create函数动态创建 。

ShowWindow函数的功能是 显示或隐藏窗口 。

使用滚动条控件一般要用到控件所在对话框类的 WM_HSCROLL 和 WM_VSCROLL

消息。

判断一组单选按钮中哪一个被选中了,要应用 GetCheckedRadioButton 函数。

GetScrollpos 函数可以得到滚动条的滑块位置, SetScrollpos 函数可以设置滚动

条的滑块位置, Getpos 可以得到滑动条的当前位置, Setpos 函数可以设置滑动

条的当前位置。

滚动条有 垂直滚动条 和 水平滚动条 两种,它们触发的滚动消息分别是

WM_VSCROLL 和 WM_HSCROLL 。

CListBox类中的 InsertString 函数可以为列表框插入一个新的字符串,

ResetContent 函数可以清空所有列表项内容。

GetCheck 函数可以得到单选框的选中状态。

当程序需要与界面交换数据时,应该调用 UpdataData 函数。

VC习题10

有两种类型的文档/视结构程序: 单文档 应用程序和 多文档 应用程序。

GetDocument 是视图类的成员函数,调用它可以得到指向与之关联的文档对象的

指针,文档的串行化在 Serialize 函数中进行。

在程序的任何一个类中访问应用程序类的函数为 AfxGetApp ,在程序的任何一个

类中访问框架窗口类的函数为 AfxGetMainWnd() 。

基于单文档/视图结构的框架程序中包含的类有 CWinApp 、 CFrameWnd 、

CDocument 和 CView 。

VC习题11

ODBC体系结构中不包括下列哪个组件( )。

A)ODBC管理器 B)数据源 C)驱动程序管理器 D)数据库管理系统DBMS

记录集可以分为 Dynaset(动态集) 和 Snapshot(快照) 两种。

MFC的ODBC类主要包括5个类,分别是 CDatabase 、 CRecordset 、

CRecordView 、 CDBException 和 CFieldExchange 。

可以利用CRecordset类的 AddNew 函数添加一条新记录,利用CRecordset类的

MoveFirst 函数将记录指针移动到第一条记录上,利用CRecordset类的 Update 函

数实现数据库记录的保存。

VC习题12

1、下列说法中错误的是(B)

A) 一个windows应用程序通常有许多源代码文件以及菜单等资源文件,这些文件

都将纳入应用程序的项目中,通过对项目工作区的操作,可以编辑这些文件。项目

工作区可以管理多个项目。

B) 控制台应用程序是指那些需要与传统的dos操作系统保持兼容,同时又需要为

用户提供完善界面的程序。

C) 是Visual C++为每个项目配置的用来预编译的文件。

D) Window总是要求每个应用程序都要有WinMain函数。

2、下列说法中错误的是(C)

A) 在文档/视图结构中,视图可以看作一个窗口,能将文档的某个局部显示出来。

B) 视图类的OnDraw函数是个非常有用的虚函数,当应用程序中的窗口状态或大

小发生改变时,系统会调用此函数重新绘制文档窗口的客户区。

C) 状态栏中的ID_SEPARATOR表示指示器窗格,是Visual C内部已经定义好的。

D) 主框架是应用程序中负责创建和控制菜单、工具栏和状态栏等界面元素的最主

要的类。

3、MFC中的CDialog类封装了用于对话框的显示、关闭等常用的功能函数,其中用

于显示模式对话框的是(C)

a)CreateWindow b)ShowWindow c)DoModal d)UpdateWindow

4、对话框创建后,还没显示前就会发出(B)消息

a)WM_PAINT b)WM_INITDIALOG c)WM_CREATE d)WM_SIZE

5、下列控件不属于按钮的是(A)

a)命令按钮 b)组框 c)单选框 d)复选框

6、通用对话框中,属于非模式对话框的是(D)

a)文件对话框 b)颜色对话框 c)打印对话框 d)查找对话框

7、下列函数中,能为状态栏第二个信息格设定文字的是(A)

a)SetPaneText b)SetWindowText c)SetPaneInfo d)SetText

8、下列函数中,可以实现画圆功能的是(B)

a)Rectangel b)Ellipse c)Circle d)Line

9、下列对UpdateData的描述错误的是(D)

a)CWnd::UpdateData函数实现对控件中数值的输入和读取。

b)UpdateData只有一个为TRUE或FALSE的参数。

c)当调用UpdateData(FALSE)时,数据由控件关联的成员变量向控件传输。

d)当调用UpdateData(TRUE)时,数据由控件关联的成员变量向控件传输。

10、CDC为用户提供了下列四个输出文本的函数,其中能使输出的文本呈现一个多

列列表格式的是(C)

a)TextOut b)ExtTextOut c)TabbedTextOut d)DrawText

简答题:

1、定义和使用消息映射表的步骤 :

① 在头文件的类声明中添加DECLARE_MESSAGE_MAP宏声明消息映射;

② 在类的定义文件(.cpp)定义消息映射表,方法是在 文件的开始处添加

BEIGN_MESSAGE_MAP和END_MESSAGE_MAP 这一对宏,在它们之间放置消息映射

宏,定义并初始化消息映射表,在消息与处理消息的函数之间建立联系;

③ 在类的定义文件(.cpp)中添加消息处理函数。

所谓消息映射,简单地讲,就是让程序员指定要某个MFC类(有消息处理能力

的类)处理某个消息。MFC提供了工具ClassWizard来帮助实现消息映射,在处理消

息的类中添加一些有关消息映射的内容和处理消息的成员函数。程序员将完成消息

处理函数,实现所希望的消息处理能力。

如果派生类要覆盖基类的消息处理函数,就用ClassWizard在派生类中添加一个

消息映射条目,用同样的原型定义一个函数,然后实现该函数。这个函数覆盖派生

类的任何基类的同名处理函数。

2、创建一个完整的窗口需要经过下面四个操作步骤:

设计一个窗口类;

注册窗口类;

创建窗口;

显示及更新窗口。

3、什么是模态对话框

所谓“模态对话框”是指对话框被弹出后用户必须在对话框中作出相应的操作;

在退出对话框之前,会阻止其他应用程序的运行(包括它所在的应用程序)。

4、什么是非模态对话框

所谓“非模态对话框”是指当对话框被弹出后,将一直保留在屏幕上,但不影

响其他应用程序的运行,用户可以继续在对话框所在的应用程序中进行其他操作;

当需要使用对话框时,只需像激活一般窗口一样单击对话框所在的区域即可。例如

在Microsoft Word中的“查找”和“替换”对话框。

5、文档/视图结构的工作机制

视图通过GetDocument成员函数获得指向相关联的文档对象的指针

通过该指针调用文档类的成员函数来从文档中读取数据

视图把数据显示于计算机屏幕上

用户通过与视图的交互来查看数据并对数据进行修改

视图通过相关联的文档类的成员函数将经过修改的数据传递给文档对象

文档对象获得修改过的数据之后,对其进行必要的修改,最后保存到永久介质(如

磁盘文件)中

6、从CDocument类派生新的文档类的一般过程如下:

为每一个文档类型从CDocument类派生一个相应的文档类。

为文档类添加成员变量,这些变量主要用来保存文档的数据,并使其它的对象(如

视图对象)可以访问这些成员变量,从而实现文档和视图的相互搭配使用。

重载Serialize成员函数,实现文档数据的串行化。

7、使用串行化的好处:是不需要重载文件打开、文件保存之类的方法,MFC框架会

自动完成这些任务,并自动调用文档类的Serialize方法来完成串行化过程。

如果文档的抽象数据只有一个字符串,那么你只需要在Serialize中添加相映语

句就可以完成串行化过程。

8、简述在MFC Windows应用程序中使用CBrush对象的基本步骤。

创建画刷(可调用画刷创建函数CreateSolidBrush、CreateHatchBrush)

将画刷选入设备环境(调用SelectObject)

使用该刷子进行绘画

删除画刷

9、简述文档/视图结构中包含的主要的类及各个类之间的相互关系。

包括 CWinApp、 CDocument 、CView、 CDocTemplate 、 CFrameWnd 类

一个 App可以包含多个文档模版( CDocTemplate ),但是 MFC AppWizard (无

论是 SDI 还是 MDI )都只是默认生成一个。但是在实际开发中一个文档模版不够,

需要自己手工添加。这个结构是通过 MFC 中 CWinApp 的成员变量 CDocManager

* m_pDocManager 实现的。

CDocTemplate 拥有 3 个成员变量,分别保存着 Document 、 View 、 Frame

的 CRuntimeClass 指针,另外持有成员变量 m_nIDResource ,用来指定这个

Document 显示时候采用的菜单资源。

一个文档可以有多个视图,由Document中成员变量 CPtrList m_ViewList 维护。

CFrameWnd拥有一个成员变量CView* m_pActiveView 指向当前活动的View。

CView 中拥有一个成员变量CDocument* m_pDocument指向该视图相关的

Document。

10、写出按钮Show和Show the Age响应单击消息的函数OnEnable()、OnShow()

和OnShowage()。函数OnShow()使编辑框IDC_EDIT1和IDC_EDIT2处于显示状

态,函数OnShowage()要能够判断出单选按钮IDC_RADIO1、IDC_RADIO2和

IDC_RADIO3哪个被选中,并将被选中单选按钮的标题添加到组合框IDC_COMBO1中,

设为组合框的默认选项。

CMyDialog::OnEnable()

{

GetDlgItem(IDC_EDIT1)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_EDIT2)->ShowWindow(SW_HIDE);

}

CMyDialog::OnShow()

{

GetDlgItem(IDC_EDIT1)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_EDIT2)->ShowWindow(SW_SHOW);

}

CMyDialog::Onshowage()

{

CString strText;

int i=-1;

i=GetCheckedRadioButton(IDC_RADIO1,IDC_RADIO3);

if(i==IDC_RADIO1)

strText=">20";

else if(i==IDC_RADIO2)

strText="15-20";

else if(i==IDC_RADIO3)

strText="<15";

GetDlgItem(IDC_COMBO1)->SetWindowText(strText);

}

11、下面左图为菜单结构,右图为运行结果,写出弹出菜单的代码。

void CPopupmenuView::OnContextMenu(CWnd* pWnd, CPoint point)

{

CMenu menuPopup ;

if(IDR_MAINFRAME))

(4)->TrackPopupMenu (TPM_LEFTALIGN | TPM_RIGHTBUTTON , , , this);

}

VC习题13

1.将MFC应用程序的命令处理路径补充完整:命令—(

视图类

)—(

文档类

)—文

档模板类—(

框架窗口类

)—应用程序类

2.传统的软件开发主要采用(

过程

)驱动的方法,而WINDOWS程序的开发使用(

)驱动模型,该模型靠(

事件

)机制来实现其功能。

3.(

主框架类

)是应用程序中负责控制菜单、工具栏和状态栏等界面元素的最主要

的类。

++开发环境可以生成的基于MFC AppWizard exe的应用程序类型有(

对话框

)(

文档

/

视图结构

)和(

多文档

/

视图结构

)。

5.包含类定义的文件称为(

头文件

),包含类中成员函数的实现代码的文件称为(

文件

),包含资源信息的文件称为(

资源文件

)。

View的主要功能是(

编辑当前工程中的资源

)。

7.应用程序向导的主要功能是(

帮助生成应用程序

)。

8.导的主要功能是(

管理各个类中的消息

)。

9.工作区窗口一般在开发环境的左侧,它包含工程的多各方面,分别是(ClassView)、

(ResourceView)和(FileView)。

10.项目工作区的文件扩展名为(dsw)。

11. WINDOWS应用程序的消息来源主要包括(

输入消息

)、(

控制消息

)、(

系统

消息

)和(

用户消息

)。

12.发送消息可以采用的两个函数是(PostMessage)和(SendMessage)。

类的主要功能是(

主要用来更新命令用户接口的状态,如子菜单、工具栏上的按钮

)。

14.代码ON_UPDATE_COMMAND_UI(ID_TEST,OnUpdateTest)的主要功能是(

将对

ID_TEST

的更新命令接口消息的处理映射到

OnUpdateTest

函数上

)。

类的功能是(

处理字符串

),其Format函数的功能是(

格式化字符串

)。

类的功能是(

处理日期时间

),其Format函数的功能是(

将时间对象格式化为字符

)。

函数的第一个参数表示(

消息文字

),第二个参数表示(

标题文字

),第三个参数

表示(

图标与按钮组合

).

18.在windows中,按下一个字符键,会依次触发(WM_KEYDOWN)、(WM_CHAR)

和(WM_KEYUP)3个消息

窗口内部需要重新绘制时,会得到一个(WM_PAINT)消息,当释放鼠标右键时,

会得到一个(WM_RBUTTONUP)消息。

表示(

鼠标左键按下消息

),WM_MOUSEMOVE表示(

鼠标移动消息

)。

(UINTnFlag

CPinto point)消息处理函数中的point表示(

鼠标当前坐标

)。

(UNIT nPepCnt nFlags)消息处理函数中的nChar表示(

当前按下的字符键

)。

X1.下列函数中,能为状态栏的第二个窗格设置文字的是(SetPaneText)

++提供的资源编辑器不能编辑下列哪个资源(

状态栏

应用程序框架为状态栏定义的静态数组indicators放在哪个文件中()。

23.(DeleteMenu)用来删除某个菜单项,如果被删除的菜单项有相关的弹出菜单,

则该弹出菜单的句柄也要被删除并释放内存。

24.(AppendMenu)用来追加某个菜单项,(TrackPopupMenu)用来在一个POINT

结构所指定的位置上显示一个上下文菜单。

25.工具栏上的按钮能触发的消息有(COMMAND)和(UPDATE_COMMAND_UI)。

状态栏上的窗格可以分为(

信息行窗格

)和(

指示器窗格

)两类。

26.(GetSubMenu)可以得到指向某列菜单的指针。

27.用户可以通过项目工作区窗口的(

资源

)试图来查看资源。

28.在MFC中,工具栏的功能由(CToolBar)类实现。

29.在MFC中,状态栏的功能由(CStatusBar)类实现。

X4.在下列函数中,可以实现画圆功能的是(Ellipse)。

类为用户提供了下列4个文本输出函数,其中,能使输出文本呈现一个多列列表格

式的是(TabbedTexOut)

X6.下列类中哪一个不是GDI对象类(CWnd)

X7.下面哪一个不是CDC类的派生类(GDI

)。

类实现绘制矩形功能的函数是(Rectangle),实现绘制椭圆功能的函数是(Ellipse)。

改变文本颜色的函数是(SetTextColor),改变文本背景颜色的函数是(SetBkColor),

在指定位置显示字符串的函数是(TextOut)。

绘图要素主要分为两大类,即(

设备场景

)和(

基本绘图工具

)。

引入图形设备接口的目的是(

屏蔽底层硬件的绘图细节,使编程更加容易

)。

用(COLORREF)类型的数据存放颜色,它采用3个参数表示红、绿、蓝三元基本色

的分量值,这3个值的取值范围是(0-255)。

34.创建画笔后,必须调用CDC类的成员函数(SelectObject)将新画笔选进当前的绘

图环境。

中的CDialog类封装了对话框的显示、关闭等常用功能,其中,用来显示模态对话框

的是函数(DoModal)。

X9.对话框创建后,还没显示前就会触发(WM_INITDIALOG)消息。

X10.通用对话框中,属于非模态对话框的是(

查找对话框

)。

X11.要打开文件,应该使用哪个通用对话框(CFileDialog)。

X12.通常将对话框的初始化工作放在下列哪个函数中进行(OnInitDialog)。

35.所有通用对话框都是由公共基类(CCommonDialog)派生出来的,(CColorDialog)

实现了标准的颜色对话框。

中。与属性对话框相关的两个类是(CPropertySheet)和(CPropertyPage)。

X13.下列控件不属于按钮的是(

列表框

)。

X14.如果在输入时采用选择的方法进行,以下哪个控件不能实现(

编辑框

X15.下面对UpdateData的描述中错误的是(

当调用

UpdateData

TRUE

)时,数据由

控件关联的变量向空间传输

)。

37.有两种方法可以创建静态文本控件,一种是(

使用资源编辑器添加

),另一种是

使用

Create

函数动态创建

)。

函数的功能是(

显示或隐藏窗口)