Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert sind; Die von diesem Forum gesetzten Cookies düfen nur auf dieser Website verwendet werden und stellen kein Sicherheitsrisiko dar. Cookies auf diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Zeit ändern per MouseWheel
#1
Information 
Für meine Digitaluhr habe ich ja die Alarmzeit per MouseWheel einstellbar gemacht.
Falls ihr so etwas auch machen wollt, hier mal ein kleines, kommentiertes Minimal-Beispiel:

#include <GUIConstantsEx.au3>
#include <WinAPIGdi.au3>
#include <WindowsConstants.au3>

Global $hGui = GUICreate('Zeit ändern per MouseWheel', 350, 200)
Global $aidClock[3]
For $i = 0 To 2
    $aidClock[$i] = GUICtrlCreateLabel('00', 60 + $i * 80, 20, 50, 44)
    GUICtrlSetFont(-1, 32, 800, 0, 'Courier New')
Next
GUICtrlCreateLabel(':', 112, 20, 26, 44)
GUICtrlSetFont(-1, 32, 400, 0, 'Courier New')
GUICtrlCreateLabel(':', 192, 20, 26, 44)
GUICtrlSetFont(-1, 32, 400, 0, 'Courier New')

GUISetState()
GUIRegisterMsg($WM_MOUSEWHEEL, '_WM_MOUSEWHEEL')
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE

Func _WM_MOUSEWHEEL($hWnd, $iMsg, $wParam, $lParam)
    Local Const $aMaxVal[3] = [23, 59, 59], $iWheelDelta = 120
    Local $iWheel, $aGuiInfo, $iIndex, $iValue
    $iWheel = _WinAPI_HiWord($wParam) / $iWheelDelta ; HiWord(wParam) / WheelDelta ergibt down = -1, up = 1
    $aGuiInfo = GUIGetCursorInfo($hWnd) ; $aGuiInfo[4] enthaelt die Ctrl-ID vom Control unter dem Mauszeiger
    $iIndex = $aGuiInfo[4] - $aidClock[0] ; minus der Ctrl-ID vom ersten Label ergibt 0...2 fuer die Clock-Labels
    If $iIndex < 0 Or $iIndex > 2 Then Return $GUI_RUNDEFMSG ; wenn Mauszeiger ausserhalb, dann Funktion verlassen
    $iValue = GUICtrlRead($aidClock[$iIndex]) + $iWheel ; Wert auslesen und Wheelwert (-1 oder 1) addieren
    If $iValue > $aMaxVal[$iIndex] Then $iValue = 0 ; wenn neuer Wert groesser als Maximalwert, dann 0
    If $iValue < 0 Then $iValue = $aMaxVal[$iIndex] ; wenn neuer Wert kleiner als 0, dann Maximalwert
    _WinAPI_LockWindowUpdate($hWnd) ; WindowUpdate blockieren (verhindert das flackern beim aendern der Werte)
    GUICtrlSetData($aidClock[$iIndex], StringFormat('%02i', $iValue)) ; neuen Wert setzen
    _WinAPI_LockWindowUpdate(0) ; WindowUpdate wieder freigeben
    Return $GUI_RUNDEFMSG
EndFunc   ;==>_WM_MOUSEWHEEL

Hinweise:
Ich benutze für den Arduino die Arduino-IDE.
Für AutoIt benutze ich die aktuelle AutoIt-Version sowie SciTE4AutoIt3.
Eine Hilfe kann ich nur auf Basis dieser Software leisten.
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste