dc, 14*cxCaps+35*cxChar, cyChar*i, szBuffer, wsprintf (szBuffer, TEXT ("%5d"), GetDeviceCaps (hdc, devcaps[i].iIndex))) ; SetTextAlign (hdc, TA_LEFT | TA_TOP) ; } EndPaint (hwnd, &ps) ; return 0 ; case WM_DESTROY: PostQuitMessage (0) ; return 0 ; } return DefWindowProc (hwnd, message, wParam, lParam) ; }
可以看到,这个程式非常类似第四章的SYSMETS1。为了保持程式码的短小,我没有使用卷动列,因为我知道资讯可以在一个画面上显示出来。在256色,640×480的VGA上显示的结果如图5-1所示。

| 图5-1
256色,640×480VGA上的DEVCAPS1显示 |
装置的大小
假定要绘制边长为1英寸的正方形,您(程式写作者)或Windows(作业系统)需要知道视讯显示上1英寸对应多少图素。使用GetDeviceCaps函式能取得有关如视讯显示器和印表机之类输出设备的实际显示大小资讯。
视讯显示器和印表机是两个不同的设备。但也许最不明显的区别是「解析度」与装置联系起来的方式。对於印表机,我们经常用「每英寸的点数(dpi)」表示解析度。例如,大多数雷射印表机有300或600dpi的解析度。然而,视讯显示器的解析度是以水平和垂直的总图素数来表示的,例如,1024×768。大多数人不会告诉您他的印表机在一张纸上水平和垂直列印多少图素或他们的视讯显示器上每英寸有多少图素。
在本书中,我用「解析度」来严格定义每度量单位(一般为英寸)内的图素数。我使用「图素大小」或「图素尺寸」表示设备水平或垂直显示的总图素数。「度量大小」或「度量尺寸」是以英寸或毫米为单位的设备显示区域的大小。(对於印表机页面,它不是整个页面,只是可列印的区域。)图素大小除以度量大小就得到解析度。
现在Windows使用的大多数视讯显示 |