1.内联函数

       定义:定义在类体内的成员函数,即函数的函数体放在类体内

       特点:在调用处用内联函数体的代码来替换,用于解决程序的运行效率问题。一定要在调用之前定义,并且内联函数无法递归调用。

2.构造函数 与 析构函数

       构造函数:用于为对象分配内存空间,对类的成员变量进行初始化,并执行其他内部管理操作。可以接受参数,但不能有返回值。并允许重载

       析构函数:用于释放分配给内存对象的空间。没有参数,没有返回值,也不允许重载。一个类中只能有个析构函数。

3.函数重载 与 操作符重载

       函数重载    

定义:同一个函数名可以对应着多个函数的实现。函数重载允许在一个程序内声明多个名称相同的函数,这些函数完成不同的功能,并带有不同类型、不同数目的参数及返回值。使用函数重载可以减轻用户的记忆负担,病史程序的结构简单、易懂。

       要求:函数间的 参数个数或参数类型 不同

操作符重载

       目的:增强了C++语言的可扩展性,为C++中已有的操作符赋予新的功能。

4.友元

       目的:允许类外的函数或其他类具有访问该类的私有部分的特权,用Friend_加类或函数 表示一个“友元”

       要求:友元类必须在它被定义前声明

       派生类的访问控制由访问属性来确定,它按下述方式来继承基类的访问属性:

  1. 1.    如果访问属性为public,则基类的public是派生类的protected成员;积累的private成员对派生类是不可访问的(除非基类中声明的友元函数授权访问);基类的protected成员对派生类仍保持protected属性
  2. 2.    如果访问属性为protected,则基类的public和protected成员均是派生类的protected成员;基类的private成员对派生类是不可访问的(除非积累中声明的友元函数授权访问);
  3. 3.    如果访问属性为private,其基类的public和protected成员都是派生类的private成员;积累的private成员对派生类是不可访问的(除非积累中声明的支元函数授权访问)。也就是说,当访问属性为private时,派生类的对象不能访问基类中以任何方式定义的成员函数。
  4. 4.    基类名可以为一个,也可为多个,一个基类,则这种继承方式称为简单继承。,如果为多个,则继承方式称多重继承,各个基类用逗号隔开。

5.多态性和虚拟函数

       多态性:“一种接口,多种方法”,使用同样的函数名而定义不同的函数操作。“运算符重载”和“函数重载”是编译时的多态性,也成为“静态多态性”;运行时的多态性则称为“动态多态性”,通过“虚拟函数”来完成。

       虚拟函数:在基类中用Visual说明,在积累中只能用一次。通过用给一个指针变量指向基类或派生类来实现多态。

Unit 2

       Windows进vc++开发面向对象应用程序时,使用了Windows API函数(面向过程)和MFC类库(面向对象)两种方式

6.窗口

       定义:是Windows应用程序基本的操作单元,是应用程序与用户之间交互的基本环境,也是系统管理应用程序的基本单位。

7.句柄

       定义:指Windows使用的一个唯一的PVOID的数据,是一个4字节长的数值。

9.    windows中的消息由三部分组成:消息号、字参数和长字参数

10.入口函数winmain具有什么功能?

  1. 1.    注册窗口类,建立窗口及执行其他必要的初始化工作
  2. 2.    进入消息循环,根据从应用程序消息队列接受的消息,调用相应的处理过程。
  3. 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. 1.    编辑框向应用程序发送消息:编辑框通过向其父窗口发送WM_COMMAND消息通知应用程序用户的交互信息。该消息自参数(wParam)的低字节为控件标识;高字节为标识编辑框动作的消息通知码。
  2. 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派生类中的方法。

     

 

 

 

 

 

 

