298311657 发表于 2009-4-26 15:59:59

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

写GUI时,会用到一些背景按钮之类的图片,因为数量比较多,所以使用fileinstall很不方便,释放之后还有删除。
因此想请教下如何调用DLL中的图片。如果可以调用的话,就可以把所有的图片打包到DLL中使用了,这样就会方便很多。
在帮助中看到GUICtrlCreateIcon函数可以调用DLL里的图标,但是GUICtrlCreatePic是否不能调用DLL中的图片,也不知是我不懂还是确实不能调用~
有哪位大侠知道如何调用DLL中的图片吗?请教!!!

298311657 发表于 2009-5-17 12:41:55

一直无人回答~~大侠哪里去了??

lynfr8 发表于 2009-5-17 17:32:00

本帖最后由 lynfr8 于 2009-8-15 14:56 编辑

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


-----------------------------
7楼已经给出可行方法
事实再一次证明我是菜鸟
呵呵~~~
谢谢7楼:face (20):

rho123 发表于 2009-5-17 19:29:03

{:2_72:}应该是可以吧 不过我不会

pusofalse 发表于 2009-5-17 22:05:38

_WinAPI_LoadImage
_GDIPlus_GraphicsDrawImage
_GDIPlus_BitmapCreateFromHBITMAP
_GDIPlus_GraphicsCreateFromHWND

大概会用到这4个函数。

lynfr8 发表于 2009-5-17 22:09:13

_WinAPI_LoadImage
_GDIPlus_GraphicsDrawImage
_GDIPlus_BitmapCreateFromHBITMAP
_GDIPlus_GraphicsCreateFromHWND

大概会用到这4个函数。
pusofalse 发表于 2009-5-17 22:05 http://www.autoitx.com/images/common/back.gif

如果你知道怎么调用
请写个演示出来让大家学习下
-------------------------
注意
是请求
不是要求

pusofalse 发表于 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()

lynfr8 发表于 2009-5-17 22:45:21

本帖最后由 lynfr8 于 2009-5-17 22:47 编辑

完美通过测试
学到新东西了
谢谢楼上的赐教

itljl 发表于 2009-5-18 15:36:50

7# pusofalse


有个问题,最小化窗口,再打开,图片就没了.

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()

autoit3CN 发表于 2009-5-18 17:49:57

http://www.autoitx.com/forum.php?mod=viewthread&tid=1519嵌入文件释放和引用

itljl 发表于 2009-5-19 00:25:20

10# pusofalse


谢谢这位朋友。

itljl 发表于 2009-5-19 00:25:33

11# autoit3CN


这位兄弟能支持新版吗?

autoit3CN 发表于 2009-5-19 02:48:44

11# autoit3CN


这位兄弟能支持新版吗?
itljl 发表于 2009-5-19 00:25 http://www.autoitx.com/images/common/back.gif
可以调用啊

yykj 发表于 2009-5-19 03:50:32

GUI方面的.先记下行
页: [1] 2
查看完整版本: 如何调用DLL中的图片~不是图标~