找回密码
 加入
搜索
查看: 6160|回复: 19

如何使一个按钮完全透明(看不见),但鼠标移过去可以点击?

[复制链接]
发表于 2008-5-17 00:34:11 | 显示全部楼层 |阅读模式
大哥大嫂们,问个事!

如何使一个按钮完全透明(看不见),但鼠标移过去可以点击?

试了:

$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 编辑 ]
发表于 2008-5-17 00:48:26 | 显示全部楼层
完全透明,只是按钮看不见, 但是按钮文字可以看见??
如果是的话,用GUIRegisterMsg+ label估计可以
 楼主| 发表于 2008-5-17 00:53:36 | 显示全部楼层
原帖由 llztt 于 2008-5-17 00:48 发表
完全透明,只是按钮看不见, 但是按钮文字可以看见??
如果是的话,用GUIRegisterMsg+ label估计可以


不是~不要文字!反正啥都没!
发表于 2008-5-17 01:12:38 | 显示全部楼层
如果100%透明,那么操作也是透明的。
干吗非要用鼠标去点击呢?很多替代的办法的啊
1.可以用controlclick()
2.可以借助_ispressed()+controlclick() 借助特定键(热键)来模拟点击啊。
 楼主| 发表于 2008-5-17 01:23:04 | 显示全部楼层
原帖由 jiataifeng 于 2008-5-17 01:12 发表
如果100%透明,那么操作也是透明的。
干吗非要用鼠标去点击呢?很多替代的办法的啊
1.可以用controlclick()
2.可以借助_ispressed()+controlclick() 借助特定键(热键)来模拟点击啊。

 楼主| 发表于 2008-5-17 07:06:08 | 显示全部楼层
唉,还是没什么收获!想不到什么法子了!
 楼主| 发表于 2008-5-17 14:16:10 | 显示全部楼层
继续等待牛人的出现!
发表于 2008-5-17 14:43:15 | 显示全部楼层
这样行不?按钮在“我”字下方不远处,点击后就会打开注册表

#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
 楼主| 发表于 2008-5-17 15:09:22 | 显示全部楼层
问题是这样就无效了!

#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] = 0
                        Return SetError(4, 0, 0)
                Case Else
                        Return 1
        EndSelect
EndFunc
发表于 2008-5-19 14:06:47 | 显示全部楼层
不用那么麻烦
问题已经解决了
楼主参考我的帖子中 Lable 的透明按钮就OK了
http://www.autoitx.com/forum.php?mod=viewthread&tid=695
 楼主| 发表于 2008-5-19 15:24:51 | 显示全部楼层

回复 11# Bone 的帖子

对我的例子没效!
发表于 2008-5-19 15:27:41 | 显示全部楼层
做个记号。方法很独到!
发表于 2008-5-19 20:06:21 | 显示全部楼层

回复 12# 破帽遮颜 的帖子

设置按钮透明后是无法触发点击事件的
既然你是要一个透明的按钮来点击
用一个透明的LABLE来点击也是可以的
我原先也是使用的BUTTON 后来改的LABLE
 楼主| 发表于 2008-5-19 21:18:13 | 显示全部楼层
原帖由 Bone 于 2008-5-19 20:06 发表
设置按钮透明后是无法触发点击事件的
既然你是要一个透明的按钮来点击
用一个透明的LABLE来点击也是可以的
我原先也是使用的BUTTON 后来改的LABLE


呵呵~我明白你的意思!问题是这样的控件在那个透明的GUI上是不起效的!
我用了另外的方法解决了!
发表于 2008-5-19 22:50:03 | 显示全部楼层
用的什么方法解决的?不妨发个例子,必竟这么多人关注这个贴子....
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-10-1 12:19 , Processed in 0.104975 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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