Tipulatoid
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Ребят, вы можете подробно прокомментировать такой код (дали на офф. форуме). Интересуют те строки, что выделены жирным Код: #include <GuiConstantsEx.au3> #include <editconstants.au3> #include <windowsconstants.au3> $MainGui = GUICreate('test', 300, 150) $Label1 = GUICtrlCreateLabel("E-mail", 5, 10, 40, 17) $Input1 = GUICtrlCreateInput("sample@uknown.com", 50, 10, 150) $Email = GUICtrlRead($Input1) $SplitEmail = StringSplit($Email, "@") $Label2 = GUICtrlCreateLabel("SMTP", 5, 40, 40, 17) $Input2 = GUICtrlCreateInput("smtp." & $SplitEmail[2], 50, 40, 150) GUISetState() GUIRegisterMsg($WM_COMMAND, "WM_COMMAND");only used for EN_CHANGE so far While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE Exit EndSelect WEnd Func WM_COMMAND($hWnd, $imsg, $iwParam, $ilParam) Local $AtPos, $s1 $nNotifyCode = BitShift($iwParam, 16) $nID = BitAND($iwParam, 0x0000FFFF) $hCtrl = $ilParam If $nNotifyCode = $EN_CHANGE Then If $ilParam = GUICtrlGetHandle($Input1) Then $s1 = GUICtrlRead($Input1) $AtPos = StringInStr($s1, '@') If $AtPos Then GUICtrlSetData($Input2, "smpt." & StringRight($s1, StringLen($s1) - $AtPos)) EndIf EndIf EndIf Return $GUI_RUNDEFMSG EndFunc ;==>WM_COMMAND | Мне действительно нужно разобраться с тем как работать с данными в инпутах "на лету". А в справке про все эти $WM_COMMAND $EN_CHANGE $GUI_RUNDEFMSG и т.д. ну просто ничего нет. Добавлено: Visitor, и будет у меня к тебе еще просьба. В этом коде что ты мне дал есть баг - если, например в окне $ChildGui_2 удалить всё в любом из инпутов, то появится крестик и кнопка "Далее" станет недоступна. Это так и должно быть. Однако, если вернуться назад и потом снова вперед на $ChildGui_2, тогда крестик горит, а "Далее" доступна. Поправь, пож.; я похоже не в состоянии. Ресурсы, необходимые для работы скрипта здесь | Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 14:35 23-09-2008 | Исправлено: Tipulatoid, 15:16 23-09-2008 |
|