c语言 鼠标指针图标,一、Windows的图标、光标、字符串和自订资源—在程序中使用图标...

虽然Windows以几种方式用图标来代表程序,但是许多Windows程序仅在用WNDCLASS结构和RegisterClass定义窗口类别时指定一个图示。如我们所看到的,这样作用得很好,尤其当图示文件包含标准和较小的图像大小时,更是如此。Windows在显示图标图像时,它会在图示文件中选择最合适的图像大小。

RegisterClass有一个改进版本叫做RegisterClassEx,它使用名为WNDCLASSEX的结构。WNDCLASSEX有两个附加的字段:cbSize和hIconSm。cbSize字段指出了WNDCLASSEX结构的大小,假设hIconSm被设定为小图标的图标句柄。这样,在WNDCLASSEX结构中,您可以设定与两个图示文件相关的两个图示句柄-一个用于标准图示,一个用于小图示。

有这种必要吗?没有。正如我们看到的,Windows已经从单个图示文件中提取了大小合适的图标图像。RegisterClassEx似乎没有RegisterClass聪明。如果hIconSm字段使用了包含多个图像的图标文件,则只有第一个图像能被利用。它可能是标准大小的图示,使用时才被缩小。RegisterClassEx似乎是为了使用多个图标图像而设计的,每个图像只包含一种图标大小。因为现在可以将多个图示大小包括在同一个图示文件中,所以我建议使用WNDCLASS和RegisterClass。

如果您想在程序执行的时候,动态地更改程序的图标,可以使用SetClassLong来达到目的。例如,如果您有与标识符IDI_ALTICON相关的第二个图示文件,则您可以使用以下的叙述将其切换到那个图示:

SetClassLong (hwnd, GCL_HICON,

LoadIcon (hInstance, MAKEINTRESOURCE (IDI_ALTICON))) ;

如果不想储存程序图标的句柄,但要使用DrawIcon函数在别处显示它,可以使用GetClassLong获得句柄。例如:

DrawIcon (hdc, x, y, GetClassLong (hwnd, GCL_HICON)) ;

在Windows文件的某些部分,LoadIcon被称为「过时的」,并推荐使用LoadImage(LoadIcon在/Platform SDK/User Interface Services/Resources/Icons中说明,LoadImage在/Platform SDK/User Interface Services/Resources/Resources中说明)。当然LoadImage更为灵活,但它没有LoadIcon简单。您会注意到,在ICONDEMO中对同一个图示呼叫了LoadIcon两次。这不会产生问题,也没有使用额外的内存。LoadIcon是取得句柄但不需要清除句柄的少数几个函数之一。实际上有一个DestroyIcon函数,但它与CreateIcon、CreateIconIndirect和CreateIconFromResource连在一起使用。这些函数使程序能够动态地建立图标图像。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值