VC++知识点整理的更多相关文章

  1. ACM个人零散知识点整理

    ACM个人零散知识点整理 杂项: 1.输入输出外挂 //读入优化 int 整数 inline int read(){ int x=0,f=1; char ch=getchar(); while(ch& ...

  2. Android 零散知识点整理

    Android 零散知识点整理 为什么Android的更新试图操作必须在主线程中进行? 这是因为Android系统中的视图组件并不是线程安全的.通常应该让主线程负责创建.显示和更新UI,启动子线程,停 ...

  3. vue前端面试题知识点整理

    vue前端面试题知识点整理 1. 说一下Vue的双向绑定数据的原理 vue 实现数据双向绑定主要是:采用数据劫持结合发布者-订阅者模式的方式,通过 Object.defineProperty() 来劫 ...

  4. kafka知识点整理总结

    kafka知识点整理总结 只不过是敷衍 2017-11-22 21:39:59 kafka知识点整理总结,以备不时之需. 为什么要使用消息系统: 解耦 并行 异步通信:想向队列中放入多少消息就放多少, ...

  5. JSP页面开发知识点整理

    刚学JSP页面开发,把知识点整理一下. ----------------------------------------------------------------------- JSP语法htt ...

  6. JS知识点整理(二)

    前言 这是对平时的一些读书笔记和理解进行整理的第二部分,第一部分请前往:JS知识点整理(一).本文包含一些易混淆.遗漏的知识点,也会配上一些例子,也许不是很完整,也许还会有点杂,但也许会有你需要的,后 ...

  7. css入门知识点整理

    css入门知识点整理 不要嘲笑我这个蒟蒻..例子来源:w3school css其实就分为两个东西,一个是选择器,另外一个是声明.声明定义了某个对象的属性的值,这都是html的内容.重点要关注的是选择器 ...

  8. activity生命周期知识点整理

    activity生命周期知识点整理 Activity: 是一个应用组件,用户可与其提供的屏幕进行交互.窗口通常会充满屏幕,但也可以小于屏幕并浮动在其他窗口之上. 一个activity的什么周期: 启动 ...

  9. 【Android 面试基础知识点整理】

    针对Android面试中常见的一些知识点整理,Max 仅仅是个搬运工.感谢本文中引用文章的各位作者,给大家分享了这么多优秀文章.对于当中的解析,是原作者个人见解,有错误和不准确的地方,也请大家积极指正 ...

随机推荐

  1. Map集合统计字母次数

    Map集合练习:"asfefxAAcf34vrfdfse2-2asd--wdd"获取该字符串中,每一个字母出现的次数要求打印的结果是:a(2)c(1)...;思路:对结果分析发现, ...

  2. RabbitMQ部署

    操作步骤: 安装依赖文件 -->yum install ncurses-devel 进入opt目录创建rabbitmq目录 -->cd /opt -->mkdir rabbitMQ ...

  3. @vue/cli 3配置文件vue.config.js

    const webpack = require('webpack') const path = require('path') // const CompressionWebpackPlugin = ...

  4. 第01章-欢迎学习VTK

    [译者:这个系列教程是以Kitware公司出版的<VTK User's Guide -11th edition>一书作的中文翻译(出版时间2010年,ISBN: 978-1-930934- ...

  5. Loararunner录制脚本

    LoadRunner录制 1.启动LoadRunner,用管理员方式打开,选择 “Create/Edit Scripts” 2.从这两个方式任意方式打开脚本页面 3.选择协议,这里我们举例子,用“We ...

  6. 【白银组】codevs_1160 蛇形矩阵

    #include <iostream> using namespace std; #define M 100 int a[M][M]; void pt( int n ) { for ( i ...

  7. java工具类-读配置文件

    ///读配置文件 import java.io.InputStream;import java.util.HashMap;import java.util.Map;import java.util.M ...

  8. 总是有人问我,那你能造出你自己都搬不动的石头吗? 我说不能,但我能写出个我自己都无法 fix 的 bug。

    总是有人问我,那你能造出你自己都搬不动的石头吗? 我说不能,但我能写出个我自己都无法 fix 的 bug.

  9. 使用用WCF中的双工(Duplex)模式将广告图片推送到每个Winform客户端机子上

    参考资料地址:http://www.cnblogs.com/server126/archive/2011/08/11/2134942.html 代码实现: WCF宿主(服务端) IServices.c ...

  10. JavaScript常见集合操作

    JavaScript常见集合操作 集合的遍历 FOR循环(效率最高) 优点:JavaScript最普遍的for循环,执行效率最高 缺点:无法遍历对象 for(let i=0;i<array.le ...