1.内联函数
定义:定义在类体内的成员函数,即函数的函数体放在类体内
特点:在调用处用内联函数体的代码来替换,用于解决程序的运行效率问题。一定要在调用之前定义,并且内联函数无法递归调用。
2.构造函数 与 析构函数
构造函数:用于为对象分配内存空间,对类的成员变量进行初始化,并执行其他内部管理操作。可以接受参数,但不能有返回值。并允许重载
析构函数:用于释放分配给内存对象的空间。没有参数,没有返回值,也不允许重载。一个类中只能有个析构函数。
3.函数重载 与 操作符重载
函数重载
定义:同一个函数名可以对应着多个函数的实现。函数重载允许在一个程序内声明多个名称相同的函数,这些函数完成不同的功能,并带有不同类型、不同数目的参数及返回值。使用函数重载可以减轻用户的记忆负担,病史程序的结构简单、易懂。
要求:函数间的 参数个数或参数类型 不同
操作符重载
目的:增强了C++语言的可扩展性,为C++中已有的操作符赋予新的功能。
4.友元
目的:允许类外的函数或其他类具有访问该类的私有部分的特权,用Friend_加类或函数 表示一个“友元”
要求:友元类必须在它被定义前声明
派生类的访问控制由访问属性来确定,它按下述方式来继承基类的访问属性:
- 1. 如果访问属性为public,则基类的public是派生类的protected成员;积累的private成员对派生类是不可访问的(除非基类中声明的友元函数授权访问);基类的protected成员对派生类仍保持protected属性
- 2. 如果访问属性为protected,则基类的public和protected成员均是派生类的protected成员;基类的private成员对派生类是不可访问的(除非积累中声明的友元函数授权访问);
- 3. 如果访问属性为private,其基类的public和protected成员都是派生类的private成员;积累的private成员对派生类是不可访问的(除非积累中声明的支元函数授权访问)。也就是说,当访问属性为private时,派生类的对象不能访问基类中以任何方式定义的成员函数。
- 4. 基类名可以为一个,也可为多个,一个基类,则这种继承方式称为简单继承。,如果为多个,则继承方式称多重继承,各个基类用逗号隔开。
5.多态性和虚拟函数
多态性:“一种接口,多种方法”,使用同样的函数名而定义不同的函数操作。“运算符重载”和“函数重载”是编译时的多态性,也成为“静态多态性”;运行时的多态性则称为“动态多态性”,通过“虚拟函数”来完成。
虚拟函数:在基类中用Visual说明,在积累中只能用一次。通过用给一个指针变量指向基类或派生类来实现多态。
Unit 2
Windows进vc++开发面向对象应用程序时,使用了Windows API函数(面向过程)和MFC类库(面向对象)两种方式
6.窗口
定义:是Windows应用程序基本的操作单元,是应用程序与用户之间交互的基本环境,也是系统管理应用程序的基本单位。
7.句柄
定义:指Windows使用的一个唯一的PVOID的数据,是一个4字节长的数值。
9. windows中的消息由三部分组成:消息号、字参数和长字参数
10.入口函数winmain具有什么功能?
- 1. 注册窗口类,建立窗口及执行其他必要的初始化工作
- 2. 进入消息循环,根据从应用程序消息队列接受的消息,调用相应的处理过程。
- 3. 消息循环检索到WM_QUIT消息时中止程序运行
11.窗口函数wndProc具有什么功能?
Windows应用程序使用 图形设备接口和Windows设备驱动程序 来支持与设备无关的图形。
Unit 4
12. BeginPaint与GetDC区别
13. 三种映射模式:MM-TEXT映射;MM_ANISOTROPIC映射和MM_ISOTROPIC映射
14. 画笔、画沙的创建、选入设备环境、删除
windows使用宏RGB定义绘图的颜色,其形式为:RGB(nRed,nGreen,nBlue)
15. InvalidateRect – 刷新无效矩形区域
unit 5
16. 文本格式化
1.在文本行中确定后续文本的坐标 2.换行时确定下一行文本的坐标
17. textout函数(文本输出函数)
18.键盘消息有哪几种,?
按键消息 和 字符消息;
19. 产生字符消息的键是哪些?
任何可读字符,BACKSPACE,回车,ESC,TAB
20.鼠标消息
WM_MOUSEMOVE中
X = LOWORD(IParam) ---低字节 Y = HIWORDC(IParam) ---高字节
lParam参数包含鼠标光标位置;wParam参数包含一个指示各种虚键状态
CS_DBLCLKS属性,定义方式如下:
Wndclass.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS
21、会读会写常见的资源脚本;一个加速键的资源脚本;画出对应的资源式菜单;
22、位图及其位图使用步骤:(选择性使用)
答:由于处理的数据量比较大,位图操作必须在内存中进行,用于位图操作的系统设备环境为内存设备环境;
应用程序首先要通过调用函数CreateCompatibleDC向系统申请获取内存设备环境,此内存设备环境与输出设备的设备环境hdc互相兼容,其形式是:hdcmen=CreateCompatibleDC(hdc);
与设备环境相似,内存设备环境也有设备描述表,应用程序获取内存设备环境后,调用函数SelectObject将位图文件内容选入内存设备环境后,即可直接在内存设备环境中操作位图,但是前提是需要对内存设备环境进行初始化,否则不能直接绘图。使用CreatCompatibleBitmap创建空位图,将其选入内存设备环境,等到绘图结束,在使用BitBlt函数将内存设备环境复制到屏幕。
操作位图结束后,应用程序须调用DeleteDC释放内存设备环境,其形式为:
DeletDC(hdcmem);//hdcmem为内存设备环境句柄
23、对话框的主要形式;两者区别;及对话框处理特点;构造对话框处理函数;(选择性使用)
答:对话框是一个弹出式窗口,它一般用于程序需要用户输入或者需要和用户进行交互活动的场合。对话框的主要形式有:模式对话框、非模式对话框;
模式对话框不允许用户在关闭对话框之前切换到应用程序的其他窗口,当一个模式对话框初始化是,对话框的消息循环将处理消息,但并不返回给WinMain函数。
非模式对话框允许用户在该对话框与应用程序其他窗口之间的切换,即对话框和其他应用程序的窗口之间进行来回切换。非模式对话框从WinMain函数的消息循环中接收输入。使用模式对话框还是非模式对话框,取决于应用程序及其实现。
对话框资源有如下功能:发送消息如警告消息、提示框消息;接收输入如用户输入的消息;提供消息如常见的“关于”对话框。
对话框消息处理函数的一般形式:
BOOL CALLBACK DlgProc(HWND hDlg,UINT message,WPARAM wParam,LPARAM 1Param)
{
switch(message)
{
Case WM_INITDIALOG;
return 1;
case WM_COMMAND
switch(LOWORD(wParam))
{
case…
…
break;
case…
…
break;
}
break;
}
return 0;
}
…
24、创建一个单文档或者多文档;产生几个类;这几类做什么事;
25.常见的全局成员函数
使用MFC的4个步骤
1.在程序界面中增加控件方法 2.为控件添加映射消息 3.在应用程序中使用控件 4.自定义控件类
典型的控件使用(按钮、滚动条编辑框如何进行消息响应)
(1)用AppWizard创建一个MFC.exe项目。(2)设置控件及其属性。(3)为控件添加成员变量
编辑框使用:(1)建立基于对话框的MFC应用程序。(2)建立对话框中各个控件。(3)修改各个控件的属性值。(4)增加相关控件的变量和消息映射项。(5)编写消息处理函数的代码。
编辑框与应用程序间的消息传递:应用程序创建编辑框控件后,可通过接受控件发出的消息得知用户的请求,并可通过向编辑框发送消息对其进行操作。P213
- 1. 编辑框向应用程序发送消息:编辑框通过向其父窗口发送WM_COMMAND消息通知应用程序用户的交互信息。该消息自参数(wParam)的低字节为控件标识;高字节为标识编辑框动作的消息通知码。
- 2. 应用程序向编辑框发送消息:应用程序对编辑框的操作通过调用函数SendMessage或SendDlgItemMessage向其发送各种消息完成。
26.在MFC中创建应用程序的资源。例10-1,P262
手工加入ON_UPDATE_COMMAND_UI_RANGE宏(实现若干菜单项的状态更新)。
在My_resView.h中加入代码:
afx_msg void OnUpdateOperColorChange(CCmdUI * pCmdUI);
在My_resView.cpp中加入如下代码:
ON_UPDATE_COMMAND_UI_RANGE(ID_OPER_RED, ID_OPER_BLUE, OnUpdateOperColorChange)
在My_resView.cpp的最后加入如下代码来实现该函数:
Void CMy_resView::OnUpdateOperColorChange(CCmdUI * pCmdUI)
{
pCmdUI->SetRadio(m_nColorIndex==(pCmdUI->m_nID-ID_OPER_RED));
}
27 单文档应用程序的消息传递过程
DefWindowProc
应用程序对象
框架窗口 文档模板
活动视图 文档对象
28 文档模板类CDocTemplate 该类的作用:
**文档模板类CDocTemplate将原本独立的文档、视图和框架窗口对象联系在一起。CDocTemplate类提供了文档类所需要的最基本的功能实现,它提供的方法分别是一般方法和虚拟方法,虚拟方法使应用程序可以重写它们来提供CDocTemplate派生类中的方法。
**