找回密码
 加入
搜索
查看: 4608|回复: 21

如何调用DLL中的图片~不是图标~

  [复制链接]
发表于 2009-4-26 15:59:59 | 显示全部楼层 |阅读模式
写GUI时,会用到一些背景按钮之类的图片,因为数量比较多,所以使用fileinstall很不方便,释放之后还有删除。
因此想请教下如何调用DLL中的图片。如果可以调用的话,就可以把所有的图片打包到DLL中使用了,这样就会方便很多。
在帮助中看到GUICtrlCreateIcon函数可以调用DLL里的图标,但是GUICtrlCreatePic是否不能调用DLL中的图片,也不知是我不懂还是确实不能调用~
有哪位大侠知道如何调用DLL中的图片吗?请教!!!

评分

参与人数 1贡献 +1 收起 理由
lynfr8 + 1

查看全部评分

 楼主| 发表于 2009-5-17 12:41:55 | 显示全部楼层
一直无人回答~~大侠哪里去了??
发表于 2009-5-17 17:32:00 | 显示全部楼层
本帖最后由 lynfr8 于 2009-8-15 14:56 编辑

目前我看到的所有的代码中用到GUICtrlCreatePic必定是文件路径形式引用的


-----------------------------
7楼已经给出可行方法
事实再一次证明我是菜鸟
呵呵~~~
谢谢7楼
发表于 2009-5-17 19:29:03 | 显示全部楼层
应该是可以吧 不过我不会
发表于 2009-5-17 22:05:38 | 显示全部楼层
_WinAPI_LoadImage
_GDIPlus_GraphicsDrawImage
_GDIPlus_BitmapCreateFromHBITMAP
_GDIPlus_GraphicsCreateFromHWND

大概会用到这4个函数。
发表于 2009-5-17 22:09:13 | 显示全部楼层
_WinAPI_LoadImage
_GDIPlus_GraphicsDrawImage
_GDIPlus_BitmapCreateFromHBITMAP
_GDIPlus_GraphicsCreateFromHWND

大概会用到这4个函数。
pusofalse 发表于 2009-5-17 22:05


如果你知道怎么调用
请写个演示出来让大家学习下
-------------------------
注意
是请求
不是要求
发表于 2009-5-17 22:33:44 | 显示全部楼层
Re 6#:
#include <WinAPI.au3>
#include <GDIPlus.au3>

_GDIPlus_Startup()

$hLibrary = _WinAPI_LoadLibrary("Shell32.dll")
$hBitmap = _WinAPI_LoadBitmap($hLibrary, 131)
_WinAPI_FreeLibrary($hLibrary)

$hGUI = GUICreate("Test", 400, 300)
GUISetState()

$hBmp = _GDIPlus_BitmapCreateFromHBITMAP($hBitmap)
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)

_GDIPlus_GraphicsDrawImage($hGraphic, $hBmp, 0, 0)

_GDIPlus_BitmapDispose($hBmp)
_GDIPlus_GraphicsDispose($hGraphic)

Do
Until guiGetMsg() = -3

_GDIPlus_Shutdown()

评分

参与人数 1金钱 +15 贡献 +5 收起 理由
lynfr8 + 15 + 5 原创内容,感谢你对论坛的支持;希望继续发 ...

查看全部评分

发表于 2009-5-17 22:45:21 | 显示全部楼层
本帖最后由 lynfr8 于 2009-5-17 22:47 编辑

完美通过测试
学到新东西了
谢谢楼上的赐教
发表于 2009-5-18 15:36:50 | 显示全部楼层
7# pusofalse


有个问题,最小化窗口,再打开,图片就没了.
发表于 2009-5-18 16:21:49 | 显示全部楼层
Re itijl:
是的,这样的问题在我学习GDI函数以来一直困扰着我,帮助文件的几个例子也存在此问题。用最笨的方法吧,复原窗口后再重绘一次,应该还有别的方法。
#include <WinAPI.au3>
#include <GDIPlus.au3>
#include <GUIConstants.au3>

_GDIPlus_Startup()

$hLibrary = _WinAPI_LoadLibrary("Shell32.dll")
$hBitmap = _WinAPI_LoadBitmap($hLibrary, 131)
_WinAPI_FreeLibrary($hLibrary)

$hGUI = GUICreate("Test", 400, 300)
GUISetState()

$hBmp = _GDIPlus_BitmapCreateFromHBITMAP($hBitmap)
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
_GDIPlus_GraphicsDrawImage($hGraphic, $hBmp, 0, 0)


Do
        $iMsg = guiGetMsg()
        if $iMsg = $GUI_EVENT_RESTORE Then
                _GDIPlus_GraphicsDrawImage($hGraphic, $hBmp, 0, 0)
        EndIf
Until        $iMsg  = -3

_GDIPlus_BitmapDispose($hBmp)
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_Shutdown()
发表于 2009-5-18 17:49:57 | 显示全部楼层
发表于 2009-5-19 00:25:20 | 显示全部楼层
10# pusofalse


谢谢这位朋友。
发表于 2009-5-19 00:25:33 | 显示全部楼层
11# autoit3CN


这位兄弟能支持新版吗?
发表于 2009-5-19 02:48:44 | 显示全部楼层
11# autoit3CN


这位兄弟能支持新版吗?
itljl 发表于 2009-5-19 00:25

可以调用啊
发表于 2009-5-19 03:50:32 | 显示全部楼层
GUI方面的.先记下行
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-10-3 12:25 , Processed in 0.091616 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表