当前位置:文档之家› Windows程序设计课程复习题

Windows程序设计课程复习题

Windows程序设计复习题一选择题1 下列程序设计方法中,()是一种基于对象的程序设计方法。

A: MFC程序设计B: 使用WindowsAPI编程C: 使用VisualBasic语言编程 D: 使用C#程序设计语言编程2 MFC程序框架中,最先执行的函数是()。

A: WinMain函数B: CWinApp类的构造函数C: CWinApp类的InitInstance函数D: Cwnd的OnCreate函数3 CWinApp类中用()成员函数实现了对消息环的封装。

A: InitInstance( ) B: Run()C: OnIdle() D: WndProc()4 消息的4个参数中,表示消息类型的参数是()。

A: HWND hwnd B: messageID C: wParam D: lParam5下列各消息中,与程序的菜单命令、工具栏按钮或对话框按钮相对应的消息是()。

A: WM_CHAR B: WM_COMMAND C: WM_CREATE D: WM_PAINT6 MFC消息映射机制中,下列消息映射表BEGIN_MESSAGE_MAP(CGraphicsView, CScrollView)ON_WM_PAINT()END_MESSAGE_MAP()把WM_PAINT消息映射到()。

A: CGraphicsView类OnPaint函数B: CGraphicsView类OnDraw函数。

C: CScrollView类的OnPaint函数D: CScrollView类的OnDraw成员函数。

7 下列MFC类中,不直接支持消息映射的MFC基类是(),A: CCmdTarget B: CWinAPP C: CWnd D: CMap8 下列集合类中,其内部是使用散列表技术实现的MFC类的是()。

A: CArray B: CList C: CMap D: CPtrList9 下列CWnd类成员函数中,用于任何消息的可覆盖函数是()。

A: OnCommand B: OnNotifyt C: OnUpdate D: WindowProc10 Windows程序中,用于表示通用字符的数据类型是()。

A: char B: unsigned short C: TCHAR D: unsigned char11 下列数据类型中,表示设备上下文句柄的数据类型是()。

A: HWND B: HDC C: HMENU D: HPEN12 下列各个窗口类中,表示各种视图类的基类的MFC类是()。

A: CScrollView B: CTextView C: CRichEditView D: CView13 下列各种窗口对象中,对象最好在栈(Stack)中分配MFC窗口类是()。

A: CToolBar B: CView C: CWnd D: CFrameWnd14下列各宏命令中,应该放在类实现中以支持序列化特性的宏命令是()。

A: IMPLEMENT_DYNAMIC(class_Name)B: IMPLEMENT_DYNCREATE(class_Name)C: IMPLEMENT_SERIAL(class_Name)D: IMPLEMENT_MESSAGE_MAP()15 CRuntimeClass类的操作中,用于从类名字符串获得该类CRunTimeClass对象指针的方法为()。

A: IsDerivedFrom B: FromName C: CreateObject D: GetBaseClass16 各种设备描述表的中,可以使用CreateComPatibleDC函数创建获得的设备描述表类型是()。

A: 显示设备描述表B: 打印设备描述表C: 内存设备描述表D: 信息设备描述表17 CDC类成员函数中,可用于绘制圆角矩形的成员函数是()。

A: LineTo(int x,int y)B: PolyBezierTo( const POINT* lpPoints, int nCount );C: BitBlt( int x, int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, int ySrc, DWORD dwRop );D: BOOL RoundRect( LPCRECT lpRect, POINT point );18 下列映射模式中,以0.01mm为逻辑单位的映射模式为()。

A: MM_LOMETRIC B: MM_HIMETRICC: MM_LOENGLISH D: MM_HIENGLISH19 下列GDI对象中,用于绘制图形内部区域的GDI对象为()A: 画笔B: 画刷C: 字体D: 区域E: 位图F: 调色板20 MFC文档视图框架中,用于规范程序、文档与视图对象之间的对象类是()类。

A: CWinApp B: CDocument C: CView D: CDocTemplate二简答题1 CObject类的三个特性运行时类信息:在运行时确定一个对象是否是一个类或其派生类的实例, CObject成员函数IsKindOf实现这个功能。

动态创建:CRuntimeClass类成员函数CreateObject实现这个功能。

序列化:把对象存入文件或从文件中读取对象内容的过程。

用户类通过覆盖Serialize()函数已实现这个功能。

2 简述设计一个支持可序列化类的设计方法?序列化:把对象存入文件或从文件中读取对象内容的过程。

