298311657 发表于 2010-5-9 22:12:16

从DLL中加载图片资源到图片控件

au3内置函数GUICtrlSetImage 只能设置DLL中的ico图标,对于bmp图片无能为力
要给创建的图片控件加载DLL中的图片,可以使用API来达成要求
LoadLibraryA
LoadBitmap
SendMessage
FreeLibrary;~ By Crossdoor
;~ 从DLL文件中加载图片到图片控件
;~ _SetBitmap(DLL名称, 图片编号, 控件句柄)
;~ 成功返回1
;~ 示例:
;~ $pic = GUICtrlCreatePic("", 0, 0, 640, 480, 0x04000000)
;~ _SetBitmap('Res.dll', '#143', $pic)
Func _SetBitmap($sDll, $sBitmap, $hwnd)
        $LoadLibraryA = DllCall("Kernel32.dll", "hwnd", "LoadLibraryA", "str", $sDll)
        If @error Then Return SetError(@error, 0, 0)
        $LoadBitmap = DllCall("User32.dll", "hwnd", "LoadBitmap", "hwnd", $LoadLibraryA, "str", $sBitmap)
        If @error Then Return SetError(@error, 0, -1)
        DllCall("user32.dll", "lparam", "SendMessage", "hwnd", GUICtrlGetHandle($hwnd), "int", 0x0172, "wparam", 0, "lparam", $LoadBitmap)
        If @error Then Return SetError(@error, @extended, "")
        DllCall("Kernel32.dll", "hwnd", "FreeLibrary", "hwnd", $LoadLibraryA)
        Return 1
EndFunc

afan 发表于 2010-5-9 22:19:19

这个很简洁啊,谢谢~

yingf20 发表于 2010-9-13 12:33:25

初学,进入收藏一下。不管怎样。谢谢

windadi 发表于 2010-10-7 10:17:04

好东西,,要学学

zjg2003 发表于 2010-12-5 17:16:05

这个东西不错哦,很强

kodin 发表于 2011-2-22 04:39:41

{:face (411):}太好用了,居然调用EXE图片都支持!爽歪歪。

hkc5599 发表于 2011-3-16 15:54:23

so good..thanks!!!!

tianrenhao 发表于 2011-4-2 12:06:01

这个东西不错哦,很强

l4ever 发表于 2011-4-4 20:55:20

发个dll样板上来看看?

ynkmdcs 发表于 2011-4-11 18:29:37

新手学习学习

xms77 发表于 2012-11-14 19:29:29

回复 1# 298311657
正需要,谢谢了!

kx2500 发表于 2013-6-19 00:50:27

受教了,非常感谢!

ak47gglllk 发表于 2014-8-1 15:38:10

受教了,非常感谢,感谢

touch_xu 发表于 2014-9-23 10:21:00

这个很好啊,支持一下

txen548 发表于 2014-10-31 08:51:41

谢谢楼主分享提供
页: [1] 2
查看完整版本: 从DLL中加载图片资源到图片控件