|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Сен 13, 2003 20:36:47 Как обработать нажатие клавиши Enter в ListBox? Хотел использовать WM_VKEYTOITEM, но нажатие Enter'a не обнаруживается. |
|
|
Дата: Сен 13, 2003 21:07:53 Sk. Inc. А если следить за WM_KEYUP, WM_KEYDOWN? |
|
|
Дата: Сен 13, 2003 21:12:06 Я как-то проверял spyx-ом и нашел WM_KEYDOWN |
|
|
Дата: Сен 13, 2003 22:33:08 Sk. Inc. Лучше переходите на List View. Там возможностей больше да и нажатия на клавиши ловить можно. |
|
|
Дата: Сен 14, 2003 01:11:11 KiNDeR и Valery ListBox находится на диалоговом окне и собственной процедуры обработки сообщений не имеет, имеется она только у диалогового окна, поэтому за WM_KEYUP и WM_KEYDOWN, я следить не могу. Quantum Можно использовать и ListView, но думаю, что для выбора из списка в два-три элемента проще использовать ListBox. Кстати не нужно ко мне обращаться на Вы, лучше на ты. |
|
|
Дата: Сен 14, 2003 05:25:36 · Поправил: KiNDeR Sk. Inc. ListBox находится на диалоговом окне и собственной процедуры обработки сообщений не имеет А должна иметь? :-) wm_VKeyToItem Спpашивает владельца блока списка, что блок списка должен делать в ответ на сообщение wm_KeyDown. Перечитай описание сообшения WM_VKEYTOITEM, там как раз и надо обрабатывать сообщение WM_KEYDOWN. Исходник можешь показать?... |
|
|
Дата: Сен 14, 2003 06:45:56 Sk. Inc. ListBox должен иметь стиль LBS_WANTKEYBOARDINPUT. лучше на ты OK |
|
|
Дата: Сен 14, 2003 22:35:19 Пардон, я не заметил, что речь не о листвью. Наверное ты делаешь какой-нибудь мастер, где еще в наше время можно увидеть листбокс? |
|
|
Дата: Сен 15, 2003 23:32:31 · Поправил: Sk. Inc. Опишу, что я делал в виде списка (так, наверно, понятней ;-) 1) Устанавливаю стиль LBS_WANTKEYBOARDINPUT для ListBox'a. 2) Прописываю в своей программе обработку сообщения WM_VKEYTOITEM. 3) Ставлю в отладчике (OllyDbg) бряк на обработку этого сообщения. В результате отлавливаются все нажатия клавиш (программа приостанавливается), кроме Enter (плюс еще Tab и Escape, но они мне не нужны) :-( KiNDeR В архиве программа весит 150Kb (unrar.dll тяжелая), поэтому приаттачить ее к сообщению не смогу. |
|
|
Дата: Сен 16, 2003 01:03:44 Все дело в оконной функции ListBox которая обрабатывает сама часть сообщений, среди них и WM_KEYDOWN, в результате обработки которого и отсылаются WM_VKEYTOITEM и WM_CHARTOITEM. Попробуй subclass окна. Должно помочь. |
|
|
Дата: Сен 16, 2003 01:24:22 Хотел использовать WM_VKEYTOITEM, но нажатие Enter'a не обнаруживается. Всё обнаруживается. Как ты её обнаруживаешь и где? В ListBox должен быть установлен флаг LBS_WANTKEYBOARDINPUT. Тогда будет посылаться к родительскому окну WM_VKEYTOITEM в родительском проверь на WM_VKEYTOITEM word ptr wParam должен быть 13 если Enter. lParam - от кого пришёл. |
|
|
Дата: Сен 16, 2003 01:27:32 DaemoniacaL Попробуй subclass окна... А как это сделать? Может лучше хук на клаву повесить? |
|
|
Дата: Сен 16, 2003 01:30:53 · Поправил: The Svin Алло!!! Всё нормально обнаруживается, второй раз повторяю. Какие хуки? Какие сабклассы? Это банальная штатная работа. |
|
|
Дата: Сен 16, 2003 01:31:00 The Svin Так дело-то в том, что при нажатии Enter сообщение к родительскому окну WM_VKEYTOITEM не посылается. Может что-то глючит (или я, например)? |
|
|
Дата: Сен 16, 2003 01:33:03 Повторяю у ListBox поставь во флагах LBS_WANTKEYBOARDINPUT. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.074 |