如何移动png透明图标窗体?
问题不知道如何总结描述,所以只能大概下吧如图
仿产品折腾个东西然后现在折腾出这个问题一直解决不了所以到此寻求各位长辈帮忙
希望在此可以得到帮忙不否就一个半成品随时间的流逝而遗忘了#RequireAdmin
#include "IconDock.au3"
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
Global Const $WS_POPUP = 0x80000000
Global Const $WS_EX_TOOLWINDOW = 0x00000080
Global Const $WS_CLIPSIBLINGS = 0x04000000
Global Const $WS_EX_MDICHILD = 0x00000040
Global Const $WM_NOTIFY = 0x0000004E
Dim $GUI
Global $iIconSizeMin = 48
Global $iIconSizeMax = 48
Global $hIconDock = _IconDock_Create(@DesktopWidth - 120, 0, $iIconSizeMax + $iIconSizeMin, @DesktopHeight+600, BitOR($IconDock_Align_Vertical, $IconDock_Center), $IconDock_Left, $iIconSizeMin, $iIconSizeMax, True)
_IconDock_SetOnActiveChange($hIconDock, "_ChangeIcon")
;_IconDock_SetAlpha($hIconDock, 1, 0.2);??
_IconDock_SetShadowOffset($hIconDock, -0.18, 0.22)
_IconDock_BeginUpdate($hIconDock)
Global $aGFX
$aGFX = _LoadIconToBitmap(@ScriptDir & "\Skin\2_1.ico", $iIconSizeMax)
$aGFX = _LoadIconToBitmap(@ScriptDir & "\Skin\2_2.ico", $iIconSizeMax)
_IconDock_IconAdd($hIconDock, 0, "_EventFunction", $IconDock_LBUTTONUP, "", 0, 0, -1)
_IconDock_IconSetBitmap($hIconDock, 1, $aGFX)
$aGFX = _LoadIconToBitmap(@ScriptDir & "\Skin\1_1.ico", $iIconSizeMax)
$aGFX = _LoadIconToBitmap(@ScriptDir & "\Skin\1_2.ico", $iIconSizeMax)
_IconDock_IconAdd($hIconDock, 0, "_EventFunction", $IconDock_LBUTTONUP, "", 0, 10, -1)
_IconDock_IconSetBitmap($hIconDock, 2, $aGFX)
_IconDock_EndUpdate($hIconDock)
GUISetState(@SW_SHOW)
$Form3 = GUICreate("123", 623, 442)
$Button2 = GUICtrlCreateButton("", 176, 176, 177, 57)
Global $bPause = False
While 1
If GUIGetMsg() = -3 Then GUIDelete($GUI)
;Sleep(100)
WEnd
Func xGUI()
$GUI = GUICreate("Form1", 299,320,@DesktopWidth - 370 , @DesktopHeight - 420)
GUISetState(@SW_SHOW)
EndFunc
Func _LoadIconToBitmap($sFile, $iSize)
Local $hIcon = _WinAPI_ShellExtractIcon($sFile, 0, $iSize, $iSize)
Local $hBitmap = _IconDock_GetBitmapFromHIcon($hIcon, $iSize, $iSize)
_WinAPI_DestroyIcon($hIcon)
Return $hBitmap
EndFunc ;==>_LoadIconToBitmap
Func _ChangeIcon($hID, $iIconIndex)
Local Static $iOldIndex = $iIconIndex
Local $iPlus = 0
If $iOldIndex = 2 And $bPause = True Then $iPlus = 2
_IconDock_IconSetBitmap($hID, $iOldIndex, $aGFX[$iOldIndex + $iPlus])
If $iPlus = 0 Then
;If Not WinActive("Form1","") Then
GUIDelete($GUI)
;EndIf
EndIf
$iPlus = 0
If $iIconIndex = 2 And $bPause = True Then $iPlus = 2
_IconDock_IconSetBitmap($hID, $iIconIndex, $aGFX[$iIconIndex + $iPlus])
$iOldIndex = $iIconIndex
If $iIconIndex = 1 Then
If Not WinExists("Form1") Then xGUI()
EndIf
EndFunc ;==>_ChangeIcon
Func _EventFunction($hID, $iIconIndex, $iEventMsg)
Switch $hID
Case $hIconDock
Switch $iIconIndex
Case 1
GUIDelete($GUI)
ShellExecute("http://www.baidu.com")
Case 2
EndSwitch
EndSwitch
EndFunc ;==>_EventFunction
Func _Exit()
_IconDock_Destroy($hIconDock)
For $i = 1 To 8
_GDIPlus_BitmapDispose($aGFX[$i])
_GDIPlus_BitmapDispose($aGFX[$i])
Next
Exit
EndFunc ;==>_Exit
Func _WinAPI_ShellExtractIcon($sIcon, $iIndex, $iWidth, $iHeight)
Local $Ret = DllCall('shell32.dll', 'int', 'SHExtractIconsW', 'wstr', $sIcon, 'int', $iIndex, 'int', $iWidth, 'int', $iHeight, 'ptr*', 0, 'ptr*', 0, 'int', 1, 'int', 0)
If (@error) Or (Not $Ret) Or (Not $Ret) Then
Return SetError(1, 0, 0)
EndIf
Return $Ret
EndFunc ;==>_WinAPI_ShellExtractIcon
这是用3.3.6 弄的
问题:
1.当鼠标移动到IE的图标时弹出了 窗口 $GUI
那么当鼠标离开IE图标且不在窗口$GUI上时,自动删除隐藏窗口$GUI,
反当鼠标离开IE图标但在窗口$GUI上时,那么就等待$gui上的操作
----现在我怎么弄都是鼠标一离开IE图标就马上自动删除窗口GUI...求救!
2.如何才能时候鼠标单击拖动下面那个图标的时候可以把这两个图标的位置随意移动
3.当拖动到屏幕最右边的时候是否可以自动隐藏进去,就剩下显示一点点,当鼠标划过去的时候又可以自动弹出?
这个东西琢磨了好长时间了,一有时间就拿出来玩玩 但仍然无法解决
今天试着拿上来给各位前辈看看能否解决这个问题
谢谢
用的是3.3.6版本弄的,用搞版本好像有问题
附件
QQ 自动停靠 自动显隐 && VS2012 按钮三态 鼠标悬停
看我的帖子吧.你说的功能我帖子的代码几乎全可以实现 回复 2# Ycxw2008
看了下 列子有点差距 谢谢你的回答{:face (382):}
页:
[1]