当前位置:C++技术网 > 资讯 > 窗口的图标的设置规则是什么?

窗口的图标的设置规则是什么?

更新时间:2019-04-19 13:34:57浏览次数:1+次

窗口类的hIcon成员变量是指定窗口的图标,一般赋值为LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON));,我看了下IDI_ICON资源,我发现这个图标资源里包含好几张图片,那么窗口的图标显示的时候会选择哪一张呢?

【C++技术网会员解答】

    这是一个ICO文件,这个文件里存储了同一个图标的不同尺寸。使用一张图存储多张尺寸的图标的方式会更加方便,因为无需读取加载多张图片,就可以一次性将所有尺寸的图标加载到内存。在需要不同尺寸的图标的时候,程序自动选择对应的图标使用。

补充:

    ICO是Windows的图标文件格式,图标文件可以存储单个图案、多尺寸、多色板的图标文件。一个图标实际上是多张不同格式的图片的集合体,并且还包含了一定的透明区域。  

    ICO图标文件是一种特殊的图片文件,它存储了一个图标的不同的尺寸。我们从这个图里看到了一个图标,只是每一个图标的大小尺寸不一样。那么我们在需要不同的格式还是读取这个图标文件,然后按照需要的尺寸来读取就可以得到对应尺寸的图标了。

    而说到到底读取哪一个尺寸的图标,要看使用的环境。在不同的地方,需要的尺寸不一样,会使用不同的参数去区分。然后去解析ICO文件,取出对应大小的图标,返回使用。而这个具体的执行过程,就依赖获取图标的函数了。LoadIcon是系统函数,自然会在加载的时候,根据系统的需要来显示,比如标题的图标,自然是根据标题的大小来显示的,是在内部完成的。而如果我们自己要用不同的尺寸,可以用LoadImage来实现,其中参数UINT uType,int cxDesired,int cyDesired分别是图片类型(IMAGE_BITMAP:装载位图;IMAGE_CURSOR:装载光标;IMAGE_ICON:装载图标)、宽度、高度。那么你可以执行状态图标ICON,然后指定大小,此函数会自动去读取ICO文件指定的大小的图标的。

    如果还想知道LoadImageru如何根据指定的大小得到对应尺寸的图标的,那么你就需要去学习ICO图标文件的格式,然后可以自己尝试去解析ICO文件格式,也可以读取到对应的图标数据。