设备描述表即设备环境的属性的集合
系统为每个窗口建立了一个PAINSTRUCTURE结构
Typerdef struct tagPAINSTRUCT
{
HDC hdc; //设备环境句柄
BOOL fErase; //一般取真值,表示擦除无效矩形的背景
RECT rcPaint; //无效矩形标识
BOOL fRestore; //系统保留
BOOL fIncUpdate; //系统保留
BYTE rgbReservered[16]; //系统保留
}PAINSTRUCT;
获取设备环境的方法
1. 调用BeginPaint函数
hdc = BeginPaint(hwnd, &ps); //ps为PAINTSTRUCT类型结构
void EndPaint(HWND hwnd,PAINSTRUCT &ps); //用以释放设备环境
- 调用GetDC函数
hdc = GetDC(hwnd);
void releaseDC(HWND hwnd); //用以释放设备环境
映像模式
映像模式定义了将逻辑单位转化为设备的度量单位以及设备的x方向和y方向,程序员可在一个统一的逻辑坐标系中操作而不必考虑设备输出设备的坐标系情况。
* 窗口
对应逻辑坐标系上的程序员设定的区域
* 视口
对应实际输出设备上程序员设定的区域
映像模式 | 一个逻辑单位映射为 | 坐标系设定 |
---|---|---|
MM_ANISOTROPIC | 系统确定 | Optional |
MM_HIENGLISH | 0.001英寸 | Y上,X右 |
MM_HIMETRIC | 0.01mm | Y上,X右 |
MM_ISOTROPIC | 系统确定 | Optional |
MM_LOENGLISH | 0.01英寸 | Y上,X右 |
MM_LOMETRIC | 0.1mm | 同上 |
MM_TEXT | 一个像素 | Y下,X右 |
MM_TWIPS | 1/1440英寸 | Y上,X右 |
应用程序可获取设备环境的当前映像模式,并根据需要设置映像模式。
SetMapMode(hdc,nMapMode); //设置设备环境的映像模式,
nMapMode = GetMapMode(hdc); //
BOOL SetWindowExtEx //设置窗口区域
(
HDC hdc,
int nHeightm=,nWidth,
LPSIZE lpSize
)
BOOL SetViewportExtEx //设置视口区域
(
HDC hdc,
int nHeight,nWidth,
LPSIZE spSize
)
窗口和视口的缺省原点为(0,0)。可通过调用函数SetViewportOrgEx和SetWindowOrgEx设定。
BOOL SetWindowOrgEx
(
HDC hdc,
int X,Y,
LPPOINT lpPoint
)