|
extMetrics将以百分之一英寸为单位提供字元的宽度和高度。在呼叫GetTextMetrics以取得关於字元的宽度和高度资讯时,映射方式必须设定成根据这些资讯输出文字时所使用的映射方式,这样就可以简化工作。
装置座标系
Windows将GDI函式中指定的逻辑座标映射为装置座标。在讨论以各种不同的映射方式使用逻辑座标系之前,我们先来看一下Windows为视讯显示器区域定义的不同的装置座标系。尽管我们大多数时间在视窗的显示区域内工作,但Windows在不同的时间使用另外两种装置座标区域。所有装置座标系都以图素为单位,水平轴(即x轴)上的值从左到右递增,垂直轴(即y轴)上的值从上到下递增。
当我们使用整个萤幕时,就根据「萤幕座标」进行操作。萤幕的左上角为(0,0)点,萤幕座标用在WM_MOVE讯息(对於非子视窗)以及下列Windows函式中:CreateWindow和MoveWindow(都是对於非子视窗)、GetMessagePos、GetCursorPos、SetCursorPos、GetWindowRect以及WindowFromPoint(这不是全部函式的列表)。它们或者是与视窗无关的函式(如两个游标函式),或者是必须相对於某个萤幕点来移动(或者寻找)视窗的函式。如果以DISPLAY为参数呼叫CreateDC,以取得整个萤幕的装置内容,则内定情况下GDI呼叫中指定的逻辑座标将被映射为萤幕座标。
「全视窗座标」
以程式的整个视窗为基准,如标题列、功能表、卷动列和视窗框都包括在内。而对於普通视窗,点(0,0)是缩放边框的左上角。全视窗座标在Windows中极少使用,但是如果用GetWindowDC取得装置内容,GDI函式中的逻辑座标就会转换为显示区域座标。
第三种座标系是我们最常使用的「显示区域座标系」。点(0,0)是显示区域的左上角。当使用GetDC或BeginPaint取得装置内容时,GDI函式中的逻辑座标就会内定转换为显示区域座标。
用函式ClientToScreen和ScreenToClient可以将显示区域座标转换为萤幕座标,或者反过来,将萤幕座标转换为显示区域座标。也可以使用GetWindowRect函式取得萤幕座标下的整个视窗的位置和大小。这三个函式为一种装置座标转换为另一种提供了足够的资讯。
视埠和视窗
映射方式定义了Window |