名词解释
1、事件:可能触发计算机程序做出相应反应的刺激
2、句柄:为了区别于普通变量的标识,Windows把这种复杂对象的标识叫做句柄
3、消息:为了描述事件的各种信息(例如,何时何地发生了何种事件等),Windows定义了一个结构,这个结构就叫做”消息”
4、Windows的API函数:由操作系统提供的,用户可以使用的函数就叫做API
5、Windows SDK程序:使用软件开发工具包开发出来的Windows应用程序
6、资源:资源就是一种可供Windows应用程序利用,可单独编辑,并可动态加载的数据
7、图象设备接口(GDI):Windows把用于改变DC属性的操作,即与绘图相关的操作都制作成函数,这些函数的集合就叫做图形设备接口
8、CDC类:在面向对象程序设计思想中,把DC和GDI函数封装到一起形成CDC类
9、回调函数:系统调用用户编写的函数过程叫做“回调”,所以这种被系统调用的函数也叫做“回调函数”
10、无效显示区:在有效提高拆分窗口显示更新效率的方法中,程序只重绘必须重绘
的区域11、控件:Windows设计了一些具有图形外观的程序实体,这些程序实体在鼠标或键盘的作用下会使程序出现不同的响应,这些可以接收或者产生事件的程序实体就叫做控件
12、类信息表:MFC程序在不同的场合下还经常用到类的其他信息,于是MFC就把这些信息统统都放在映射表项中,并把它叫做类消息表
13、消息循环:while(GetMessage(&msg,NULL,NULL,NULL))
{TranslateMessage(&msg);
DispatchMessage(&msg);}
简答题
1.位图的主要步骤:
1)用位图类来定义一个对象(Bitmap)
2)把位图资源载入位图对象
3)获取位图信息
4) 把位图选入内存设备环境
5)显示位图
2.利用AppWizard生成默认的SDI应用程序My时,向导自动生成的哪四个类?及其相应的功能。
CMainFrame(构建应用程序,显示窗架) CMyApp(整个应用程序) CMyDoc(管理数据) CMyView(显示数据)
3.创建窗口的五个步骤:1)定义窗口 2)注册窗口
3)创建窗口 4)显示窗口 5)消息循环
4.简述从Cdocument类派生自己需要的文档类的一般步骤。
1)以CDocument为基类,派生出一个类 2)在此类中添加数据成员和成员函数 3)在构造函数中进行初始化数据成员 4)在实现部分编写对应的成员函数
5.以鼠标消息WM_MOUSEMOVE为例,写出在MFC编程中,为视图CJKXView手工添加消息响应函数的步骤与相关代码。
1)在类CJKXView的头文件中添加声明消息响应函数,代码为:afx_msg void OnMOUSEMOVE(UINT nflags,CPonint point);
2)在现实文件BEGIN_MESSAGE_MAP与END_MESSAGE_MAP( )之间添加消息映射表ON_WM_MOUSEMOVE( )
3)添加消息响应函数void CMyview::Onmousemove(UINT nflags,CPoint point);
6.在MFC中创建和使用模式对话框的主要步骤有哪些?
1) 使用对话框编辑器创建对话框资源;
2)在对话框资源内创建一个以CDialog为基类派生ddd对话框类
3) 在使用对话框的类中把创建类的dddd.h头文件包含在内
#include“ddd.h\"
4)在使用函数里OnMOUSEMOVE里添加对象{ddd dd;dd DOMOdal();}
创建类的dddd.h头文件包含在内 }
填空题:
1.GetMessage( )被用来从消息队列获取消息,
2.函数TranslateMessage( )用来把键盘消息转换为字符消息,函数DispatchMessage( )用来向系统派送消息。
3.GetDocument( )函数是指向文档对象指针。
4.工作线程和用户界面线程的区别:是否拥有界面。
5.打开数据库的两种方式:dynaset和snapshot(使用CRecordset对象对数据源进
行操作)。
6.UpdateData函数为真时:控件将向对应成员变量写入数据;为假时:控件将从对应成员变量读取数据。
编程题:
1、为学员信息设计一个类CWorker,包含:编号、姓名、出生日期、家庭住址、手机号,并使该类可以实现串行化。请写出可以实现要求的CWorker.h和CWorker.cpp文件的内容。
//CWorker.h
class CWorker :public CObject {
public:
CString Num;// char Num[10];
CString Name;
CTime Birth;
CString Address;
CString Tel;
DECLARE_SERIAL(CWorker) // 使对象可串行化
virtual void Serialize( CArchive & ar ); //重载串行化函数
CWorker(){。。。。。}
};
//CWorker.cpp
MPLEMENT_SERIAL(CWorker,CObject,0)
void CWorker::Serialize(CArchive & ar)
{ CObject::Serialize(ar);
if ( ar.IsStoring() )
{ ar<}else
{ ar>>Num>>Name>> Birth >>Address>>Tel;
}
}附加题(可供参考)
1、Windows API中API的英文全文为 application programming interface ,中文译文是 应用程序接口 。
2、MFC的英文全文为 Microsoft Foundation Classes ,中文译文是 微软基础类库 。
3、GDI的英文全文为 Graphics Device Interface ,中文译文是 图形设备接口 。
4、全局函数 AfxGetApp() 可以得到CWinApp应用类指针。
5、MFC中可自动重绘的绘图代码一般位于项目的 视图 类的 OnDraw() 函数中。
6、在视图中, GetDocument() 函数可得到对应的文档对象指针。
7、在文档中, GetFirstviewPosition() 和 GetNextview() 配合可用来遍历所有和文档关联的视图。
8、在MFC中,用 CRect 类来描述一个矩形区域的大小 。
9、用CArray类创建数组,在使用一个数组之前,使用 SetSize 建立它的大小和为
它分配内存。
10、Afx是Application Framework的简写,以Afx开头的函数都是 全局函数 ,可以在任一个类实现中调用。
11、MFC按线程是否拥有用户界面,把线程分为两种:工作线程和用户界面线程,它们根本的区别是 是否能够拥有消息响应机制 。
12、使用CFile类打开文件的成员函数是 Open() 。
13、在任何时刻设备环境中必须有一支画笔,并且只能有一支。因此在使用自己定义的画笔时,要使用CDC的函数把默认画笔替换为自己定义的画笔,这个函数是 SelectObject() 。
14、MFC的缺省的映射模式是MM_TEXT,对应的单位为 像素 。
15、在视图类中为了访问与视图关联的文档对象中数据,应该先调用 GetDocument() 函数得到 相关联文档对象指针 。
16、用 CArray() 类对象可以创建数组,由于这是一个类模板,因此可以对任意数据类型的数据进行处理。
17、全局函数 GetDocument() 可以得到框架窗口指针。
18、在MFC中,类 CRect 的对象可以描述一个矩形。
19、MFC用 CPoint 类来描述一个点。
20、利用MFC AppWizard可以生成SDI界面、 MDI 界面和基于对话框界面的程序。
21、用MFC编写的Windows应用程序时,线程之间同步的对象有:事件、临界段、互斥体和 信号量 。
22、在框架窗口中, GetActiveDocument() 函数可得到当前活动文档指针, GetActiveView() 函数可得到当前活动视指针。
23、MFC中生成自定义模态对话框时先定义对话框类对象,然后调用 DoModel()成员函数创建模态对话框。
24、MFC的缺省的映射模式是 MM_TEXT,对应的单位为像素。
25、语句CArray m_P; 定义了一个数组对象m_P,数组元素的数据类型为 CRect ,而数组对象成员函数的形参数据类型为 指针 。26、定义一个具有动态创建对象能力类时,必须在该类中定义一个无参的构造函数。
27.MFC对话框类的基类是 CDialog ,用户自定义对话框类都是从它派生而来。
28.Windows系统是一个 消息响应事件驱动 的操作系统,消息是应用程序与操作系统交互的手段。
29.随机访问一个文件的内容需要在打开的文件中重新定位一个指针,可以使用CFile类
的 Seek()成员函数。
30.可以使用UpdateData成员函数激发数据交换。其原型为:BOOL UpdateData( BOOL bSaveAndValidate = TRUE ); 当其参数bSaveAndValidate为TRUE时, 控件把数据传递到与之相关联的数据成员 。
31.可以使用UpdateData成员函数激发数据交换。其原型为:BOOL UpdateData( BOOL bSaveAndValidate = TRUE ); 当参数bSaveAndValidate为FALSE时, 相关联的值传到控件 。
选择填空题(请将所选答案的写在答题框内。每空只有一个正确答案。)
1、所有的文档类都派生于 C ,所有的视图类都派生于 A 。
A.CView B.CWindow C.CDocument D.CFormView
2、在进行绘图时, B 用于指定图形的填充样式, A 用于指定图形的边框样式。
A、画笔 B、画刷 C、区域 D、位图
3、 B 代表窗口客户区的显示设备上下文, C 代表整个窗口的显示设备上下文。
A.CPaintDC B.CClientDC C.CWindowDC D.CMetaFileDC
4、 C 包括键盘和鼠标的输入。这一类消息首先放在系统消息队列中,然后由Windows将它们送入应用程序消息队列中,由程序来处理消息; D 用来与Windows的控制对象,如列表框、按钮、复选框等进行双向通信。当用户在列表框中改动当前选择或改变了复选框的状态时发出此类消息。
A.系统消息 B.用户消息 C.输入消息 D.控制消息
5、消息循环的处理过程如下:
A 函数不断侦察应用程序的消息队列,若队列为空,该函数一直运行,不返回;一旦发现队列不为空,便取出一条消息,把它拷贝到msg结构变量中,同时该函数返回TRUE;得到消息msg后, B 把来自键盘的命令翻译成WM_XXX消息命令形式。 E 函数通知Windows把每个消息分发给相应的窗口函数。应用程序并不直接调用窗口函数,而由Windows根据消息去调用窗口函数,因此,窗口函数经常被称为回调函数。
A.GetMessage( ) B.translateMessage( ) C.PostMessage( )
D.SendMessage( ) E.DispatchMessage( )
6、使用 C 获取的设备上下文在退出时,必须调用ReleaseDC( )释放设备上下文。
A.GetWindowRect( ) B.GetDC( ) C.BeginPaint() D.GetClientRect( )
7、常用的CButton类的成员函数中: A 获得一个按钮控件的选中、选择和聚焦状态; D 得到一个按钮的选中状态; C 设置一个按钮的选中状态。
A.GetState( ) B.SetState( ) C.SetCheck( )
D.GetCheck( ) E.GetButtonStyle( )
8、滚动条类CScrollBar的成员函数规定了滚动条的操作。设置滚动条的范围使用 C 函数,设置滚动块的位置使用 E 函数,获取滚动块的当前位置使用 F 函数。
A.SetPos B.SetRange C.SetScrollRange D.GetPos
E.SetScrollPos F.GetScrollPos G.GetScrollRange
9、列表框ClistBox类的成员函数 A 用来向列表框增加列表项,成员函数 B 用来清除列表项所有项目,成员函数 F 用来返回列表框的列表项的总数。
A.AddString B.DeleteString C.ResetContent
D.FindString E.GetCurSel F.GetCount