找回密码
 加入
搜索
查看: 2000|回复: 4

[AU3基础] [已解决]GUIGetCursorInfo 为何无法实现效果

[复制链接]
发表于 2011-4-10 22:08:04 | 显示全部楼层 |阅读模式
本帖最后由 duyan 于 2011-4-11 00:13 编辑
#include <GUIConstantsEx.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
Dim $CLA = 0
Dim $CLA2 = 0
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 320, 280, 192, 124)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
$Tab1 = GUICtrlCreateTab(8, 16, 289, 193)
$TabSheet1 = GUICtrlCreateTabItem("TabSheet1")
GUICtrlSetState(-1,$GUI_SHOW)
$Graphic = GUICtrlCreateGraphic(110, 120, 100, 30, $WS_BORDER)
$TabSheet2 = GUICtrlCreateTabItem("TabSheet2")
$TabSheet3 = GUICtrlCreateTabItem("TabSheet3")
$TabSheet4 = GUICtrlCreateTabItem("TabSheet4")

GUICtrlCreateTabItem("")
$Graphic2 = GUICtrlCreateGraphic(110, 230, 100, 30, $WS_BORDER)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
GetPos()
GetPos2()
        Sleep(100)
WEnd

Func Form1Close()
Exit
EndFunc

Func GetPos()
Dim $a = GUIGetCursorInfo($Form1)
If $a[4] = $Graphic And $CLA = 0 Then
  GUICtrlSetBkColor($Graphic, 0x9CD560)
  $CLA = 1
ElseIf $a[4] <> $Graphic And $CLA = 1 Then
  GUICtrlSetBkColor($Graphic, 0xFFFFFF)
  $CLA = 0
EndIf
EndFunc   ;==>GetPos 

Func GetPos2()
Dim $a = GUIGetCursorInfo($Form1)
If $a[4] = $Graphic2 And $CLA2 = 0 Then
  GUICtrlSetBkColor($Graphic2, 0x9CD560)
  $CLA2 = 1
ElseIf $a[4] <> $Graphic2 And $CLA2 = 1 Then
  GUICtrlSetBkColor($Graphic2, 0xFFFFFF)
  $CLA2 = 0
EndIf
EndFunc   ;==>GetPos 
我想请教2个问题:
1.这段代码运行后,当鼠标移过下面的 Graphic 时可以变色,但移过上面的就是在 Tab 里面的 Graphic 时却没有效果,请问是哪里错了?
2.如果我不想让鼠标移过时变色,而是想让鼠标点击 Graphic 时变色,这段代码该如何改?
谢谢!
发表于 2011-4-10 22:17:55 | 显示全部楼层
看下GUIGETCURSORINFO返回的值不就知道了…第二个问题,graphic控件可以点击,看帮助
 楼主| 发表于 2011-4-10 22:22:42 | 显示全部楼层
不好意思,我是新手,楼上能就第一个问题说得具体点吗?非常感谢您及时的回复!
发表于 2011-4-10 23:54:16 | 显示全部楼层
Tab 里面的 Graphic 背景色确实不能这么set
改用Label,2个问题一并解决如下
#include <GUIConstantsEx.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
Dim $CLA = 0, $CLA2 = 1, $color[2] = [0x9CD560, 0xFFFFFF]
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 320, 280, 192, 124)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
$Tab1 = GUICtrlCreateTab(8, 16, 289, 193)
$TabSheet1 = GUICtrlCreateTabItem("TabSheet1")
$Graphic = GUICtrlCreateLabel('悬停', 110, 120, 100, 30, 0x201 + 0x00800000)
$TabSheet2 = GUICtrlCreateTabItem("TabSheet2")
$TabSheet3 = GUICtrlCreateTabItem("TabSheet3")
$TabSheet4 = GUICtrlCreateTabItem("TabSheet4")
GUICtrlCreateTabItem("")
$Graphic2 = GUICtrlCreateLabel('点击', 110, 230, 100, 30, 0x201 + 0x00800000)
GUICtrlSetOnEvent(-1, "_click")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        GetPos()
        Sleep(100)
WEnd

Func Form1Close()
        Exit
EndFunc   ;==>Form1Close

Func GetPos()
        Local $a = GUIGetCursorInfo($Form1)
        If $a[4] = $Graphic And $CLA = 0 Then
                GUICtrlSetBkColor($Graphic, 0x9CD560)
                $CLA = 1
        ElseIf $a[4] <> $Graphic And $CLA = 1 Then
                GUICtrlSetBkColor($Graphic, 0xFFFFFF)
                $CLA = 0
        EndIf
EndFunc   ;==>GetPos

Func _click()
        $CLA2 = Abs($CLA2 - 1)
        GUICtrlSetBkColor($Graphic2, $color[$CLA2])
EndFunc   ;==>_click
 楼主| 发表于 2011-4-11 00:11:59 | 显示全部楼层
试过了,问题圆满解决。非常感谢楼上的鼎力帮助!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-10-2 08:31 , Processed in 0.084025 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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