要关心的就是在客户区如何把自己的东西绘制好
.
正如上面所提到的,我们可以自由绘制的区域是"客户区".除客户区以外的任何区域都属
于非客户区
.任何时候我们想重新绘制客户区的话都可以通过发送 WM_PAINT 消息来实现.
GetClientRect()
这个函数用于得到客户区的大小,并把它保存到一个矩形里面.
GetWindowRect()
这个函数用于得到整个窗口的大小,并把结果村到一个矩形里面.
以上两个函数的具体定义请参阅 MSDN.
AdjustWindowRect() & AdjustWindowRectEx()
这两个函数用于让客户区适应窗口的大小,使用哪个取决于你创建窗口时使用的
是
:CreateWindow()还是 CreateWindowEx()
设备环境
:
,比如显示器,打印机等.这是通过使用设备环境来
实现的
.设备环境是对具体设备的抽象.设备环境为我们屏蔽了诸多
,让我们以同
一种方式向所有的设备上绘制图形
.项具体设备上转化的工作就交给了设备环境. 这就是所
谓的设备无关性
.
当然,设备无关性是有代价的.使用设备环境要比直接跟硬件交互慢得多,因为绘制命令要
经过好几层才能到达所要求的硬件
.这个问题解决的方案就是 DirectX,它提供了一种更为底
层的操作硬件的方式
(DirectX 直接跟设备
程序交互
).
下面是有关设备环境的函数:
GetDC() 这个函数为特定的窗口向系统"借"设备环境,大家记清楚了,是借,要还的!
ReleaseDC() 这个函数是将设备环境还给系统.
以上函数的具体定义请参阅 MSDN.
难道所有的设备环境都必须跟窗口相关吗?答案是否定的,内存设备环境将是这个问题
的最好的例子
:
内存设备环境:本质上就是一块内存,但你可以象是对待设备一样对待这块内存.大家可
能会问这有什么用处呢
?这当然有用处,大多数游戏都是使用双缓冲以消除闪烁,为显示器创
建一块内存设备环境就能消除闪烁
.在以后的学习中我们会逐步介绍.
相关函数:
CreateCompatibleDC() 创建内存环境,实质上就是申请一块内存
DeleteDC() 释放内存
对于这块刚刚申请的内存环境里面有什么呢?如果你非要问个究竟的话那我只能告诉你:
里面只有一个
1*1 的单色位图.1*1 单色位图有什么用处呢?答案是为了内存设备环境的存
在
,因为空的设备环境是没有办法存活的.
GDI 对象
一提到对象大家马上就想到了 OO,但是这些 GDI 对象跟现在的面向对象里面的对象
是有区别的,当然也有相同的地方。我
们是通过句柄来操作对象的。
有五种 GDI 对象是需要我们学习的,他们分别是:
HBITMAP,HBRUSH,HPEN,HFONT,HRGN,以下就是对他们的详细介绍:
.HBITMAP 位图对象 它是由一个二维的图像组成的,在 Windows 中,它通常是利用
一个位图创建的。