Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   Элемент Label в качестве кнопки (http://forum.oszone.net/showthread.php?t=150920)

FlatX007 19-09-2009 08:48 1222288

Элемент Label в качестве кнопки
 
Как назначить элемент Label в качестве кнопки и чтобы при наведении курсора надпись стала подчёркнутой? :search:

266903582 19-09-2009 19:53 1222712

GUIGetCursorInfo тебе в помощь.
Отловишь положение курсора в нужной области, поменяешь шрифт ф-ей GUICtrlSetFont, а при нажатой кнопке мыши выполнишь нужное действие...

Diamond 20-09-2009 04:50 1222984

FlatX007,
Можно через
GUIGetCursorInfo
Код:

#include <GuiConstants.au3>

Global $fLabelMouseOver

$hGui = GUICreate("Test GUIGetCursorInfo", 320, 240)

$CtrlID_Label  = GUICtrlCreateLabel("LabelText",20, 20)
GUICtrlSetFont(-1, 10, Default, 0)

GUISetState()

While 1
    $msg = GUIGetMsg()
    $aCursorInfo = GUIGetCursorInfo($hGui)
    If Not @error Then
        If $aCursorInfo[4] = $CtrlID_Label Then
            If Not $fLabelMouseOver Then
                GUICtrlSetFont($CtrlID_Label, 10, Default, 4)
                $fLabelMouseOver = True
            EndIf
        ElseIf $fLabelMouseOver Then
            GUICtrlSetFont($CtrlID_Label, 10, Default, 0)
            $fLabelMouseOver = False
        EndIf
    EndIf
    Switch $msg
    Case $CtrlID_Label
        ;-----------       
    Case $GUI_EVENT_CLOSE
        Exit
    EndSwitch
WEnd

или
WM_SETCURSOR

Код:

#include <GuiConstants.au3>
#include <WindowsConstants.au3>

Global $fLabelMouseOver

$hGui = GUICreate("Test WM_SETCURSOR", 320, 240)

$CtrlID_Label = GUICtrlCreateLabel("LabelText", 20, 20)
GUICtrlSetFont(-1, 10, Default, 0)
$hLabel = GUICtrlGetHandle(-1)
GUIRegisterMsg($WM_SETCURSOR, "WM_SETCURSOR")
GUISetState()

While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $CtrlID_Label
        ;-----------   
    Case $GUI_EVENT_CLOSE
        Exit
    EndSwitch
WEnd

Func WM_SETCURSOR($HWnd, $MsgID, $wParam, $lParam)
    Local $iHitTest = BitAND($lParam, 0xFFFF) ;LoWord
    Local $iMouseEvent = BitShift($lParam, 16) ;HiWord
    If $wParam = $hLabel Then
        If Not $fLabelMouseOver Then
            GUICtrlSetFont($CtrlID_Label, 10, Default, 4)
            $fLabelMouseOver = True
        EndIf
    ElseIf $fLabelMouseOver Then
        GUICtrlSetFont($CtrlID_Label, 10, Default, 0)
        $fLabelMouseOver = False
    EndIf
    Return $GUI_RUNDEFMSG
EndFunc



P.S. Возможно, есть и другие способы.


Время: 05:23.

Время: 05:23.
© OSzone.net 2001-