设计可序列化的类的方法:1 定义该类时,使用CObject类或其派生类作为基类2 使用DECLARE_SERIAL(CLASSNMAE) 宏;3 定义默认构造函数;4 在类实现中使用IMPLEMENT_SERIAL(CLASSNAME,BASECLASS)宏;5 覆盖Serialize成员函数3 简述程序设计中为一个窗口创建子窗口的一般步骤和方法。

为一个窗口创建子窗口的一般步骤1 选择一个合适的窗口类作为基类(CWnd类或其派生类),定义一个窗口类2 以堆方式在窗口类中添加一个或若干个子窗口类型的成员变量。

3 重载OnCreate成员函数,在成员函数中调用这些子窗口对象的Create方法,创建子窗口对象。

4 建立子窗口与父窗口之间的消息映射。

4 简述MFC中有哪些设备描述表类,它们各有哪些特点。

MFC中定义了如下设备描述表类CDC:各种设备描述表类的基类,封装了设备描述表的属性和方法,提供了一个重要的访问图形设备的接口。

CWindowsDC:窗口区域设备描述表类。

CClientDC:客户区设备描述表类。

CPaintDC:重绘区域设备描述表类。

CMetaFileDC:图元文件设备描述表类。

5简述Windows消息的类型有哪些?各有何特点?窗口消息:窗口事件引发的消息。

如WM_PAINT。

控件通知消息:控件状态改变引发的消息。

命令消息:与一个用户界面对象相联系的消息。

菜单项、命令按钮和快捷键。

自定义消息:用户自定义的消息。

6简述序列化的概念和设计支持序列化类的方法。

序列化:把对象存入文件或从文件中读取对象内容的过程。

设计可序列化的类的方法:1 定义该类时,使用CObject类或其派生类作为基类2 使用DECLARE_SERIAL(CLASSNMAE) 宏;3 定义默认构造函数;4 在类实现中使用IMPLEMENT_SERIAL(CLASSNAME,BASECLASS)宏;5 覆盖Serialize成员函数7 简述设备描述表的概念和主要类型。

设备描述表(Device Context)是一种Windows数据结构,用来描述绘制窗口所需要的信息。

设备描述表主要有如下类型Display显示设备描述表,提供对视频显示设备上的绘制操作的支持Printer打印设备描述表,提供对打印机、绘图仪设备上的绘制操作的支持Memory内存设备描述表,提供对位图操作的支持Information信息设备描述表,提供对操作设备信息获取的支持8 简述GDI的基本概念,简述设备描述表中有哪些GDI对象,这些对象用哪些MFC类表示。

图形设备接口(GDI:Graphics Device Interface):为程序员提供了一个设备无关的设备接口。

Gdi对象分类画笔:绘制线和图形的边框。

画刷:绘制一个图形的内部区域。

字体:定义字体区域:设备上的一个区域,可用于定义裁剪区域等操作位图:一个由颜色位组成的数组,用于表示一个图形调色板:一个颜色列表,用于建立逻辑颜色到设备颜色的映射。

9 简述延迟再现技术的基本概念和与延迟再现技术相关的消息。

延迟再现技术:当向剪贴板传送数据中,并不直接将数据的这份副本传给剪贴板,而是直到有另一个程序需要数据时,程序才提供这份数据。

延迟提出技术的三个消息WM_RENDERFORMA T:当有程序调用GetClipboardData要从剪贴板取数据时,发送的消息,wParam是所要求的数据格式。

WM_DESTROYCLIPBOARD:当有程序调用EmptyClipboard时发送的消息,通知不再需要构造剪贴板数据信息。

WM_RENDERALLFORMA TS :剪贴板拥有者程序要终止执行时将收到的消息。

三程序设计已知:一个用于表示多边形的C++类CPolygon定义如下:class CPolygon{private:CPoint *pPoint;int nCount;int nLineStyle, nWidth;COLOREF crLineColor, crFaceColor;public:CPolygon (CPoint *point,int nCount,int LineStyle, int Width,COLOREF LineColor, COLOREF FaceColor);~ CPolygon (void);};类实现部分CPolygon::CPolygon(CPoint *point,int nCount,int LineStyle, int Width,COLOREF linecolor, COLOREF facecolor){nCount=count;if(nCount>0){pPoint=new CPoint[nCount];for(int i=0;i<nCount;i++)pPoint[i]=point[i];}nLineStyle=LineStyle,nWidth=Width,crLineColor=linecolor,crFaceColor=facecolor;}CPolygon::~ CPolygon (void){if(pPoint) delete pPoint;}1请为其添加必要的成分,使其支持序列化。

相关主题