为什么我用API函数LoadImage加载资源文件中的图标和位图时返回的句柄都是0呢?

RedChimae 2010-10-27 08:17:39
如以下代码所示,我的工程资源文件中有一个标识号为102的图标和一个标识号为103的位图,用以下代码测试发现加载后返回的句柄一直都是0。请问这是什么原因呢,难道参数设置有不对的地方吗?

Private Declare Function LoadImage Lib "user32" Alias "LoadImageA" (ByVal hInst As Long, ByVal lpsz As String, ByVal un1 As Long, ByVal n1 As Long, ByVal n2 As Long, ByVal un2 As Long) As Long
Private Const IMAGE_BITMAP = &H0
Private Const IMAGE_ICON = &H1
Private Const IMAGE_CURSOR = &H2
Private Const LR_DEFAULTCOLOR = &H0
Private Const LR_LOADFROMFILE = &H10

Private Sub Command1_Click()
Dim hIcon, hBmp As Long
hIcon = LoadImage(App.hInstance, 102, IMAGE_ICON, 0&, 0&, LR_DEFAULTCOLOR)
hBmp = LoadImage(App.hInstance, 103, IMAGE_BITMAP, 0&, 0&, LR_DEFAULTCOLOR)
Debug.Print hIcon, hBmp
End Sub
...全文
213 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
RedChimae 2010-10-28
  • 打赏
  • 举报
回复
实在不好意思,一开始我做测试时资源标识号用的是字符串,后来一看不行就想着换数字试试,结果一着急忘了修改lpsz参数类型了。不过我现在知道怎么回事儿了,问题的关键是在IDE环境下LoadImage查找的是VB6.exe的资源,必须编译成exe才能找到我的资源。再次感谢!
贝隆 2010-10-28
  • 打赏
  • 举报
回复
关注,,,
RedChimae 2010-10-28
  • 打赏
  • 举报
回复
顺便再问一下,LoadImage从资源文件中加载图标使用过后到底需不需要再调用DestroyIcon释放资源呢?我发现调用DestroyIcon也能释放成功,不调用也没发生内存泄漏。
PctGL 2010-10-27
  • 打赏
  • 举报
回复
Private Declare Function LoadImage Lib "user32" Alias "LoadImageA" (ByVal hInst As Long, ByVal lpsz As long, ByVal un1 As Long, ByVal n1 As Long, ByVal n2 As Long, ByVal un2 As Long) As Long

1,488

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