找回密码
 加入
搜索
楼主: komaau3

[特效] 山寨seniors大侠的自绘窗口,向大侠致敬。

 火... [复制链接]
发表于 2012-12-4 19:55:27 | 显示全部楼层
回复 1# komaau3
这个要好好研究之,深入浅出滴!
发表于 2012-12-4 22:34:19 | 显示全部楼层
为什么我打不开呢,提示函数名重复了
发表于 2012-12-4 23:08:49 | 显示全部楼层
这个很漂亮的说……呵呵。顶一下
发表于 2012-12-5 02:45:18 | 显示全部楼层
本帖最后由 gzh888666 于 2012-12-5 02:57 编辑


提示WinAPIEx_Lite里的函数全部重复!如何解决呀?很喜欢这个!希望能解决一下!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2012-12-5 06:18:28 | 显示全部楼层
学习一下啊,,,
发表于 2012-12-5 08:37:42 | 显示全部楼层
回复  seniors

恩么  这也是我想做的 哈哈 一点一点完善 期待大侠作品早日诞生   
另外还有个问题 就是 ...
komaau3 发表于 2012-12-4 19:39

同一图片也有例子,http://www.autoitx.com/thread-33574-1-1.html
只是那个例子中,我没有用GDI+,而是用了GDI
发表于 2012-12-5 13:08:26 | 显示全部楼层
学会了山寨,山寨,山寨
发表于 2012-12-5 15:50:51 | 显示全部楼层
回复 19# gzh888666

#include-once
#Include <WinAPI.au3>

;~ 
Global Const $tagBITMAP = "long bmType;long bmWidth;long bmHeight;long 
bmWidthBytes;ushort bmPlanes;ushort bmBitsPixel;ptr bmBits;"


Func _WinAPI_UpdateLayeredWindowEx2($hWnd, $iX, $iY, $hBitmap, $iOpacity = 255, $fDelete = 0)

        Local $Ret, $tSIZE, $tPOINT, $tBLENDFUNCTION, $hDC, $hDestDC, $hDestSv

        $Ret = DllCall('user32.dll', 'hwnd', 'GetDC', 'hwnd', $hWnd)
        $hDC = $Ret[0]
        $Ret = DllCall('gdi32.dll', 'hwnd', 'CreateCompatibleDC', 'hwnd', $hDC)
        $hDestDC = $Ret[0]
        $Ret = DllCall('gdi32.dll', 'hwnd', 'SelectObject', 'hwnd', $hDestDC, 'ptr', $hBitmap)
        $hDestSv = $Ret[0]
        If ($iX = -1) And ($iY = -1) Then
                $tPOINT = DllStructCreate('int;int')
        Else
                $tPOINT = DllStructCreate('int;int;int;int')
        EndIf
        DllStructSetData($tPOINT, 1, 0)
        DllStructSetData($tPOINT, 2, 0)
        DllStructSetData($tPOINT, 3, $iX)
        DllStructSetData($tPOINT, 4, $iY)
        $tBLENDFUNCTION = DllStructCreate($tagBLENDFUNCTION)
        DllStructSetData($tBLENDFUNCTION, 1, 0)
        DllStructSetData($tBLENDFUNCTION, 2, 0)
        DllStructSetData($tBLENDFUNCTION, 3, $iOpacity)
        DllStructSetData($tBLENDFUNCTION, 4, 1)
        $tSIZE = _WinAPI_GetBitmapDimension2($hBitmap)
 
       $Ret = DllCall('user32.dll', 'int', 'UpdateLayeredWindow', 
'hwnd', $hWnd, 'hwnd', $hDC, 'ptr', DllStructGetPtr($tPOINT, 3), 'ptr', 
DllStructGetPtr($tSIZE), 'hwnd', $hDestDC, 'ptr', 
DllStructGetPtr($tPOINT), 'dword', 0, 'ptr', 
DllStructGetPtr($tBLENDFUNCTION), 'dword', 0x02)
        DllCall('user32.dll', 'int', 'ReleaseDC', 'hwnd', $hWnd, 'hwnd', $hDC)
        DllCall('gdi32.dll', 'ptr', 'SelectObject', 'hwnd', $hDestDC, 'ptr', $hDestSv)
        DllCall('gdi32.dll', 'int', 'DeleteDC', 'hwnd', $hDestDC)
        If Not $Ret[0] Then
                Return SetError(1, 0, 0)
        EndIf
        If $fDelete Then
                _WinAPI_DeleteObject($hBitmap)
        EndIf
        Return 1
EndFunc   ;==>_WinAPI_UpdateLayeredWindowEx

Func _WinAPI_GetBitmapDimension2($hBitmap)

        Local $tObj = DllStructCreate($tagBITMAP)
 
       Local $Ret = DllCall('gdi32.dll', 'int', 'GetObject', 'int', 
$hBitmap, 'int', DllStructGetSize($tObj), 'ptr', DllStructGetPtr($tObj))

        If (@error) Or (Not $Ret[0]) Then
                Return SetError(1, 0, 0)
        EndIf

        Local $tSIZE = DllStructCreate($tagSIZE)

        DllStructSetData($tSIZE, 1, DllStructGetData($tObj, 'bmWidth'))
        DllStructSetData($tSIZE, 2, DllStructGetData($tObj, 'bmHeight'))

        Return $tSIZE
EndFunc   ;==>_WinAPI_GetBitmapDimension

Func _WinAPI_CopyBitmap2($hBitmap)
        $hBitmap = _WinAPI_CopyImage2($hBitmap, 0, 0, 0, 0x2000)
        If @error Then
                Return SetError(1, 0, $hBitmap)
        EndIf
        Return $hBitmap
EndFunc   ;==>_WinAPI_CopyBitmap

Func _WinAPI_CopyImage2($hImage, $iType = 0, $xDesired = 0, $yDesired = 0, $iFlags = 0)

 
       Local $Ret = DllCall('user32.dll', 'ptr', 'CopyImage', 'ptr', 
$hImage, 'int', $iType, 'int', $xDesired, 'int', $yDesired, 'int', 
$iFlags)

        If (@error) Or (Not $Ret[0]) Then
                Return SetError(1, 0, 0)
        EndIf
        Return $Ret[0]
EndFunc   ;==>_WinAPI_CopyImage
然后 将 自绘窗口_UDF.au3 里相对应的原冲突函数改为上面的函数即可
发表于 2012-12-5 17:05:15 | 显示全部楼层
彻底是服了...得慢慢看,,不然会头晕的!!
 楼主| 发表于 2012-12-5 19:10:25 | 显示全部楼层
回复 19# gzh888666

估计是版本问题把 可以使用lynfr8前辈的方法 不过最好能更新下au3版本  

3.3.9.4 SVN的库比较标准
发表于 2012-12-6 13:55:58 | 显示全部楼层
两位都是高手。。。我们都捡现成的。。
正在用seniors的仿360.。自己加了TAB。。还没完成。。
发表于 2012-12-6 14:20:39 | 显示全部楼层
太强大了
 楼主| 发表于 2012-12-6 18:03:43 | 显示全部楼层
回复 26# auto


    大家共同完善,让自绘控件更丰富
发表于 2012-12-7 13:19:34 | 显示全部楼层
潜力啊。学习学习。。
发表于 2012-12-7 20:48:37 | 显示全部楼层
不错~~感谢分享~~~~!!!!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-20 17:05 , Processed in 0.075853 second(s), 14 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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