#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <WindowsConstants.au3>
GUICreate('_GUICtrlEdit_SetDefault', 300, 200)
Global $EDIT_DEF_ITEMS[1][2] = [[0, 0]]
$nEdit1 = GUICtrlCreateInput('', 5, 5, 100, 20)
_GUICtrlEdit_SetDefault($nEdit1, 'This is the test', 0xFFC1C1, 0x0000FF)
$nEdit2 = GUICtrlCreateInput('', 5, 30, 100, 20)
_GUICtrlEdit_SetDefault($nEdit2, 'Take 2', 0x989898)
$nEdit3 = GUICtrlCreateEdit('', 5, 60, 200, 100)
_GUICtrlEdit_SetDefault($nEdit3, 'Multiline Edit', 0xA5D1D1)
GUICtrlCreateInput('Just a standard input', 5, 170, 200, 20)
GUICtrlSetState(-1, $GUI_FOCUS)
GUISetState()
While GUIGetMsg() <> -3
WEnd
Func _GUICtrlEdit_SetDefault($hEdit, $sDefText, $nDefColor = 0x989898, $nTextColor = 0x000000)
If $hEdit = 0 Then
Return SetError(1, 0, 0)
EndIf
If $EDIT_DEF_ITEMS[0][0] = 0 Then
GUIRegisterMsg($WM_COMMAND, '__EDIT_DEF_WM_COMMAND')
EndIf
If GUICtrlRead($hEdit) = '' Then
GUICtrlSetColor($hEdit, $nDefColor)
GUICtrlSetData($hEdit, $sDefText)
EndIf
$EDIT_DEF_ITEMS[0][0] += 1
ReDim $EDIT_DEF_ITEMS[$EDIT_DEF_ITEMS[0][0] + 1][4]
$EDIT_DEF_ITEMS[$EDIT_DEF_ITEMS[0][0]][0] = $hEdit
$EDIT_DEF_ITEMS[$EDIT_DEF_ITEMS[0][0]][1] = $sDefText
$EDIT_DEF_ITEMS[$EDIT_DEF_ITEMS[0][0]][2] = $nDefColor
$EDIT_DEF_ITEMS[$EDIT_DEF_ITEMS[0][0]][3] = $nTextColor
Return 1
EndFunc
Func __EDIT_DEF_WM_COMMAND($hWnd, $msgID, $wParam, $lParam)
Local $n = __EDIT_DEF_GETINDEX(BitAND($wParam, 0xFFFF))
If $n = -1 Then
Return $GUI_RUNDEFMSG
EndIf
Local $nMsg = BitShift($wParam, 16)
If $nMsg = $EN_SETFOCUS Then ; Gained focus (EN_SETFOCUS)
If (GUICtrlRead($EDIT_DEF_ITEMS[$n][0]) == $EDIT_DEF_ITEMS[$n][1]) Then
GUICtrlSetColor($EDIT_DEF_ITEMS[$n][0], $EDIT_DEF_ITEMS[$n][3])
GUICtrlSetData($EDIT_DEF_ITEMS[$n][0], '')
EndIf
ElseIf $nMsg = $EN_KILLFOCUS Then ; Lost Focus (EN_KILLFOCUS)
If GUICtrlRead($EDIT_DEF_ITEMS[$n][0]) = '' Then
GUICtrlSetColor($EDIT_DEF_ITEMS[$n][0], $EDIT_DEF_ITEMS[$n][2])
GUICtrlSetData($EDIT_DEF_ITEMS[$n][0], $EDIT_DEF_ITEMS[$n][1])
EndIf
EndIf
EndFunc
Func __EDIT_DEF_GETINDEX($hEdit)
For $i = 1 To UBound($EDIT_DEF_ITEMS) - 1
If $EDIT_DEF_ITEMS[$i][0] = $hEdit Then
Return $i
EndIf
Next
Return -1
EndFunc