Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Код: Выделить весь код
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>

GUICreate("Input Focus Demo", 500, 300)

$Input = GUICtrlCreateInput("Модель:", 190, 250, 260, 25)
$Exit = GUICtrlCreateButton("Exit", 20, 100, 60, 20)
GUICtrlSetState(-1, $GUI_FOCUS)

GUISetState()
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE, $Exit
            ExitLoop
    EndSwitch
WEnd

Func WM_COMMAND($hWnd, $nMsg, $wParam, $lParam)
    Local $nNotifyCode = BitShift($wParam, 16)
    Local $nID = BitAND($wParam, 0xFFFF)

    Switch $nID
        Case $Input
            Switch $nNotifyCode
                Case $EN_SETFOCUS
                    If GUICtrlRead($Input) = "Модель:" Then
                        GUICtrlSetData($Input, "")
                    EndIf
            EndSwitch
    EndSwitch

    Return $GUI_RUNDEFMSG
EndFunc
А вообще если я правильно понял, то тебе будет интересно это.
Немного улучшенная версия
Код: Выделить весь код
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <WindowsConstants.au3>

GUICreate("_GUICtrlEdit_SetDefault")

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)

GUICtrlCreateInput("Just a standard input", 5, 55, 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   ;==>_GUICtrlEdit_SetDefault

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   ;==>__EDIT_DEF_WM_COMMAND

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   ;==>__EDIT_DEF_GETINDEX

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:32, 02-07-2010 | #2