windows高级编程技术习题1

windows高级编程技术习题1
windows高级编程技术习题1

(1) 项目工作区一般在集成开发环境的左侧。它展示一个工程的几个方面,它们分别是类视图、资源视图和文件视图。

(2) 编译程序的快捷键是Ctrl + F7,链接的快捷键是F7 ,运行程序的快捷键是Ctrl + F5。

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

(4) 应用程序向导AppWizard的作用是帮助用户一步步生成一个新的应用程序,并且自动生成应用程序所需的基本代码,通过ClassWizard可以增加消息映射和成员变量。

(5) 菜单选择可以通过两种方法来进行:一种是;另一种是。

(6) 编译微型条工具栏最右边按钮的功能是设置断点。

2. 选择题(1) 工程文件的扩展名是 b 。A. .exe B. .dsp C. .dsw D. .cpp

(2) 设置断点的默认方式是 d 。

A. Location

B. Data

C. Message

D. Breakpoints

(3) 用应用程序向导AppWizard创建的C++源文件,应选择 a 选项卡。

A. Files

B. Projects

C. Workspaces

D. Other Documents

(4) Standard工具栏中最左边按钮与 c 菜单命令的功能一样。

A. New

B. New File

C. New Text File

D. New Workspace

3. 判断题

(1) 用快捷键F9既可设置断点,又可取消断点。( T )

(2) 用户可以通过Tools | Customize菜单命令设置集成开发环境的工具栏。( T )

(3) 通过应用程序向导AppWizard建立的程序不能被立即执行。( T )

(4) 调式程序时,会同时出现Variable窗口和Watch窗口。( T )

4. 简答题

(1) 什么是工程? 它是由什么组成的?

在Visual C++集成开发环境中,把实现程序设计功能的一组相互关联的C++源文件、资源文件以及支撑这些文件的类的集合称为一个工程。

(2) 解释项目工作区中各个视图的功能。

ClassView用于显示工程中定义的类;ResourceView 用于显示工程中所包含的资源文件;FileView 用于显示所创建的工程。

(3) WizardBar工具栏的作用是什么?

WizardBar工具栏可以对ClassView和ClassWizard中的命令进行快速访问,使类和成员函数的操作更加方便,WizardBar会自动跟踪用户程序的上下文

(4) 如何使用Debug调试程序?

调试过程开始后,Debug主菜单取代Build主菜单出现在菜单栏中,同时出现一个可停靠的调试工具栏和一些调试窗口如Variable窗口。

1. 填空题(1) 要想使用用户自定义的图标,必须经历、和3个过程。

(4) 应用程序利用关键字__ hBitmap _____定义位图句柄, 调用函数____ LoadBitmap() ___加载位图

并获得位图的句柄,还可以通过调用函数__ CreateBitmap () ___创建位图,调用函数__SelectObject___将位图选入内存设备环境中,调用函数__ BitBlt __在指定的设备上输出内存中的位图。应用程序在输出位图

之前,通常需要调用函数__ GetBitmap ___获取位图的尺寸。

2. 选择题(1) 定义图标的关键字是____D___。A. ICON B. CreateIcon C. LOADICON D. Icon

(2) 定义位图句柄的关键字是____A___。

A. hBitmap

B. HBITMAP

C. CreateBitmap

D. LOADBITMAP

(3) 调用函数____B____可以加载位图资源,调用函数__D_____可以将位图直接从内存设备环境复制到设备环境中。

A. LOADBITMAP

B. LoadBitmap

C. CreateBitmap

D. BitBlt

(4) 应用程序在输出位图之前,通常需要调用函数____D____获取位图的尺寸。该函数的作用是获取指定对象的信息并将其复制到指定的缓冲区中。

A. SetObject

B. GetObject

C. LoadBitmap

D. GetBitmap

3. 判断题(1) 位图的背景色是透明的。( F )

(2) Windows支持两类位图,一种是设备无关位图(DDB),另一种是设备相关位图(DIB)。( T )

(3) 在Windows应用程序中图标也是位图。( T )

(4) 在使用位图资源之前,需调用函数SelectObject将位图选入内存设备环境中。( T )

4. 简答题

(1) 应用程序怎样应用自定义的图标资源?

(2) 应用程序如何使用位图资源?

1.填空题

(1) Windows引入GDI的主要目的是为了实现设备无关性。

(2) 与DOS字符方式下的输出不同,Windows是按图形方式方式输出的。

