FlatX007
19-09-2009, 08:48
Как назначить элемент Label в качестве кнопки и чтобы при наведении курсора надпись стала подчёркнутой? :search:
266903582
19-09-2009, 19:53
GUIGetCursorInfo тебе в помощь.
Отловишь положение курсора в нужной области, поменяешь шрифт ф-ей GUICtrlSetFont, а при нажатой кнопке мыши выполнишь нужное действие...
FlatX007,
Можно через #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или
#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. Возможно, есть и другие способы.
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.