找回密码
 加入
搜索
查看: 3642|回复: 10

[AU3基础] 如何讓鼠標移到指定Label後會有不同的動畫?

  [复制链接]
发表于 2015-4-27 09:44:17 | 显示全部楼层 |阅读模式
如題
如果要使鼠標移到Label1後會呈現執行執行的效果需要怎麼寫?
目前想到要使用GUISetCursor()
附上源碼
GUICreate("e-Doctor",900,600)  ; 將建立一個置中顯示的對話框
GUISetBkColor (0xFFFFFF)
GUISetIcon ("C:\Program Files\MIS_TOOL\MIS_Tool_ICO\tab_rmvbsafe.ico")
GUICtrlCreatePic("C:\Program Files\MIS_TOOL\MIS_Tool_ICO\eDoctor.jpg",0, 0, 900, 600)
GUICtrlSetState(-1,$GUI_DISABLE);將背景圖設定為非元件

$Label1= GuiCtrlCreateLabel("",59,63,144,40)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT);將Label設定透明

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Label1
                       ShellExecute ("C:\Program Files\MIS_TOOL\7zip.chm")
        EndSwitch
WEnd
发表于 2015-4-27 10:02:05 | 显示全部楼层
回复 1# FMP

给个汉化的外码你自己参考研究:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>

Global $assot[19][2] = [ _
[1, '1 - 窗口客户区'], _
[2, '2 - 窗口标题栏'], _
[3, '3 - 窗口图标'], _
[5, '5 - 窗口菜单'], _
[6, '6 - 水平滚动条'], _
[7, '7 - 垂直滚动条'], _
[8, '8 - 窗口最小化按钮'], _
[9, '9 - 窗口最大化按钮'], _
[10, '10 - 窗口左边框'], _
[11, '11 - 窗口右边框'], _
[12, '12 - 窗口顶边框'], _
[13, '13 - 窗口左上角'], _
[14, '14 - 窗口右上角'], _
[15, '15 - 窗口底边框'], _
[16, '16 - 窗口左下角'], _
[17, '17 - 窗口右下角'], _
[18, '18 - 窗口框架'], _ ; 如果不改变窗口大小样式 (-1)
[20, '20 - 窗口关闭按钮'], _
[21, '21 - 窗口问号符']]

Global $k = 0, $Byfer
$hGui = GUICreate("WM_SETCURSOR", 510, 140, -1, -1, BitOR($WS_OVERLAPPEDWINDOW, $WS_HSCROLL, $WS_VSCROLL), $WS_EX_TOPMOST)
GUICtrlCreateLabel('滑动窗口鼠标光标时发送 WM_SETCURSOR 消息.', 5, 3, 400, 17)
$Button = GUICtrlCreateButton('按钮', 10, 25, 70, 25)
$Button = GUICtrlCreateButton('按钮2', 90, 25, 70, 25)


$StatusBar = GUICtrlCreateLabel('123', 5, 55, 270, 74)
GUISetState()

GUIRegisterMsg($WM_SETCURSOR, "WM_SETCURSOR")

Do
Until GUIGetMsg() = -3

Func WM_SETCURSOR($hWnd, $Msg, $wParam, $lParam)
    $k += 1
    $Hittest = BitAND($lParam, 0xFFFF) ; _WinAPI_LoWord 低位字
    $MouseMsg = BitShift($lParam, 16) ; _WinAPI_HiWord 高位字
    WinSetTitle($hGui, '', '消息发生次数: ' & $k)

    $info_ID = '?'
    For $i = 0 To 18
        If $Hittest = $assot[$i][0] Then
            $info_ID = $assot[$i][1]
            ExitLoop
        EndIf
    Next
    $Tmp = $info_ID & @LF & '句柄 = ' & $wParam & @LF & '控件 ID = ' & _WinAPI_GetDlgCtrlID($wParam) & @CRLF & '鼠标消息 = ' & $MouseMsg
    If $Tmp <> $Byfer Then
        GUICtrlSetData($StatusBar, $Tmp)
        $Byfer = $Tmp
    EndIf
    Return $GUI_RUNDEFMSG
EndFunc
发表于 2015-4-27 10:39:58 | 显示全部楼层
本帖最后由 netegg 于 2015-4-27 10:41 编辑

用不着消息这么麻烦吧
就算用,好像也是hover,和curser应该关系不大
发表于 2015-4-27 10:42:32 | 显示全部楼层
回复 1# FMP


    不太明白题目意思,是想鼠标移动到 Label1,光标变成忙碌状态?
发表于 2015-4-27 10:46:09 | 显示全部楼层
回复 4# yhxhappy
这有什么不明白的,类似网页里悬停链接文字的时候,鼠标变化
 楼主| 发表于 2015-4-27 10:58:44 | 显示全部楼层
表達的不夠好,造成誤會不好意思
就如同netegg所說的意思一樣'
发表于 2015-4-27 11:20:17 | 显示全部楼层
回复 6# FMP


    给Label1添加GUICtrlSetCursor不行吗?
 楼主| 发表于 2015-4-27 13:00:45 | 显示全部楼层
回复 7# yhxhappy
添加過了沒反應..
发表于 2015-4-27 17:28:03 | 显示全部楼层
回复 8# FMP

是这样效果吗?我总觉得不会这么简单,不然怎么没人回复。都不敢发了
#include <GUIConstantsEx.au3>

GUICreate("e-Doctor",900, 600)  ; 將建立一個置中顯示的對話框
GUISetBkColor (0xFFFFFF)

$Label1= GuiCtrlCreateLabel("鼠标移到此处显示忙碌",59,63,144,40)
   GUICtrlSetBkColor(-1, 0xff0000)
   GUICtrlSetCursor(-1, 15)
   ;GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT);將Label設定透明

GUISetState(@SW_SHOW)

While 1
   $nMsg = GUIGetMsg()
   Switch $nMsg
   Case $GUI_EVENT_CLOSE
          Exit
   Case $Label1
          ShellExecute ("C:\Program Files\MIS_TOOL\7zip.chm")
   EndSwitch
WEnd
发表于 2015-4-30 21:28:27 | 显示全部楼层
搜索一下,我忘了是哪个代码里有这个源码
 楼主| 发表于 2015-5-12 13:17:10 | 显示全部楼层
回复  FMP

是这样效果吗?我总觉得不会这么简单,不然怎么没人回复。都不敢发了
yhxhappy 发表于 2015-4-27 17:28


就是這樣的效果沒錯.....
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-9 23:29 , Processed in 0.080663 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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