xms77
发表于 2012-12-4 19:55:27
回复 1# komaau3
这个要好好研究之,深入浅出滴!
sunafter
发表于 2012-12-4 22:34:19
为什么我打不开呢,提示函数名重复了
xx44t10
发表于 2012-12-4 23:08:49
这个很漂亮的说……呵呵。顶一下
gzh888666
发表于 2012-12-5 02:45:18
本帖最后由 gzh888666 于 2012-12-5 02:57 编辑
提示WinAPIEx_Lite里的函数全部重复!如何解决呀?很喜欢这个!希望能解决一下!
weeks1
发表于 2012-12-5 06:18:28
学习一下啊,,,
seniors
发表于 2012-12-5 08:37:42
回复seniors
恩么这也是我想做的 哈哈 一点一点完善 期待大侠作品早日诞生
另外还有个问题 就是 ...
komaau3 发表于 2012-12-4 19:39 http://www.autoitx.com/images/common/back.gif
同一图片也有例子,http://www.autoitx.com/thread-33574-1-1.html
只是那个例子中,我没有用GDI+,而是用了GDI
fuldho
发表于 2012-12-5 13:08:26
学会了山寨,山寨,山寨
lynfr8
发表于 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
$Ret = DllCall('gdi32.dll', 'hwnd', 'CreateCompatibleDC', 'hwnd', $hDC)
$hDestDC = $Ret
$Ret = DllCall('gdi32.dll', 'hwnd', 'SelectObject', 'hwnd', $hDestDC, 'ptr', $hBitmap)
$hDestSv = $Ret
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 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) 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) Then
Return SetError(1, 0, 0)
EndIf
Return $Ret
EndFunc ;==>_WinAPI_CopyImage
然后 将 自绘窗口_UDF.au3 里相对应的原冲突函数改为上面的函数即可
小凯
发表于 2012-12-5 17:05:15
彻底是服了...得慢慢看,,不然会头晕的!!{:face (301):}
komaau3
发表于 2012-12-5 19:10:25
回复 19# gzh888666
估计是版本问题把 可以使用lynfr8前辈的方法 不过最好能更新下au3版本
3.3.9.4 SVN的库比较标准
auto
发表于 2012-12-6 13:55:58
两位都是高手。。。我们都捡现成的。。
正在用seniors的仿360.。自己加了TAB。。还没完成。。
chentuyu1203
发表于 2012-12-6 14:20:39
太强大了{:face (356):}
komaau3
发表于 2012-12-6 18:03:43
回复 26# auto
大家共同完善,让自绘控件更丰富
herjok1
发表于 2012-12-7 13:19:34
潜力啊。学习学习。。
cvwyg
发表于 2012-12-7 20:48:37
不错~~感谢分享~~~~!!!!