Das funktioniert aber leider nicht richtig, wenn man nachträglich in die Box klickt, um etwas zu ändern, da dann immer das letzte zeichen gelöscht wird.
Man könnte natürlich den RegExp nutzen, um das zu beheben... (da ich nicht so gut in regexp bin hab ich das etwas anders gelöst):
Spoiler anzeigen
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiEdit.au3>
global $oldInput
$hGui = GUICreate('Test')
$cInput = GUICtrlCreateInput('', 20, 20, 150, 20)
$hInput = GUICtrlGetHandle($cInput)
GUISetState()
GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND')
Do
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
Until 0
Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
Local $iIDFrom, $hWndEdit, $sRead, $iCode
$iIDFrom = BitAND($iwParam, 0xFFFF)
$iCode = BitShift($iwParam, 16)
$hWndEdit = GUICtrlGetHandle($iIDFrom)
If $hWndEdit = $hInput And $iCode = $EN_CHANGE Then
$sRead = GUICtrlRead($iIDFrom)
If Not StringRegExp($sRead, '^\d+,?(\d+)?$') Then
GUICtrlSetData($iIDFrom, $oldInput)
else
$oldInput=$sRead
EndIf
EndIf
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_COMMAND