(3) 为了体现Windows的设备无关性,应用程序的输出面向一个称之为设备环境(Device Context,DC)的虚拟逻辑设备。

(4) 在一个MFC应用程序中获得DC的方法主要有两种:一种是接受一个参数为指向CDC对象的指针;另一种是声明一个MFC设备环境类的对象,并使用this 指针为该对象赋值。

(5) Windows用COLORREF 类型的数据存放颜色,它实际上是一个32 位整数。它采用3个参数表示红、绿、蓝分量值,这3个值的取值范围为0—255 。

(6) 库存对象是由操作系统维护的用于绘制屏幕的常用对象,包括库存画笔画刷等。

(7) 可以利用CGdiObject类的成员函数SelectStockObject( ) 将GDI对象设置成指定的库存对象。

(8) 创建画笔后必须调用CDC类的成员函数SelectOject( )将创建的画笔选入当前设备环境。

(9) 在默认情况下输出文本时,字体颜色是黑色,背景颜色是白色,背景模式为

不透明模式。

(10) 创建画笔的方法有两种,一种是定义画笔对象时直接创建,另一种是先定义一个没有初始化的画笔对象,再调用CreatePen( )函数创建指定画笔。

2.选择题(1) 下面( a )不是MFC设备环境类CDC类的派生类。

A.GDI 类 B.CPaintDC类C.CClientDC类D.CWindowDC类

(2) 下面( c )不是GDI对象。A.CFont类B.CPalette类C.CClientDC类 D.CBitmap类

(3) 下列描述中,( c )是错误的。

A.CreatePointFont( )是CFont类提供的创建函数

B.可使用SetTextAlign( )函数改变文本对齐方式

C.使用函数GetTextMetrics( )可以获得所选字体中指定字符串的宽度和高度

D.可使用DrawText( )函数在给定的矩形区域内输出文本

(4) 下列( d )不是MFC CDC类中常用的文本输出函数。

A.TextOut( ) B.DrawText( ) C.ExtTextOut( ) D.Ext DrawText( )

3.判断题(1) CDC类是MFC设备环境类的基类。( T )

(2) CClientDC代表整个窗口的设备环境。( T )

(3) Cpen、CFont是GDI对象。( T )

(4) 深绿色RGB值为(0,128,0) ( T )

(5) 删除CPen对象可调用CPen对象的DeleteObject( )函数。( T )

(6) 创建阴影画刷函数是CreateHatchBrush( )。( T )

(7) 默认的对齐方式是TA_LEFT| TA_BOTTOM。( F )

(8) DDB又称GDI位图,它依赖于具体设备,只能存在于内存中。( T )

4.简答题(1) GDI创建哪几种类型的图形输出?矢量图形、光栅图形和文本。

(2) 什么是设备环境?它的主要功能有哪些?

设备环境DC,也称设备描述表或设备上下文。它是由GDI创建、用来代表设备连接的数据结构。

功能:1) 允许应用程序使用一个输出设备。

2) 提供Windows应用程序、设备驱动和输出设备之间的连接。

3) 保存当前信息,例如当前的画笔、画刷、字体和位图等图形对象及其属性,以及颜色和背景等影响图形输出的绘图模式。

4) 保存窗口剪切区域(Clipping Region),限制程序输出到输出设备中窗口覆盖的区域。

(3) 什么是GDI,它有什么功能?MFC将GDI函数封装在哪个类中?

图形设备接口,GDI作为Windows的重要组成部分,负责管理用户绘图操作时功能的转换

CPen、CBrush、CFont、CBitmap和CPalette

(4) 请叙述设备无关性的含义,实现设备无关性需要哪几个环节?

避免了用户对硬件直接进行操作。

(5) MFC提供了哪几种设备环境类?它们各自有什么用途?

CDC、CPaintDC、CClientDC、CWindowDC和CMetaFileDC

(6) 简述传统的SDK获取设备环境的方法。

在WM_PAINT消息处理函数中通过调用API函数BeginPaint( )获取设备环境,在消息处理函数返回前调用API函数EndPaint( )释放设备环境。如果绘图操作不是在WM_PAINT消息处理函数中,需要通过调用API函数GetDC( )获取设备环境,调用API函数ReleaseDC( )释放设备环境。

(7) 简述创建和使用自定义画笔的步骤。

(8) 简述采用MFC方法编程时,显示一个DDB位图的步骤。

