#include <GuiComboBox.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$Debug_CB = False
Global $hCombo
_Main()
Func _Main()
Local $msg, $Combo1, $Combo2, $hGUI, $add, $add_set, $insert, $clear, $close, $index, $read, $setsel, $count, $select, $find_string, $del_item, $tmp, $sList
$sList = "Анапа|Алма-ата|Белгород|Братск|Бийск|Воронеж|Волгоград|Владимир|Грозный|Геленджик|Дивногорск|Донецк|Елабуга|Енисейск|Златоуст|Зима|Игарка|Ижевск|Иваново|Иркутск|Калуга|Кемерово|Киров|Ковров|Курск|Липецк|Магадан|Москва|Мурманск|Нальчик|Находка|Норильск|Новгород|Омск|Орел|Оренбург|Печора|Пермь|Рыбинск|Сочи|Уфа|Ярославль"
GUICreate("Авто-заполнение", 400, 296)
$hCombo = GUICtrlCreateCombo("", 2, 2, 396, 296)
GUICtrlSetData(-1, $sList , "Анапа")
GUICtrlSendMsg(-1, $CB_SETDROPPEDWIDTH, 370, 0)
GUISetState()
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
$ex = MsgBox (4, "Выход", "Хотите выйти?")
If $ex = 6 Then ExitLoop
Case $hCombo
EndSwitch
WEnd
GUIDelete()
EndFunc
Func _Edit_Changed()
_GUICtrlComboBox_AutoComplete($hCombo)
EndFunc
Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
#forceref $hWnd, $iMsg
Local $hWndFrom, $iIDFrom, $iCode, $hWndCombo
If Not IsHWnd($hCombo) Then $hWndCombo = GUICtrlGetHandle($hCombo)
$hWndFrom = $ilParam
$iIDFrom = BitAND($iwParam, 0xFFFF)
$iCode = BitShift($iwParam, 16)
Switch $hWndFrom
Case $hCombo, $hWndCombo
Switch $iCode
Case $CBN_CLOSEUP
Case $CBN_DBLCLK
Case $CBN_DROPDOWN
Case $CBN_EDITCHANGE
_Edit_Changed()
Case $CBN_EDITUPDATE
Case $CBN_ERRSPACE
Case $CBN_KILLFOCUS
Case $CBN_SELCHANGE
Case $CBN_SELENDCANCEL
Case $CBN_SELENDOK
Case $CBN_SETFOCUS
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc