当前位置:文档之家› 第3Windows消息映射

第3Windows消息映射

3.1 视图类
• 本节是MFC编程的第一节,主要介绍Windows程序设计不同于MS-DOS编程模 式的界面问题。
• 视图实际上就是一个“窗口”,它具有Windows应用程序窗口的一般特性, 即用户可以对其缩放、打开或关闭、移动、最小化和最大化等操作。实际 上,MFC程序中的视图就是MFC类库中的CView或CView的派生类创建的一个 对象,前文提到过,类的对象的属性是由它的数据成员决定的,而它的行 为是由其成员函数决定的,对此,视图对象也不例外。
• MM_TEXT映射模式是一种逻辑坐标映射模式,逻辑坐标是在 逻辑上定义的坐标,如可以在x和y轴方向上无限延伸,而 基于设备的坐标,则取决于分辨率,而且左上角和右下角 的坐标在特定分辨率情况下是固定的。如有滚动条的视图, 有个点的逻辑坐标是(0,0),如果该滚动条向下滚动, 则该逻辑点就会变得不可见,虽然该应用程序的左上角设 备坐标没有变化,但它映射的逻辑坐标已经改变了。
•第7页/共13页
3.5.3 固定比例映射模式
• 固定比例映射模式顾名思义就是将模式的逻辑单 位固定下来,主要有5种:
• MM_LOENGLISH:该模式的逻辑单位是0.01英寸。 • MM_HIENGLISH:该模式的逻辑单位是0.001英寸。 • MM_LOMETRIC:该模式的逻辑单位是0.1毫米。 • MM_HIMETRIC:该模式的逻辑单位是0.01毫米。 • MM_TWIPS:该模式的逻辑单位是1/1440英寸。
• MM_ANISOTROPIC:该模式下的横纵坐标可以单独 变化,如将横坐标扩大10倍,则原来的视图上的 圆则变成椭圆了。
•第9页/共13页
3.5.5 坐标转换
• 设置了映射模式后,开发人员可以很方便地使用逻辑坐标 作为参数来进行程序设计,但从Windows的鼠标消息所获得 的鼠标单击的坐标值却是设备的坐标值,因此坐标转换直 接关系到使用应用软件的用户和程序间进行正常的通信。
• MFC程序中的视图类定义和实现是分别放在两个不同文件里面,“.h”头 文件存放视图类的定义,“.cpp”文件存放视图类函数的实现。如图所示。 该图所示是实例的“test”项目的视图类。
视图类定义和实现
•第1页/共13页
testView的类成员
3.2 应用程序的类型
• MFC库支持两种不同类型的应用程序: • 单文档应用程序(SDI)。 • 多文档应用程序(MDI)。 • 从用户的角度看,单文档应用程序一次只能处理一个文档,而多
•第8页/共13页
3.5.4 可变比例映射模式
• 相对于固定比例的模式,可变比例模式是可以改 变它的比例因子和坐标原点。Windows提供的两种 可变比例映射模式是:
• MM_ISOTROPIC:该模式下横纵比例总是“1:1” 的,也就是说,假设横坐标扩大10倍,则纵坐标 也要扩大10倍,则原来视图上的圆还是一个圆, 而没有变成椭圆,只是这个圆比原来小了,只有 原来的1/10。
文档应用程序一次可以处理多个文档。 • 但用户使用应用程序向导创建一个MFC程序时,可以选择单文档或
多文档应用程序,选择了之后,就会分别生成相应类型的代码框 架。如图所示。该图所示是在MFC应用程序向导中选择创建不同类 型的应用程序。
创建不同类型的MFC程序
•第2页/共13页
ห้องสมุดไป่ตู้
3.3 资源编辑器
• 一个MFC应用程序的界面很大程度决定于资源编辑 器中的资源,项目中的资源编辑文件虽然可以使 用文本文件打开,但最好不要使用文本直接编辑, 这样编辑的话效率比较低且容易出错,将资源编 辑交给资源编辑器就行了。
• 在进行坐标转换工作之前,可以先确定以下的原则: • CDC的成员函数都是以逻辑坐标作为其参数的。 • CWnd的成员函数都是以设备坐标作为其参数的。 • 需要滚动的窗口的坐标应该用逻辑坐标来表示。如果使用
设备坐标,则用户滚动一下该点的坐标就不再有意义了。 • 外界输入一般是设备坐标。
•第10页/共13页
3.6 其他Windows消息
• MFC库对100多种Windows消息提供了消息处理函数, 本节将列举5种比较常用的Windows消息: WM_CREATE、WM_CLOSE、WM_QUERYENDSESSION、 WM_DESTROY和WM_NCDESTROY。
• (1)WM_CREATE消息 • (2)WM_CLOSE消息 • (3)WM_QUERYENDSESSION消息 • (4)WM_DESTROY消息 • (5)WM_NCDESTROY消息
选择项目风格
•第4页/共13页
选择使用的基类和类名
3.5 消息映射函数和Windows映射模式
• 本节开始讲解Windows映射模式和消息映射函数, 将讲解鼠标单击消息及其消息处理的简单接收过 程。
•第5页/共13页
3.5.1 获取用户单击和输入
• 详细的鼠标消息处理将在后面的章节中讲解,从本小节起, 将不断出现基于Windows消息的例子和知识点,鼠标消息在 Windows程序设计的输入中非常常用,因此在本小节先简单 介绍相关知识。
果没有,则不理会该消息,如果有,则进行第(4)步。 • (4)调用消息处理函数进行相应的处理。
•第6页/共13页
3.5.2 MM_TEXT映射模式
• Windows程序设计最重要的特征之一就是有可视化的界面, 在界面显示的方式中,以象素为单位则称为设备坐标,而 与之对应的,即与设备无关的,称之为逻辑坐标。
• 以实例“test”项目为例,“test”的资源编辑 器如图所示。
“test”项目的资源编辑器
•第3页/共13页
3.4 MFC应用程序中的各种子功能
• 本小节将介绍使用MFC应用程序向导来创建支持不同功能类型的MFC应用程 序。步骤如下:
创建MFC项目并命名
MFC应用程序向导步骤1-选择应用程序类型
• Windows程序是如何知道用户通过鼠标单击了应用程序窗口 的呢?从鼠标单击操作到Windows应用程序作出相应的反应 经历了以下的步骤:
• (1)用户单击鼠标,可以是左键,也可以是右键。 • (2)产生相应的消息,在此可以将消息暂且看做是一份
“通知”。 • (3)在消息映射表中查找是否有相应的消息处理函数,如
相关主题