PDA

Показать полную графическую версию : Элемент Label в качестве кнопки


FlatX007
19-09-2009, 08:48
Как назначить элемент Label в качестве кнопки и чтобы при наведении курсора надпись стала подчёркнутой? :search:

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

Diamond
20-09-2009, 04:50
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. Возможно, есть и другие способы.




© OSzone.net 2001-2012