滚 动 窗 口
窗口具有滚动功能
(1) 基类要从CScrollView派生,在已有工程上添加滚动功能,可采用替换将CView换为CScrollView。
(2)要设置滚动的大小,还有点击箭头滚动的数量,以及点击滚动栏空白的地方,滚动的数量 。通过SetScrollSizes。
这个函数到底在哪调用合适呢?
当然是窗口创建之后,可以利用虚函数OnInitialUpdate,该函数在OnDraw前调用。我们经常会在窗口创建之后做一些初始化工作,就可以放在这个函数内,因为它是窗口完全创建之后第一个调用的函数。所以利用这个特点,可进行一些初始化工作。
坐标空间
Microsoft Windows下的程序运用坐标空间和转换来对图形输出进行缩放、旋转、平移、斜切和反射。
一个坐标空间是一个平面的空间,通过使用两个相互垂直并且长度相等的轴来定位二维对象。
(0,0)
Xmax
Xmin
Ymax
Ymin
坐标空间
Win32应用程序设计接口(API)使用四种坐标空间:世界坐标系空间、页面空间、设备空间、和物理设备空间。应用程序运用世界坐标系空间对图形输出进行旋转、斜切或者反射。
Win32 API把世界坐标系空间和页面空间称为逻辑空间;最后一种坐标空间(即物理设备空间)通常指应用程序窗口的客户区;但是它也包括整个桌面、完整的窗口(包括框架、标题栏和菜单栏)或打印机的一页或绘图仪的一页纸。物理设备的尺寸随显示器、打印机或绘图仪所设置的尺寸而变化。
,
转换
如要在物理设备上绘制输出,Windows把一个矩形区域从一个坐标空间拷贝到(或映射到)另一个坐标空间,直至最终完整的输出呈现在物理设备上(通常是屏幕或打印机)
如果该应用程序调用了SetWorldTransform函数,那么映射就从应用程序的世界坐标系空间开始;否则,映射在页面空间中进行。在Windows把矩形区域的每一点从一个空间拷贝到另一个空间时,它采用了一种被称作转换的算法,转换是把对象从一个坐标空间拷贝到另一个坐标空间时改变(或转变)这一对象的大小、方位、和形态,尽管转换把对象看成一个整体,但它也作用于对象中的每一点或每条线。
转换
Ymax
Ymin
世界坐标系空间
运用SetWorldTransform函数而进行的一个典型转换
Ymax
Ymin
页面空间
Ymin
Ymax
设备空间
物理设备
页面空间到设备空间的转换
页面空间到设备空间的转换是原Windows接口的一部分。这种转换确定与一特定设备描述表相关的所有图形输出的映射方式。
所谓映射方式是指确定用于绘图操作的单位大小的一种量度转换。映射方式是一种影响几乎任何客户区绘图的设备环境属性。另外还有四种设备环境属性:窗口原点、视口原点、窗口范围和视口范围,这四种属性与映射方式密切相关。
页面空间到设备空间的转换
页面空间到设备空间的转换所用的是两个矩形的宽与高的比率,其中页面空间中的矩形被称为窗口,设备空间中的矩形被称为视口,Windows把窗口原点映射到视口原点,把窗口范围映射到视口范围,就完成了这种转换。
窗口原点
视口原点
窗口
视口
页面空间
设备空间
设备空间到物理空间的转换
设备空间到物理空间的转换有几个独特之处:它只限于平移,并由Windows的窗口管理部分控制,这种转换的唯一用途是确保设备空间的原点被映射到物理设备上的适当点上。没有函数能设置这种转换,也没有函数可以获取有关数据。
默认转换
一旦应用程序建立了设备描述表,并立即开始调用GDI绘图或输出函数,则运用默认页面空间到设备空间的转换和设备空间到客户区的转换(在应用程序调用SetWorldTransform函数之前,不会出现世界坐标空间到页面空间的转换)。
默认页面空间到设备空间的转换结果是一对一的映射;即页面空间上给出的一点映射到设备空间的一个点。这种转换没有以矩阵指定,而是通过把视口宽除以窗口宽,把视口高除以窗口高而得出的。在默认的情况下,视口尺寸为1x1个象素,窗口尺寸为1x1页单位。
滚动窗口 来自淘豆网m.daumloan.com转载请标明出处.