《可视化》复习提纲大全(完美).doc

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

题型分布大约为:填空50分+问答30分+编程20分。

其中填空题每题1分。

带冒号的基本为填空题,问答、编程基本为习题
第一章
(P2)
API函数:由操作系统提供的,用户可直接使用的函数。

API函数的3大类型:窗口管理函数、图形设备函数、系统服务函数。

VC编程方式:SDK、MFC
(P3)
句柄:用于区分程序对象和实例的标识。

常用句柄类型:HWND (窗口句柄).HINSTANCE (当前实例句柄)、HCURS0R (光标句柄)、HFONT (字体句柄)、HPEN(画笔句柄)、HBRUSH(画刷句柄)、HDC(图形设备环境句柄)、HBITMAP (位图句柄)、HIC0N(图标句柄)、HMENU (菜单句柄)、HFILE(文件句柄)。

Windows 数据类型:POINT, RECT
(P4-5)
事件:有可能触发计算机程序作出相应反应的刺激。

消息:用于描述事件的各种信息的结构。

消息分类:标准消息、命令消息、通告消息。

(3空填这个)
队列消息、非队列消息。

(2空填这个)
常用windows 消息:WM_LBUTT0ND0WN> WM_LBUTTONUP、WM_RBUTT0ND0WN> WM_RBUTTONUP、WM_LBUTTONDBLCLK> WM_RBUTTONDBLCLK> WM_CHAR, WM_CREATE、WM_CLOSE
消息循环:利用GetMessageO从消息队列中获取消息,并利用GetMessage ()函数的返回值组织一个循环,从而不断从消息队列获取消息,再将消息发送给系统,这个循环叫做消息循环。

消息队列:消息队列是一种以链表式结构组织的一组数据,存放在内核中,是由各进程通过消息队列标识符来引用的一种数据传送方式。

消息队列代码:
(P6~P8)
WinMain函数主要任务:创建应用程序窗口和建立消息循环
WNDCLASS:描述窗口属性的数据结构。

RegitsterClass ():将定义好的窗口属性向系统进行登记。

CreateWindowO :在内存中创建窗口,成功返回窗口句柄。

ShowWindow():将窗口显示在屏幕上。

UpdateWindow ():更新窗口。