1. 填空题(1) Windows提供的标准控件有__静态控件___、____按钮控件____、__编辑框控件__、__列表框控件___、___组合框控件_____、____滚动条控件_____和_________________。

(2) 使用滚动条控件一般要用到所在对话框类中的消息___WM_VSCROLL和WM_HSCROLL___。

(3) 按钮控件一般有___按键按钮、单选按钮和复选框__3种类型。

(4) 对话框一般由__对话框模板____和__对话框类______两部分组成。

2. 选择题

(1) 要将模式对话框在屏幕上显示需要用到函数( b )。

A. Create

B. DoModal

C. OnOK

D. 构造函数

(2) 通常将对话框的初始化工作在( c )函数中进行。

A. OnOK

B. OnCancel

C. OnInitDialog

D. DoModal

(3) 如果在输入时采用选择的方法进行,( d )控件不能采用。

A. 列表框控件

B. 单选按钮

C. 复选框

D. 编辑框

(4) 要打开文件,使用通用对话框,应该使用( a )通用对话框类。

A. CFileDialog

B. CColorDialog

C. CprintDialog

3. 简答题

(1) 试简述组合框控件和列表框控件的区别。

列表框中可列出用户所需的选项,用户不必记住每一项,也不用一字一字输入。但是当用户需要的项目未在列表框中列出时,列表框就无能为力了。而编辑框控件则可以根据用户需求进行灵活输入,但需要记忆内容,并且需要逐字输入。如果将这两个控件结合起来使用,正常情况下用户可方便地在列表框中进行选择,如果没有所需项,则使用编辑框进行输入,从而出现了组合框这种控件。它结合列表框和编辑框控件的特点,取二者之长,互相弥补其短,从而完成复杂的输入功能。

(2) 对话框有几种类型,试简述其区别。

1)模式(Modal)对话框;

在对话框关闭之前,用户无法在同一应用程序的其他地方进行工作,例如打开文件对话框。

2)无模式(Modaless)对话框。

在它仍然保留在屏幕的同时,用户还可以在同一应用程序的其他窗口中进行工作,例如查找对话框。

(3) 试简述创建一个模式对话框的步骤。

填空题(1) 快捷键或菜单及相关资源的资源符号的前缀是IDR_。

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

(3) 常见的菜单类型有主菜单、弹出菜单和快捷菜单3种。

(4) 基于对话框的应用程序在运行时没有菜单栏。

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

(6) 调用CToolBar类的成员函数CToolBar::Create( ) 创建并初始化工具栏窗口对象。

(7) 设置工具栏停靠特性,需要调用EnableDocking( ) 函数。

(8) 状态栏实际上是一个窗口,一般分为几个窗格,用来显示不同的信息。

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

(10) 状态栏显示的内容由数组indicators 决定,需要在状态栏中显示各窗格的标识符、位置以及个数。

2. 选择题(1) Windows资源提供的资源编辑器不能编辑( c )。

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

(2) 在编辑某菜单项时,若要指明该菜单项是一个弹出式子菜单,必须选择属性对话框中的( b )。

A.Separator B.Pop-up C.Inactive D.Grayed

(3) 要使鼠标箭头在按钮上暂停时能显示工具栏按钮提示,必须设置工具栏的风格为( b )。

A.CBRS_TOOLTIPS B.CBRS_FLYBY

C.CBRS_NOALIGN D.WS_VISIBLE

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

A.MainFrm.cpp B.MainFrm.h C.stdAfx.cpp D.stdAfx.h

3. 判断题

(1) 在同一项目中,Visual C++在内部用来标识资源的资源符号不能重复。( T )

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

(3) 给菜单项定义快捷键,只需在菜单项属性设置对话框的Caption文本框中说明即可。

( T )

(4) 弹出快捷菜单一般出现在鼠标箭头的位置。( )

(5) UPDA TE_COMMAND是更新命令用户接口消息。UPDATE_COMMAND_UI

( F )

(6) 工具栏停靠特性只能设置一次。( T )

(7) 状态栏的功能由CStatusBar类实现。( T )

(8) CMenu类、CToolBar类和CStatusBar类的根基类是相同的。( T )

4. 简答题

(1) 请叙述菜单设计一般需要经过的步骤。

(2) 为应用程序创建快捷菜单主要有哪些方法?

使用Component Gallery创建快捷菜单

使用TrackPopupMenu( )函数创建快捷菜单

(3) 如何动态创建菜单?

