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

不错~~感谢分享~~~~!!!!
页: 1 [2] 3 4
查看完整版本: 山寨seniors大侠的自绘窗口,向大侠致敬。