对於这样简单的情况,可以将nLength的定义值与TextOut放在同一条叙述中,从而无需定义iLength:
虽然这样子写起来不好看,但是功能与前者是一样的。
综合使用
现在,我们似乎已经具备了在萤幕上显示多行文字所需要的所有知识。我们知道如何在WM_PAINT讯息处理期间取得一个装置内容代号,如何使用TextOut函式以及如何根据字元大小来安排字距,剩下的就是显示一点有意义的东西了。
在前一章里,我们大概知道从Windows的GetSystemMetrics函式中取得的资讯是很有意义的,该函式传回Windows中不同视觉元件的大小资讯,如图示、游标、标题列和卷动列等。它们的大小因显示卡和驱动程式的不同而有所不同。GetSystemMetrics是在程式中完成与装置无关图形输出的重要函式。
该函式需要一个参数,叫做「索引」,在Windows表头档案定义了75个整数索引识别字(识别字的数量随著每个版本的Windows的发布而不断地增加,在Windows 1.0的程式写作者文件中仅列出了26个)。GetSystemMetrics传回一个整数,这个整数通常就是参数中指定的图形元件大小。
让我们来编写一个程式,显示一些可以从GetSystemMetrics呼叫中取得的资讯,显示格式为每种视觉元件一行。如果我们建立一个表头档案,在表头档案中定义一个结构阵列,此结构包含GetSystemMetrics索引对应的Windows表头档案识别字和呼叫所传回的每个值对应的字串,这样处理起来要容易一些。表头档案名为SYSMETS.H,如程式4-1所示。