cxIcon = GetSystemMetrics (SM_CXICON) ;
cyIcon = GetSystemMetrics (SM_CYICON) ;
取得图示的大小。然後,程式通过多次呼叫
DrawIcon (hdc, x, y, hIcon) ;
显示图示,其中x和y是被显示图示其左上角的座标。
在目前使用的大多数视讯显示卡上,带有SM_CXICON和SM_CYICON索引的GetSystemMetrics会回报图示的大小为32×32图素。这是我们在Developer
Studio中建立的图示大小,它也是图示出现在桌面上和显示在ICONDEMO程式显示区域的大小。然而,这个大小并非显示在程式的标题列或工作列中的图示大小。小图示的大小可以由带有SM_CXSMSIZE和SM_CYSMSIZE索引的GetSystemMetrics获得(第一个SM表示「system
metrics(系统度量)」,被包含的SM表示「small(小)」)。对於目前使用的大多数显示卡来说,小图示的大小为16×16图素。
这会产生问题。当Windows将32×32的图示缩小为16×16的图示时,必需减少图素的行和列。这样,对於某些比较复杂的图示,就会失真。因此,我们应该为那些图像缩小就会变形的图示建立特殊的16×16图素的图示。在Developer
Studio中图示图像的上面是标识为「Device」的下拉式清单方块,在它的右边有一个按钮,按下该按钮会弹出「New Icon
Image」对话方块,此时选择「Small(16×16)」。现在您可以画另一个图示。如图10-2所示,画一个「S」(表示「小」)。
图10-2 在Developer Studio中显示的小(16×16)
ICONDEMO档案 |
在该程式中您不必做任何事情。第二个图示图像被储存在相同的ICONDEMO.ICO档案中,并以相同的IDI_ICON识别字引用。在适当的时候,Windows会自动使用该较小的图示,例如在标题列或工作列中。当在桌面上显示快捷方式,以及程式呼叫DrawIcon装饰显示区域时,Windows会使用大图示。
在掌握