combobox на rebar'е
Создаю combobox, помещаю его на rebar. Этот combobox ведет себя странно - текст вводить можно, а вот backspace почему-то заблокирован. Кроме того, количество символов, кот. можно ввести, ограничено длиной поля ввода combobox'a... Мож кто знает, как с этим бороться, подкиньте рецепт.
Просто заменил у rebar'а в CreateWindowЕх флаг WS_CHILD на WS_POPUP - backspace заработал,
а combobox'у в его CreateWindowEx добавил флаг CBS_AUTOHSCROLL - прокрутка по горизонтали заработала.
Зато другая проблема осталась:
Как бы мне отловить нажатие клавиши ENTER в combobox'е... Дело такое - если фокус на любом элементе, кроме combobox'а, то ENTER отлавливается без проблем, например через WM_KEYDOWN, а вот если в combobox'е, то нажатие ENTER почему-то не генерирует WM_KEYDOWN, а только мерзкий beep...
Эту проблему решил.
Просто заменил у rebar'а в CreateWindowЕх флаг WS_CHILD на WS_POPUP - backspace заработал,
а combobox'у в его CreateWindowEx добавил флаг CBS_AUTOHSCROLL - прокрутка по горизонтали заработала.
Зато другая проблема осталась:
Как бы мне отловить нажатие клавиши ENTER в combobox'е... Дело такое - если фокус на любом элементе, кроме combobox'а, то ENTER отлавливается без проблем, например через WM_KEYDOWN, а вот если в combobox'е, то нажатие ENTER почему-то не генерирует WM_KEYDOWN, а только мерзкий beep...
Зачем нужено перехватить ENTER? А так необходимо использовать субклассинг(subclass windows)
Зачем нужено перехватить ENTER? А так необходимо использовать субклассинг(subclass windows)
Вообще я пытаюсь сделать тулбар для IE на WinAPI. Все нужные контролы - кнопки, меню ведут себя как положено, кроме combobox'а. Сам combobox - это типа search, наподобе Google search, запоминающий что искали.
Структура тулбара такова: mainwindow->rebar->combobox|toolbar->button.
От beep я уже избавился, заменив WC_COMBOBOX на WC_COMBOBOXEX, однако проблема с ENTER не решилась.
Как я понимаю, при использовании субклассинга надо получить из comboboxa хендл дочернего окна(ЕDIT).
Пробовал так:
POINT p;
p.x=1;
p.y=1;
HWND EditSearch = ChildWindowFromPoint(hComboboxSearch, p);
Однако всегда возвращается NULL...
Вообще я пытаюсь сделать тулбар для IE на WinAPI. Все нужные контролы - кнопки, меню ведут себя как положено, кроме combobox'а. Сам combobox - это типа search, наподобе Google search, запоминающий что искали.
Структура тулбара такова: mainwindow->rebar->combobox|toolbar->button.
От beep я уже избавился, заменив WC_COMBOBOX на WC_COMBOBOXEX, однако проблема с ENTER не решилась.
Как я понимаю, при использовании субклассинга надо получить из comboboxa хендл дочернего окна(ЕDIT).
Пробовал так:
POINT p;
p.x=1;
p.y=1;
HWND EditSearch = ChildWindowFromPoint(hComboboxSearch, p);
Однако всегда возвращается NULL...
Должно так работать:
HWND EditSearch = FindWindowEx( hComboboxSearch, 0, "edit", 0 );