第2章 屏幕绘图
概述
在第1章,示例程序HelloCE完成一项工作:在屏幕上显示一行文字。显示这行文字只需要调用一次DrawText即可,因为Windows CE代为处理了很多细节,例如字体、字体颜色、文本行在屏幕上的位置等等。借助图形用户接口的力量,应用程序不只能在屏幕上输出本文行,还能做更多的事情。应用程序可以绘制出非常精细的显示外观。
纵观微软Windows操作系统,用于绘制屏幕的函数数量发生了巨大的扩展。Windows每个后续的版本里,都增加了许多函数以扩展程序员可以使用的工具集。虽然新函数增加了,但旧函数依然被保留,这样即使有旧函数被新函数取代,旧程序依然可以继续运行在新版本的Windows上。这种函数不断堆积,旧函数被保留以向后兼容的策略,在最初的Windows CE版本里却被废弃了。因为需要制作更小版本的Windows,CE团队苦览Win32 API,并只复制适合Windwos CE目标市场的应用程序绝对需要的API。
这种精简对Win32 API影响最大的领域之一就是图形函数。到不是您会缺乏用于工作的函数,只是在Win32 API的冗余度方面,对图形函数做了教大的精简。程序员面临的新挑战之一就是不同的Windows CE平台支持略微不同的API集合。Windows CE图形功能与桌面系统不同之处,其中之一就是Windows CE不支持不同的映射模式,而这在其他Windows系统里是支持的。Windows CE设备环境始终设置为MM_TEXT映射模式。坐标转化在Windows CE下也不支持。虽然这些特性在一些类型的应用中很有用,但在小型便携式设备的Windows CE环境里,这些需求并不突出。所以当你阅读本章里使用的函数和技术时,请记住其中一些可能不能在所有平台上被支持。通过GetDeviceCaps函数,程序可以判断系统支持什么函数。GetDeviceCaps返回当前图形设备的实际能力。贯穿本章始末, 当判定在目标设备上什么函数被支持时,我会谈到GetDeviceCaps函数的。
像书中第一部分里其它章节一样,本章回顾Windows CE所支持的绘画功能。需要记住的最重要的事情之一是虽然Windows CE不支持全部Win32 图形API,但它的快速发展使它可以支持一些Win32里最新的函数--其中一些非常新,可能您对它们都不熟悉。本章将为您展示您可以使用的函数以及如何在这个有一些函数不被Windows CE支持的领域里工作。