FastCoder 发表于 2024-8-16 01:09

Win32API中的GetClassLong无效

如题,最近写win32程序想实现依据窗口句柄获取图标句柄的操作,经查询后需使用GetClassLong函数,但依据MSDN官方调用方法调用后总是返回0。
FreeBasic和易语言的调用代码:



FastCoder 发表于 2024-8-16 01:11

SendMessage方法和GetClassLongPtr(实际指向GetClassLongA)都试过了,都返回0

爱飞的猫 发表于 2024-8-16 06:04

GetClassLongA / GetClassLongPtr 获取的应该是注册窗口信息时候的值,有些窗口可能是建立后再设定图标。
SendMessage 可以成功获取对应的图标句柄,不清楚你对应的代码是怎么写的,所以我也整了个简单的程序:

.版本 2

g_hIconBig = SendMessageA (hWnd, #WM_GETICON, #ICON_BIG, 0)
g_hIconSmall = SendMessageA (hWnd, #WM_GETICON, #ICON_SMALL, 0)


https://imgsrc.baidu.com/forum/pic/item/9358d109b3de9c823511b1ae2a81800a19d8439f.png

易语言示例代码和测试程序:
https://pan.baidu.com/s/1KTGuw8Enlg5M5zvFpAuBng?pwd=mhzp

kenxy 发表于 2024-8-16 08:57

真的可以获取到图标

FastCoder 发表于 2024-8-16 13:09

爱飞的猫 发表于 2024-8-16 06:04
GetClassLongA / GetClassLongPtr 获取的应该是注册窗口信息时候的值,有些窗口可能是建立后再设定图标。
...

感谢,已经使用SendMessage解决了
页: [1]
查看完整版本: Win32API中的GetClassLong无效