1)利用CreateMenu( )函数创建一个空的弹出式菜单,该函数的原型为:

HMENU CreateMenu()

2)调用AppendMenu( )或InsertMenu( )函数在菜单中加入菜单项。

3)调用函数SetMenu( )加载动态菜单。

(4) 创建工具栏的基本步骤有哪些?

创建工具栏窗口, 装载工具栏资源, 设置工具栏风格, 设置工具栏停靠特性, 设置工具栏的初始停靠位置, 移动工具栏, 工具栏隐显控制

(5) 请叙述MFC创建状态栏所做的工作。

1. 简答题

(1) 文档和视图框架结构中的核心成员有哪几个?

CDocument类、CView类、框架CFrameWnd类、CDocTemplate类和应用CWinApp类。

(2) 文档成员UpdateAllViews有什么功能?如何通知同一文档的所有视图进行更新?

该函数把文档被修改的信息通知给每个视图,通常在用户已经通过视图改变文档之后,从视图类中调用此函数,来获取文档被修改的信息。

(3) 自定义类如何实现支持序列化?

(4) 文档类如何访问视图类?框架类如何访问文档类?

GetFirstViewPosition()和GetNextView()

GetActiveDocument()

(5) 如何实现动态切分窗口?如何实现静态切分窗口?

CSplitterWnd类的成员函数Create是动态拆分窗口的关键,AppWizard也支持动态拆分窗口。

静态拆分窗口的产生是靠CSplitterWnd::CreateStatic( )函数和CSplitterWnd::CreateView( )函数来实现的。

(6) 简述如何实现多档多视。

1. 简答题

(1) 什么是显式链接与隐式链接?

所谓的隐式链接是指在应用程序中不需指明DLL文件的实际存储路径,程序员不需关心DLL文件的实际装载。显式链接时,使用DLL 的可执行程序在运行时通过函数调用来显示加载或卸载DLL,并通过函数指针来调用DLL 的导出函数。

(2) 为什么加extern“C”修饰符?

extern "C"是使C++能够调用C写作的库文件的一个手段,如果要对编译器提示使用C的方式来处理函数的话,那么就要使用extern "C"来说明。

(3) 简述动态链接时Windows的搜索路径。

包含EXE 文件的目录、进程的当前目录、Windows 系统目录、环境变量列出的目录。

(4) 什么是显式加载和卸载动态链接库?

随用随加载,而不是让程序启动时自动把所有的动态链接库全部加载。

FreeLibrary函数帮助卸载动态链接库

1. 填空题(1) winsock有两种类型,它们是流套接字和数据报套接字。

(2) 创建一个新进程需要使用函数__CreatProcess_______。

(3) 终止其他线程需要使用函数___ExitThread_________。

(4) 在使用流式套接字建立服务器应用程序时,需要使用函数socket、___bind__、listen、___accept____及send和recv等。

2. 选择题

(1) 下列( )函数是使用流式套接字创建客户应用程序所不需要的。

A. connect( )

B. bind( )

C. recv( )

D. socket( )

(2) 下列( )方法不是创建新线程的方法。

A. CreateThread

B. AfxBeginThread

C. CreateProcess

(3) http协议使用的端口是( )A. 80 B. 21 C. 23 D. 25

3. 简答题

(1) 简述流式套接字与数据报套接字的区别。

流套接字提供双向的、有序的、无重复并且无记录边界的数据流服务,它适用于处理大量数据。流套接字是面向连接的,通信双方进行数据交换之前,必须建立一条路径,类似于打电话,首先要双方能连接,才能继续通话。

数据报套接字支持双向的数据流,但并不保证数据传输的可行性、有序性和无重复性。也就是说,一个从数据报套接字接收信息的进程有可能被发现信息重复,或者和发出时的顺序不同的情况。数据报套接字是无连接的,它不保证接收端是否正在侦听,类似于邮政服务。

(2) 简述ExitProcess和TerminateProcess的异同。

可以调用ExitThread函数或TerminateThread函数终止线程的执行。与进程的终止相似,一般情况下使用ExitThread函数来终止线程,只有在不得已的情况下才使用TerminateThread来终止线程。

(3) 简述进程的优先级,在VC中都用什么来表示。

每个进程都有相应的优先级,优先级决定它何时运行和接收多少CPU 时间。

实时(Realtime)、高(High)、变通(Normal)和空闲(Idle),默认情况下进程的优先级为普通优先级。

相关主题
相关文档
最新文档