首页 > 编程语言 >刘方舟 VC++面向对象与可视化程序设计 黄维通

刘方舟 VC++面向对象与可视化程序设计 黄维通

时间:2023-12-19 14:47:26浏览次数:44  
标签:控件 函数 对话框 应用程序 黄维通 可视化 C++ 基类 消息

注:由于题目不确定,整理知识点范围比较宽,适当选取

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派生类中的方法。

     

 

 

 

 

 

 

标签:控件,函数,对话框,应用程序,黄维通,可视化,C++,基类,消息
From: https://www.cnblogs.com/wangprince2017/p/17913690.html

相关文章

  • R语言贝叶斯Metropolis-Hastings采样 MCMC算法理解和应用可视化案例
    贝叶斯MCMC模拟是一个丰富的领域,涵盖了各种算法,共同目标是近似后验模型。例如,使用的rstan包采用了一个HamiltonianMonteCarlo算法。用于贝叶斯建模的另一个rjags包采用了Gibbssampling算法。尽管细节有所不同,但这两种算法都是基于基本的Metropolis-Hastings算法的变体。主要思......
  • C++U3-第05课-C++语言阶段复习
    复习学习目标 输入输出 分支结构 多分支和switch语句 循环语句 练习1 一维数组  练习 二维数组  字符数组字符串 函数  sort排序  结构体 成绩排序 【题意分析】根据成绩从高到低排序,同成绩学号小的排在前面的顺序进......
  • C++移动构造与std::move()
    背景及问题如下程序所示:#include<iostream>classMyString{public: MyString()=default; MyString(constchar*data) { printf("%s","MyStringConstructed!!\n"); size=strlen(data); m_data=newchar[size]; memcpy(m_data,......
  • C++ 反向遍历 array 小记
    有时候需要逆向循环,例如从字符串的最右端遍历到最左端,需要注意一些细节!初学遇到一些bug记录在这里。首先arr.size()的数据类型为size_t,为无符号整型对于for(intidx=arr.size()-1;idx>=0;idx--):使用int作为idx的类型,有一定概率会编译失败,因为size_t的具......
  • C++U4-第09课-STL容器
    学习目标 STL  栈stack [入栈出栈] 【算法分析】栈的基本操作。【参考代码】#include<bits/stdc++.h>usingnamespacestd;intmain(){stack<int>st;intn;cin>>n;for(inti=1;i<=n;i++){intx;cin......
  • 数据可视化对个人用户有什么帮助?
    数据可视化是一种强大的工具,不仅可以为企业和专业人士提供见解,也对个人用户带来了许多实际的帮助。下面我就以一个数据可视化从业者的视角,来谈谈数据可视化对个人用户的益处:首先对于个人用户来说,数据可视化可以让平时接触的数据更易于理解。它能够将数字转化为图形或图表,为用户......
  • 【面试官版】【持续更新中】融合滤波算法+数据结构+激光视觉SLAM+C++面试题汇总
    C++部分什么时候需要写虚函数、什么时候需要写纯虚函数?只继承接口为纯虚函数强调覆盖父类重写,或者父类也需要实现一定的功能,为虚函数指针传参和引用传参区别?引用传参本质上是传递原参数地址,指针传参本质还是值传递,生成拷贝指针,拷贝指针和原指针指向的为同一块内存。因此改变......
  • 【我们尽量少说废话的讲完】C++红黑树原理
    红黑树的出现红黑树增删改查的时间复杂度都是O(logn)。如果插入的数据随机,那么使用二叉搜索树即可保证树接近平衡。此时增删改查的效率都为O(logN)。但如果插入的数据为有序的,此时二叉搜索树极其不平衡,退化为链表,时间复杂度降为O(N)。而红黑树就是为了应对这种极端情况。红黑......
  • 【纯代码复制粘贴即可使用】卡尔曼滤波的C++实现
    使用Eigen实现卡尔曼滤波。如果实现扩展卡尔曼滤波只需将H矩阵换成雅可比的求解。#ifndef_MYKALMAN_H#define_MYKALMAN_H#include<Eigen\Dense>classKalmanFilter{public:KalmanFilter(intstateSize,intmeasSize,intuSize);~KalmanFilter()=default;......
  • C++ 获取 vector 最大的 3 个数字
    假设现在有一个数组存储了成绩信息,要获得前三名#include<iostream>#include<vector>#include<algorithm>std::vector<int>scores{10,30,90,30,100,20,10,0,30,40,40,70,70};下面这种方法可以将前3名成绩复制到结果里,同时考虑到scores长度小于3的情况。......