




已阅读5页,还剩50页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章MFC编程和操作 2 1Windows编程2 2MFC编程2 3MFC程序应用2 4消息和消息映射2 5VisualC 常用操作 2 1Windows编程 2 1 1C 的Windows编程早期的Windows应用程序开发是使用C C 通过调用WindowsAPI所提供的结构和函数来进行的 对于有些特殊的功能 有时还要借助相应的软件开发工具 SoftwareDevelopmentKit 简称SDK 来实现 优点 运行效率高缺点 编程繁琐 手工代码量也比较大 参见程序Ex HelloMsg 分析 Windows应用程序中 main主函数被WinMain函数取代 每一个C Windows应用程序都需要Windows h头文件 它还包含了其他的一些Windows头文件 这些头文件定义了Windows的所有数据类型 函数调用 数据结构和符号常量 程序中结果的输出已不再是显示在屏幕上 而是通过对话框 如MessageBox 来显示或将结果绘制在用户界面元素上 参见一个比较完整的Windows应用程序Ex HelloWin 2 1Windows编程 2 1 2Windows编程特点1 消息驱动机制C 控制台应用程序是通过调用系统函数来获得用户输入的 而Windows应用程序则是通过系统发送的消息来处理用户输入的 2 1Windows编程 图形设备接口Windows提供了一个抽象的接口 称为图形设备接口 GraphicalDeviceInterface 简称GDI 使得用户直接利用系统的GDI函数就能方便实现输入或输出 而不必关心与系统相连的外部设备的类型 2 1Windows编程 3 基于资源的程序设计Windows应用程序常常包含众多图形元素 在Windows环境下 每一个这样的元素都作为一种可以装入应用程序的资源来存放 这些资源就像C 程序中的常量一样 可以被编辑 修改 也可以被其他应用程序所共享 4 动态链接库动态链接库提供了一些特定结构的函数 能被应用程序在运行过程中装入和连接 且多个程序可以共享同一个动态链接库 这样就可以大大节省内存和磁盘空间 2 1Windows编程 5 进程和线程进程是装入内存中正在执行的应用程序 进程包括私有的虚拟地址空间 代码 数据及其它操作系统资源 如文件 管道以及对该进程可见的同步对象等 进程包括了一个或多个在进程上下文内运行的线程 线程是操作系统分配CPU时间的基本实体 线程可以执行应用程序代码的任何部分 包括当前正在被其它线程执行的那些部分 同一进程的所有线程共享同样的虚拟地址空间 全局变量和操作系统资源 2 1Windows编程 2 1 3Windows基本数据类型基本数据类型的别名 这些基本数据类型都是以大写字符出现凡是数据类型的前缀是P或LP 则表示该类型是一个指针或长指针数据类型 如果前缀是H 则表示是句柄类型 若前缀是U 则表示是无符号数据类型 等等 Windows还提供一些宏来处理上述基本数据类型 例如 LOBYTE和HIBYTE分别用来获取16位数值中的低位和高位字节 LOWORD和HIWORD分别用来获取32位数值中的低位和高位字 等等 2 1Windows编程 2 1Windows编程 2 1Windows编程 2 2MFC编程 2 2 1MFC概述 CObject类是MFC提供的绝大多数类的基类 该类完成动态空间的分配与回收 支持一般诊断 出错信息处理和文档序列化等 CCmdTarget类主要负责将系统事件 消息 和窗口事件 消息 发送给响应这些事件的对象 完成消息发送 等待和派遣 调度 等工作 实现应用程序的对象之间协调运行 CWinApp类是应用程序的主线程类 它是从CWinThread类派生而来 CWinThread类用来完成对线程的控制 包括线程的创建 运行 终止和挂起等 2 2MFC编程 CDocument类是文档类 包含了应用程序在运行期间所用到的数据 CWnd类是一个通用的窗口类 用来提供Windows中的所有通用特性 对话框和控件 CFrameWnd类是从CWnd继承来的 并实现了标准的框架应用程序 CDialog类用来控制对话框窗口 CView是用于让用户通过窗口来访问文档 CMDIFrameWnd和CMDIChildWnd类分别用来多文档应用程序的主框架窗口和文档子窗口的显示和管理 CMiniFrameWnd类是一种简化的框架窗口 它没有最大化和最小化窗口按钮 也没有窗口系统菜单 一般很少用到它 2 2MFC编程 2 2 2一个MFC程序参见程序Ex HelloMFC 2 2MFC编程 2 2 3理解程序代码当用户运行应用程序时 Windows会自动调用应用程序框架内部的WinMain函数 并自动查找该应用程序类CHelloApp 从CWinApp派生 的全局变量theApp 然后自动调用CHelloApp的虚函数InitInstance 该函数会进一步调用相应的函数来完成主窗口的构造和显示工作 1 首先执行的是 m pMainWnd newCMainFrame 2 然后执行后面两句 m pMainWnd ShowWindow m nCmdShow m pMainWnd UpdateWindow 3 最后返回TRUE 表示窗口创建成功 2 2MFC编程 2 2 4MFC应用程序框架类型VisualC 6 0中的MFCAppWizard能为用户快速 高效 自动地生成一些常用的标准程序结构和编程风格的应用程序 它们被称为应用程序框架结构 2 2MFC编程 MFCAppWizard exe 单文档 多文档和基于对话框的应用程序 与单文档应用程序相比较 基于对话框的应用程序是最简单 也是最紧凑的 它没有菜单 工具栏及状态栏 也不能处理文档 但它的好处是速度快 代码少 程序员所花费的开发和调试时间短 多文档应用程序 顾名思义 能允许同时打开和处理多个文档 与单文档应用程序相比 增加了许多功能 因而需要大量额外的编程工作 例如它不仅需要跟踪所有打开文档的路径 而且还需要管理各文档窗口的显示和更新等 2 2MFC编程 2 2MFC编程 2 3MFC程序应用 2 3 1文档应用程序创建参见程序单文档应用程序Ex SDI 2 3MFC程序应用 2 3MFC程序应用 2 3MFC程序应用 创建的单文档应用程序Ex SDI界面和其它文档应用程序一样 都有标题栏 菜单栏 工具栏 状态栏以及客户区 文档窗口 等界面元素 2 3MFC程序应用 参见多文档应用程序EX MDI 其步骤与Ex SDI一样 编译并运行后 其结果如下图 文档窗口 主框架窗口 2 3MFC程序应用 2 3 2项目文件和项目配置由于这些应用程序还包含了除源程序外的许多信息 因此 在VisualC 中常将它们称为项目或工程 另外 VisualC 是用文件夹来管理一个应用程序项目的 且将项目名作为文件夹名 在此文件夹下包含源程序代码文件 cpp h 项目文件 dsp 以及项目工作区文件 dsw 等 这些文件类型的含义如下表 2 3MFC程序应用 2 3MFC程序应用 上述创建的单文档应用程序项目Ex SDI 其各文件的组织如下图所示 2 3MFC程序应用 2 3 3项目管理1 ClassView项目工作区窗口的ClassView页面用以显示和管理项目中所有的类 2 3MFC程序应用 2 ResourceViewResourceView页面用于显示和管理项目中所有的资源 它与ClassView页面一样 都是按树层次结构来呈现不同的显示列表 2 3MFC程序应用 在VisualC 中 每一个图片 字符串值 工具栏 图标或其他非代码元素等都可以看作是ResourceView页面中的一种资源结点 并使用了各自默认的资源结点图标 3 FileViewFileView可将项目中的所有文件 C 源文件 头文件 资源文件 Help文件等 分类按树层次结构来显示 2 3MFC程序应用 2 3 4资源和资源标识1 资源的分类单文档应用程序Ex SDI的ResourceView所有使用到的默认资源 它可分为下列几类 1 快捷键列表 Accelerator 一系列组合键的集合 被应用程序用来引发一个动作 该列表一般与菜单命令相关联 用来代替鼠标操作 2 对话框 Dialog 含有按钮 列表框 编辑框等各种控件的窗口 3 图标 Icon 代表应用程序显示在Windows桌面上的位图 它同时有32x32像素和16x16像素两种规格 2 3MFC程序应用 2 3 4资源和资源标识 4 菜单 Menu 用户通过菜单可以完成应用程序的大部分操作 5 字串表 StringTable 应用程序使用的全局字符串或其他标识符 6 工具栏 Toolbar 工具栏外观是以一系列具有相同尺寸的位图 按钮 组成的 它通常与一些菜单命令相对应 用以提高用户的工作效率 7 版本信息 Version 包含应用程序的版本 用户注册码等相关信息 VisualC 6 0应用程序中还可有鼠标指针 HTML等 也可以自己添加新的资源类别 2 3MFC程序应用 2 ID标识符每一个资源类别下都有一个或多个相关资源 每一个资源均是由标识符来定义的 一般地 要遵循下列规则 1 在标识符名称中允许使用字母a z A Z 0 9以及下划线 2 标识符名称不区分大小写字母 如new idd与New Idd是相同的标识符 3 不能以数字开头 如8BIT是不合法的标识符名 除了上述规则外 出于习惯 VisualC 还提供了一些常用的定义标识符名称的前缀供用户参考使用 见下表 2 3MFC程序应用 常用标识符定义的前缀 2 3MFC程序应用 2 3 5框架窗口 文档和视图1 主框架窗口文档应用程序中的窗口可分为两类 一类是应用程序主窗口 另一类是文档窗口 应用程序主窗口是应用程序直接放置在桌面 DeskTop 上的那个窗口 又称为主框架窗口 每个应用程序只能有一个主框架窗口 它常包含标题栏 菜单栏 工具栏和状态栏 主框架窗口的标题栏上往往显示应用程序的名称和当前活动的文档名 2 3MFC程序应用 2 文档窗口文档窗口对于单文档应用程序来说 它和主框架窗口是一致的 即主框架窗口就是文档窗口 而对于多文档应用程序 文档窗口是主框架窗口的子窗口 文档窗口一般都有相应的可见边框 它的客户区是由相应的视图类 默认从CView类派生 来构成的 而CView类又是从窗口类CWnd派生 因此可以说视图是文档窗口内的子窗口 文档窗口时刻跟踪当前处于活动状态的视图的变化 并将用户或系统产生的命令消息传递给当前活动视图 而主框架窗口负责管理各个用户交互对象并根据用户操作相应地创建或更新文档窗口及其视图 2 3MFC程序应用 2 3 6对话框和控件对话框是一个特殊类型的窗口 可以作为各种控件的容器 可用于捕捉和处理用户的多个输入信息或数据 控件是一种具有独立功能的 能进行交互的窗口 对话框和一般控件类都是从CWnd派生而来 2 3MFC程序应用 2 3MFC程序应用 2 3MFC程序应用 2 3MFC程序应用 2 4消息和消息映射 2 4 1使用类向导MFC类向导是VisualC 6 0中又一个非常有用的工具 它能自动为一个项目添加一个类 进行消息和数据映射 创建OLEAutomation 自动化 属性和方法以及进行ActiveX事件处理等 2 4消息和消息映射 2 4 1使用类向导MessageMaps 消息映射 用来添加 删除和编程处理消息的成员函数 MemberVariables 成员变量 添加或删除与控件相关联的成员变量 或称控件变量 以便与控件进行数据交换 Automation 自动化 为支持自动化的类 如ActiveX控件类 添加属性和方法 ActiveXEvents ActiveX事件 为ActiveX控件类添加触发事件的支持 ClassInfo 类信息 有关项目中类的其他信息 2 4 2消息分类Windows应用程序中的消息主要有下面三种类型 1 窗口消息 Windowsmessage 这类消息主要是指由WM 开头的除WM COMMAND之外的消息 一般由窗口类和视图类对象来处理 窗口消息往往带有参数 以标志处理消息的方法 2 控件的通知消息 Controlnotifications 当控件的状态发生改变时 控件就会向其父窗口发送WM COMMAND通知消息 应用程序框架处理控件消息的方法和窗口消息相同 但按钮的BN CLICKED通知消息除外 它的处理方法与命令消息相同 2 4消息和消息映射 2 4 2消息分类 3 命令消息 Commandmessage 命令消息主要包括由用户交互对象 菜单 工具条的按钮 快捷键等 发送的WM COMMAND通知消息 命令消息的处理方式与其他两种消息不同 它能够被多种对象接收 处理 这些对象包括文档类 文档模板类 应用程序本身以及窗口和视类等 而窗口消息和控件的通知消息是由窗口对象接收并处理的 这里的窗口对象是指从窗口类CWnd中派生的类的对象 它包括CFrameWnd CMDIFrameWnd CMDIChildWnd CView CDialog以及从这些派生类对象等 2 4消息和消息映射 2 4 3消息映射 2 4消息和消息映射 消息映射如下图所示 2 4消息和消息映射 查看CEx SDIView程序代码 2 4 4消息映射代码框架 CEx SDIView MFCClassWizard为WM LBUTTOMDOWN的消息映射作了以下三个方面内容的安排 1 在头文件Ex SDIView h中声明消息处理函数OnLButtonDown 2 在Ex SDIView cpp源文件前面的消息映射入口处 添加了相应的消息映射宏 3 在Ex SDIView cpp文件中写入一个空的消息处理函数的模板 以便用户填入具体代码 2 4消息和消息映射 处理鼠标和键盘消息的映射函数不需要用户重新定义 对于菜单和按钮等命令消息来说 需要用ClassWizard映射时还会弹出一个对话框 用来指定消息映射函数的名称 删除指定的消息映射函数的步骤 1 需要先在ClassWizard对话框的Messages列表中选定要删除的消息映射函数 然后单击 DeleteFunction 按钮 最后关闭ClassWizard对话框 2 在该消息映射函数所在的类实现文件 cpp 中将映射函数定义和实现的代码全部删除 2 4消息和消息映射 2 5VisualC 常用操作 2 5 1类的添加和删除1 类的添加给项目添加一个类有很多方法 例如 先将外部源文件复制到当前项目文件夹中 然后选择 工程 增加到工程 文件 菜单命令 可将外部源文件所定义的类添加到项目中 但若使用MFC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025甘肃省内铁路系统安检工作人员招聘40人(第二期)笔试参考题库附带答案详解
- 2025年郑州空中丝路文化传媒有限公司招聘实习生7人笔试参考题库附带答案详解
- 2025年中国铁道出版社有限公司招聘(14人)笔试参考题库附带答案详解
- 2025宝鸡机床集团有限公司招聘(25人)笔试参考题库附带答案详解
- 2025四川成都兴城投资集团有限公司招聘11人笔试参考题库附带答案详解
- 2025内蒙古能源集团有限公司招聘55人笔试参考题库附带答案详解
- 2025上海泛象文化发展有限公司招聘5人笔试参考题库附带答案详解
- 危险源安全培训感想课件
- 地铁基础知识培训课件
- 地铁公司级安全培训体会课件
- 广东省医疗机构免陪照护服务试点方案解读
- DB13-T 1349-2025 超贫磁铁矿勘查技术规范
- 术后常见并发症及处理
- DL∕T817-2024立式水轮发电机检修技术规程
- 学堂在线 不朽的艺术:走进大师与经典 章节测试答案
- 几何公差培训课件
- 幼儿园意识形态培训内容
- 镇纪委组织农村干部培训材料
- 培训需求分析的课件
- 过程方法培训课件
- 工地充电房管理制度
评论
0/150
提交评论