消息循环代码:(P8)
while(GetMessage(&msg, NULL, NULL, NULL))
{
TranslateMessage(&msg);
DispathMessage(&msg);
(P19)
窗口显示及更新时产生WM.PAINT消息
(P23)
练习题
1-5什么事事件?
答:有可能触发计算机程序作出相应反应的刺激叫做事件,如:单击左键,计算机产生WM_LBUTTONDOWN 的反应。

1-7什么事消息循环?
答:利用GetMessageO从消息队列中获取消息,并利用GetMessage ()函数的返回值组织一个循环,从而不断从消息队列获取消息,再将消息发送给系统,这个循环叫做消息循环。

1-8 windows应用程序的主函数有哪三个主要任务?
答:注册窗口类型、创建显示窗口和建立消息循环。

第二章
(P33)
虚函数:利用C++的多态性来解决用户的多样性的要求,将基类中的一些成员函数声明为虚函数。

(P43)
消息处理函数:在处理消息时要在类中声明消息的处理函数。

形式:afx_msg void消息处理函数名();
afx_msg是一个宏,表示声明的是一个消息响应函数。

如:实现W_LBUTT0ND0WN,声明afx_msg void OnLButtonDown();
(P45)
消息映射表宏:
//这个宏使用在类的声明中,用来声明消息映射表DECLARE_MESSAGE_MAP;
〃这个宏在使用类声明外,用来定义链表节点和填写链表节点中的数据,其格式为:
BEGIN_MESSAGE_MAP (类名称,基类名称)
BEGIN_MESSAGE_MAP;
〃这个宏使用在宏BEGIN_MESSAGE_MAP()的后面,依次填写类消息映射表中的各个表项ON_XXXX;
//消息处理函数表的结束宏,是表示消息映射表结束的标志
END_MESSAGE_MAP
(P48)
练习题
2-1在窗口类CFrameWnd中需要封装哪些成员?
答:在窗体类CFrameWnd中需要封装窗口句柄hWnd、窗口类型属性的定义、窗口类型的注册、窗口的创建和显示更新窗口。

2-2应用程序类CWinApp应该具备哪些主要功能?
答:注册、创建、显示应用程序的窗口和建立消息循环。

第三章
(P57)
文档视图结构:单文档界面(SDI)、多文档界面(MDI)
单文档(SDI)的类:CDocument、CView、CFrameWnd、CWinApp、CDocTemplate 及其关系
(P62)
CView 中的 2 个函数:GetDocument ()、OnDraw()
GetDocument ()函数是连接CView和CDoc的通道;OnDraw ()函数刷新客户区,其基类调用的是CView: :0nPaint (),OnPaint ()调用的也是CView::OnPaint (),故OnDraw()与OnPaint () 性质相同。

(P70)
CDocument 和CView 的互访
视图对象访问文档对象:GetDocument ():
文档对象访问视图对象:GetFirstViewPositionO ,调用这个函数得到视图类对象清单的第一个对象,返回值为POSITION类型;GetNextView(),函数原型,CView* GetNextView( POSITIONS rPosition)返回值为CView*,同时将rPosition 指向下一个视图的Position,如果没有则为空;UpdateAllView()文档被修改后调用此函数。

(P71)
文档/视图应用程序消息传递顺序(图3-17)
(P77)
类信息表声明宏:DECLARE_DYNCREATE
类信息表实现宏:INPLEMENT_DYNCREATE
(P78)
练习题
3-3简述构成文档/视图结构应用程序框架的四个MFC派生类,并说出它们的功能?
答:假如工程名为MyPrj则MFC AppWizard会自动创建以下四个派生类来构造应用程序的框架。

CFrameWnd类的派生类CMainFrame;应用程序的主框架
CWinApp类的派生类CMyPrjApp;应用程序对象作为上述各类对象的容器,并实现应用程序的初始化和消息循环。

CDocument类的派生类CMyPrjDoc;它是应用程序的数据库,是程序员定义程序数据和对这些数据进行操作的程序函数的地方。

CView类的派生类CMyPrjView.它的作用是为框架窗口提供用户区。

第四章
(P79)
DC:表现为一个图形设备描述表的数据结构,用于描述虚拟图形设备的属性,也叫做图形设备描述环境。

GDI:与绘图有关的函数所构成的集合叫做图形设备接口(graphical device interface, GDI)o
GDI中的绘图工具:(表4-1)
Pen (画笔) 用于绘制线条的对象
Brush (画刷) Font (字体) Bitmap (位图) Palette (调色用于填充图形内颜色和图案的对象用于决定文本字符样式的对象保存位图格式图像的对象绘图时可以使用的颜色集
CDC类(封装DC和GDI函数)
CClientDC:窗口客户区的设备描述环境,但应用在WM_PAINT消息之外的消息
处理函数中
CMetaFileDC:图元文件的设备描述环境,在创建可以回放的图像是使用
CPaintDC:窗口用户区的设备描述环境,在OnDraw ()函数中来处理WM.PAINT消息CWindowDC:在整个窗口内(不只是用户区)绘图的设备描述环境
CView 中的OnDraw (CDC* pDC):
(P82)
CPen:在MFC中画笔是CPen类的对象,它用来在DC上完成绘制线条的任务。

CPen(int style, int width, COLORREF color):
CBrush: CBrush是封装了Windows图形设备接口(GDI)中画刷的MFC类,用于构造CBrush 对象,然后传给需要画刷的CDC成员函数。

CBrush(COLORREF color):和CBrush(int style, COLORREF color):
RGB宏:是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色.
SelectObject ():将新的画图工具选入DC中替换旧的工具,返回旧的画图工具指针。

(P88)
TextOut () : CDC 类中用于显示文字的函数,原型BOOL TextOut (int x, int y, const CString str);
X为文字在客户区显示的水平位置,y为文字显示的垂直位置,str为要显示的文字。

绘图模式:
SetR0P2(int nDrawMode):
(P91)
TEXTMETRIC:存储字体信息。

GetTextMetics ():获取字体信息。

(P96)
练习题
4-2在MFC中CDC的派生类有哪几个,试说出他们的作用?
答:CClientDC:应用在除WM_PAINT消息之外的消息处理函数中,提供窗口客户区的设备坏境描述。

CMetaFileDC:代表Windows图元文件的设备描述环境。

在创建于设备无关的并且可以回放的图像时使用这个类型的DC.
CPaintDC:在WM_PAINT消息的处理函数OnDraw中使用的窗口用户区的设备描述环境. CWindowDC:提供在整个窗口内(不只是用户区)绘图的设备描述环境。

第五章
(P97)
CPoint:其类的对象用于描述一个平面上的点。

CPoint (int initX, int initY);和CPoint (POINT initPt);
CRect:其类的对象用于描述一个矩形。

CRect(int 1, int t, int r, int b);和CRect(const RECT& strRect):
CSize:描述一个矩形区域的大小
CSize (int initCX, int initCYcle);和CSize (SIZE initSize);
CString:封装了对字符串的处理方法。

CStringO ;和CString (const unsigned char *psz);
(102)
视图中访问文档数据:GetDocument (),获取文档类的指针。

例5-3见源码
(P104)
练习题
5-1解释下列语句的含义。

(1)CString s;构造一个长度为0的字符串对象。

(2)CString s( "Hello, Visual C++ 6.0”);构造一个名称为s的字符串对象,并把字符串初始化为Hello, Visual C++ 6.0。

(3)CString s( 'A' , 100);构造一个名称为s的字符串对象,s字符串的内容是100个A。

(4)CString s (buffer, 100);构造一个名称为s的字符串对象,s字符串的内容是buffer 的头100个字符,再加一个NULL。

(5)CString s(anotherCString):构造一个名称为s的字符串对象,s字符串的内容和anotherCString字符串的内容相同。

5- 2 执行CString s(CString( a Hello, world" ). Left(6)+CString( "Visual
C++” ). Right (3));语句后,s字符串中的内容是什么?
答:Hello, C++(,和C间有空格)
5-3现有语句CString s( "My, name, is, C++” );如想将s字符串中的“,”号全部更新为“ ”,将如何编写语句?
答:s. Replace (,,',',);
pDC->TectOut(1, 1, s);
第八早
(P105)
文档视图结构:单文档界面(SDI)、多文档界面(MDI)
InvalidateRect():刷新指定区域的视图,函数原型BOOL InvalidateRect (CONST RECT *lpRect, BOOL bErase) : IpRect 为无效矩形区域;若bErase 为false 则IpRect 区域有效,即刷新时不需要重绘;若bErase为true则IpRect区域无效,即刷新时需要重绘。

OnDrawO:对应用程序窗口的客户区进行重绘。

UpdateAllViewsO :函数原型void UpdateAllViews (CView* pSender, LPARAM IHint = 0L, CObject* pHint = NULL) : pSender指向修改文档的视图,如果所有视图被更新,则设为NULL。

IHint包含文档被修改的信息。

pHint指向一个存储修改信息的的对象。

该函数把文档被修改的信息通知给每个视图,视图中参数pSender指定的情况除外。

(P121)
练习题
6-1应用程序的界面有哪三种方式?
鼠标按键被按下的同时,Ctrl 键亦被按下 鼠标按键被按下的同时,鼠标左键亦被按下 鼠标按键被按下的同时,鼠标中键亦被按下 鼠标按键被按下的同时,鼠标右键亦被按下
鼠标按键被按下的同时,Shift 键亦被按下 (表 7-WM_NCLBUTTONDBLCLK WM_NCLBUTTONUP
WM_NCRBUTTONDBLCLK
WM NCRBUTTONUP WM_NCLBUTTONDOWN
WM_NCMOUSEMOVE WM 任何键(包括字符键)释放时都产生该消息。

应用程序窗口获得输入焦点时发出此消息。

应用程序窗口失去输入焦点时发出此消息。

答:单文档界面、多文档界面、基于对话框界面。

6- 2分别说明什么是SDI 界面的程序和什么是MDI 界面的程序?
答:用户使用应用程序时,如果该程序一次只能打开一个文档,那么就是SDI 界面的程序, 反之就叫做MDI 界面的程序。

第七章
(P124)
用户区鼠标消息:鼠标在客户区产生的消息叫做客户区鼠标消息。

非用户区鼠标消息:在非客户区产生的消息叫做非客户区鼠标消息。

常用用户区鼠标消息(表7-1)
鼠标消息响应函数的掩码(表7-2)
MK_C0NTR0L
MK_LBUTT0N
MK_MBUTT0N
MK_RBUTT0N
MK_SHIFT 非用户区鼠标消息
SetCapture ():捕获鼠标消息函数,一旦被调用,则应用程序窗口将是鼠标消息的唯一去 处。

ReleaseCapture ():释放鼠标消息,使鼠标可以按系统预定的正常方式发送消息。

(131)
*虚拟码(表7-4)
Windows 一般按键消息(表7-5)
WM.CHAR 当敲击键盘的字符键时,产生该消息。

WM_KEYDOWN 任何键按下时都产生该消息。

如果按下的是字符键,在产生WM_KEYDOWN 时还 产生 WM_CHAR (顺序:WM_KEYDOWN 、WM_KEYUP 、WM_CHAR )。

WM_KEYUP
WM_SETFOCUS
WM_KILLFOCUS
(P137) 练习题
7- 1鼠标消息分哪两类,它们之间有什么区别?
答:根据产生鼠标消息是鼠标光标的位置,鼠标消息分为:客户区鼠标消息和非客户区鼠 标消息两类。

在应用程序窗口中,用户可以绘图的部分叫做客户区或者用户区,而除此之 外的区域叫做非客户区。

鼠标在客户区产生的消息叫做客户区鼠标消息,在非客户区产生 的消息叫做非客户区鼠标消息。

7- 2常用的用户区鼠标消息有哪些?
答:WM_LBUTTONDBLCLK WM_LBUTTONDOWN
WM_LBUTTONUP WM_MOUSEMOVE
WM_RBUTTONDBLCLK WM_RBUTTONDOWN
WM_RBUTTONUP
7-4如何安全地接收应用程序窗口以外的鼠标消息?
答:在Windows中,声明了一个专门用来捕获鼠标消息的函数CWnd *SetCapture;该函数一旦被调用,则所有的鼠标消息都将发送往应用程序的窗口中。

在捕获鼠标消息并完成了所有该做的工作后,应用程序应该及时释放鼠标,以使鼠标可以按系统预定的正常方式发送消息,否则将是鼠标的一些正常作用失效。

释放鼠标要使用:Releasecapture.
7-7键盘消息分为哪几类?哪些键只产生按键消息,不会产生字符消息?
答:键盘消息分为:按键消息和字符消息两类。

按键消息分为系统按键消息(WM_SYSKEYDOWN、WM_SYSKEYUP)和非系统按键消息(WM_KEYUP、WM_KEYDOWN)。

字符消息同样分为系统按键消息(WM_SYSKEYDOWN、WM_SYSKEYUP)和非系统按键消息(WM_KEYUP、WM_KEYDOWN)o系统按键消息只能产生系统字符消息,非系统按键消息只能产生非系统的字符消息。

7-8在程序中如何确定窗口何时具有输入焦点,何时失去输入焦点?
答:当应用程序的窗口获得输入焦点时,会发出WM_SETFOCUS消息;而当窗口失去输入焦点时,会发出WM_KILLFOCUS消息。

第八章
(P140)
MFC工程中资源头文件Resource, h
资源描述文件:扩展名rc
菜单的定义:关键字MENU POPUP MENUITEM
IDR_MAINFRAME MENU PRELOAD DISCARDABLE
——菜单ID 菜单立即加载菜单当程序不需要时,菜单可丢弃
BEGIN
POPUP “文件(&F)”----- 子菜单标题
MENUITEM"新建(&N) ”----- 菜单项
END ----- 此子菜单结束
END ----- 总菜单结束
(P143)
WM_COMMAND 消息
ON_COMMAND 宏
ON_UPDATE_COMMAND_UI 宏(pl49)
(P154)
位图资源的使用
LoadBitmap (); 将位图对象与位图资源绑定
CreateCompatibleDC ();创建兼容的DC
SelectObject (); 将位图选入兼容DC中
BitBltO 显示位图
BOOL BitBlt (int nXDest, int nYDest, int nWidth, int nHeight, HDC hdcSrc, int nXSrc, int nYSrc, DWORD dwRop);
nXDest:指定目标矩形区域左上角的X轴逻辑坐标。

nYDest:指定目标矩形区域左上角的Y轴逻辑坐标。

nWidth:指定源和目标矩形区域的逻辑宽度。

nHeight:指定源和目标矩形区域的逻辑高度。

hdcSrc:指向源设备环境的句柄。

nXSrc:指定源矩形区域左上角的X轴逻辑坐标。

nYSrc: 指定源矩形区域左上角的Y轴逻辑坐标。

目标矩形为位图要在客户区中显示的区域,源矩形为位图的显示区域。

(P158)
练习题
8-1在Windows应用程序中,什么样的数据成为资源?常用资源有哪些?
答:资源是一种数据,在应用程序启动后,它们仍然驻留在硬盘上的课执行文件中,只是在应用程序需要时,才从课执行文件中读取它们。

常用的资源有菜单、图标、快捷键、位图等。

8-3程序运行时,用户选中一个菜单项,会发出哪种消息?根据什么来判断消息源?
答:用户选中菜单项是,会发出WM_COMMAND消息,系统根据菜单的标识ID来识别是哪一个菜单项发出的消息。

第九章
(P159)
**CFile 类
***CArchive 类
(P183)
练习题
9-5设计永久性类的时候必须使用哪两个宏?
答: 宏DECLARE_SERIAL 和IMPLEMENT_SERIAL。

9-7如何使类具有序列化能力?
答:类必须满足一下三个条件:
(1)从CObject类或其他派生类派生,并重写Serialize ()函数;
(2)必须在类声明文件中使用序列化声明宏DECLARE_SERIAL(),在类实现文件中使用序列化实现宏IMPLEMENT_SERIAL();
(3)必须定义一个无参数的构造函数,以满足动态创建对象的需要。

第十章
(P185)
控件类派生自CWnd类
CStatic 派生路径:CObject->CCmdTarget->CWnd->CStatic
CButton 派生路径:CObject->CCmdTarget->CWnd->CButton
ON_BN_CLICKED 宏
属于通告消息,第一个参数为按钮ID,第二个参数为响应函数名。

CEdit
(P211)
练习题
10-6按钮控件能创建哪三种不同的形式? 答:下压按钮、复选框和单选按钮。

第十一章
(P216)
CDialog:派生路径:CObject->CCmdTarget->CWnd->CDialog,构造函数:
CDialog(LPCTSTR IpszTemplateName, CWnd* pParentWnd = NULL):
CDialog ( UINT nlDTemplate, CWnd* pParentWnd = NULL );
第一个参数为对话框的资源ID或名称,第二个参数为对话框父窗口指针,一般为NULL。

***模态对话框:
创建:DoModal ()
执行过程(P218图11-5)
(P221)
DDX_Text ():函数原型void DDX_Text (CDateExchange *pDX, int nlDC, CString &value): 利用pDX 对象将value与控件关联并进行数据交换。

UpdateData(FALSE):将变量的值赋给控件显示
UpdateData(TRUE):将控件的值更新到变量中
对话框添加成员变量:(P223)
***非模态对话框:
创建:Create ()
关闭:DestroyWindow ()见源码。

(P239)
练习题
11- 4 MFC有哪些通用对话框类?
答:CFileDialog、CColorDialog、CFontDialog、CFindRep1aceDialog> CPageSetupDialog 和CPrintDialogo
11-5 Windows有哪两类对话框?它们的区别是什么?
答:模式对话框和非模式对话框。

它们的区别为模式对话框直到退出对话框才返回应用程序,非模式对话框可以与应用程序同时工作。

11-6编写一个可以完成计算器功能的基于对话框的应用程序,改应用程序具有"加”、“减"、“乘"、“除”、“求平方根”和“求倒数”的功能。

答:见源码。

相关文档
最新文档