如何使一个按钮完全透明(看不见),但鼠标移过去可以点击?
大哥大嫂们,问个事!如何使一个按钮完全透明(看不见),但鼠标移过去可以点击?
试了:
$Button_01 = GUICtrlCreateButton("", 100, 349, 30, 20, -1)
GUICtrlSetCursor(-1, 0)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
但控件变成了黑色底不是完全透明的!
用这个,但没点击的热区!
$Button_01 = GUICtrlCreateLabel("", 100, 349, 30, 20, -1)
GUICtrlSetCursor(-1, 0)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
不知道大家能不能明白我所说的!
[ 本帖最后由 破帽遮颜 于 2008-5-19 21:18 编辑 ] 完全透明,只是按钮看不见, 但是按钮文字可以看见??
如果是的话,用GUIRegisterMsg+ label估计可以 原帖由 llztt 于 2008-5-17 00:48 发表 http://www.autoitx.com/images/common/back.gif
完全透明,只是按钮看不见, 但是按钮文字可以看见??
如果是的话,用GUIRegisterMsg+ label估计可以
不是~不要文字!反正啥都没! 如果100%透明,那么操作也是透明的。
干吗非要用鼠标去点击呢?很多替代的办法的啊
1.可以用controlclick()
2.可以借助_ispressed()+controlclick() 借助特定键(热键)来模拟点击啊。 原帖由 jiataifeng 于 2008-5-17 01:12 发表 http://www.autoitx.com/images/common/back.gif
如果100%透明,那么操作也是透明的。
干吗非要用鼠标去点击呢?很多替代的办法的啊
1.可以用controlclick()
2.可以借助_ispressed()+controlclick() 借助特定键(热键)来模拟点击啊。
:face (36): :face (36): :face (36): 唉,还是没什么收获!想不到什么法子了! 继续等待牛人的出现! 这样行不?按钮在“我”字下方不远处,点击后就会打开注册表
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 221, 194, 193, 125)
$Label1 = GUICtrlCreateLabel("", 80, 104, 36, 17)
$Button1 = GUICtrlCreateButton("点我下方", 64, 56, 81, 25, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Label1
Run(@WindowsDir &"\regedit.exe")
EndSwitch
WEnd 问题是这样就无效了!
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
$Form1 = GUICreate("Form1", 221, 194, 193, 125, $WS_POPUP,$WS_EX_LAYERED,$WS_EX_TOOLWINDOW)
GUISetBkColor(0xABCDEF)
_API_SetLayeredWindowAttributes($Form1, 0xABCDEF)
$Label1 = GUICtrlCreateLabel("", 80, 104, 100, 100)
GUICtrlSetCursor(-1, 0)
GUICtrlCreateButton("点我下方", 80, 60, 60, 20)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Label1
Run(@WindowsDir & "\regedit.exe")
EndSwitch
WEnd
Func _API_SetLayeredWindowAttributes($hwnd, $i_transcolor, $Transparency = 255, $isColorRef = False)
Local Const $AC_SRC_ALPHA = 1
Local Const $ULW_ALPHA = 2
Local Const $LWA_ALPHA = 0x2
Local Const $LWA_COLORKEY = 0x1
If Not $isColorRef Then
$i_transcolor = Hex(String($i_transcolor), 6)
$i_transcolor = Execute('0x00' & _
StringMid($i_transcolor, 5, 2) & StringMid($i_transcolor, 3, 2) & StringMid($i_transcolor, 1, 2))
EndIf
Local $Ret = DllCall("user32.dll", "int", "SetLayeredWindowAttributes", "hwnd", $hwnd, _
"long", $i_transcolor, "byte", $Transparency, "long", $LWA_COLORKEY + $LWA_ALPHA)
Select
Case @error
Return SetError(@error, 0, 0)
Case $Ret = 0
Return SetError(4, 0, 0)
Case Else
Return 1
EndSelect
EndFunc 不用那么麻烦
问题已经解决了
楼主参考我的帖子中 Lable 的透明按钮就OK了
http://www.autoitx.com/forum.php?mod=viewthread&tid=695
回复 11# Bone 的帖子
对我的例子没效! 做个记号。方法很独到!回复 12# 破帽遮颜 的帖子
设置按钮透明后是无法触发点击事件的既然你是要一个透明的按钮来点击
用一个透明的LABLE来点击也是可以的
我原先也是使用的BUTTON 后来改的LABLE 原帖由 Bone 于 2008-5-19 20:06 发表 http://www.autoitx.com/images/common/back.gif
设置按钮透明后是无法触发点击事件的
既然你是要一个透明的按钮来点击
用一个透明的LABLE来点击也是可以的
我原先也是使用的BUTTON 后来改的LABLE
呵呵~我明白你的意思!问题是这样的控件在那个透明的GUI上是不起效的!
我用了另外的方法解决了! 用的什么方法解决的?不妨发个例子,必竟这么多人关注这个贴子....
页:
[1]
2