|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
19.07.2013, 15:24 | #1 |
Форумчанин
Регистрация: 13.02.2012
Сообщений: 867
|
Назначение и обработка комбинаций клавиш
Здравствуйте.
Первое: Мне нужно, чтобы мое окно реагировало на некие комбинации клавиш. Например: CTRL+J, ALT+K и т.п. Как это сделать? Через WM_KEYDOWN обрабатываются одиночные клавиши, но не сочетания. Второе: планирую использовать контрол HotKey для смены сочетаний. По замыслу, таких сочетаний будет много, так что если делать для каждого из них отдельный HotKey, это займет очень много места в окне. Отсюда вопрос: Как примерно это сделано в плеере Light Alloy? вот скриншот его окна: Это похоже на ListView с ручной отрисовкой. Но как он принимает сочетания клавиш? В него как-то встроена куча HotKey'ев? Натолкните на умные мысли, как сделать нечто подобное? Готовый код НЕ прошу! |
19.07.2013, 15:39 | #2 | ||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
||
19.07.2013, 16:34 | #3 | |
Форумчанин
Регистрация: 13.02.2012
Сообщений: 867
|
В смысле это?
Цитата:
Про какую доку вы говорите? Самую малость поподробнее, пожалуйста. Момент редактирования это обработка WM_KEYDOWN на ListView? В каком смысле "ставим" HotKey? Последний раз редактировалось BLACK_RAIN; 19.07.2013 в 17:27. |
|
19.07.2013, 20:51 | #4 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
Зачем заморачиваться с WM_KEYDOWN? Для этого есть TranslateAccelerator()
|
20.07.2013, 09:17 | #5 | |
Форумчанин
Регистрация: 13.02.2012
Сообщений: 867
|
Цитата:
Код:
Последний раз редактировалось BLACK_RAIN; 20.07.2013 в 10:16. |
|
20.07.2013, 10:17 | #6 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
|
20.07.2013, 11:12 | #7 | ||
Форумчанин
Регистрация: 13.02.2012
Сообщений: 867
|
Цитата:
Я читаю MSDN про функцию TranslateAccelerator() и там чёрным по белому написано: Цитата:
Я делаю, как написано: Код:
Последний раз редактировалось BLACK_RAIN; 20.07.2013 в 11:21. |
||
20.07.2013, 11:27 | #8 |
Заблокирован
Регистрация: 17.07.2013
Сообщений: 104
|
BLACK_RAIN, не обижайтесь на этих бармалеев, они и сами ничего толком не знают. В вашем случае надо хук ставить на клавиатуру и ловить эти две клавиши. Хук устанавливают с помощью API SetWindowsHookEx. Поищите исходники в сети.
|
20.07.2013, 11:38 | #9 |
Форумчанин
Регистрация: 13.02.2012
Сообщений: 867
|
|
20.07.2013, 11:42 | #10 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
Не знаю - вы изменили код.
В первоначальном варианте были безусловно два Translate и Dispatch() Почитайте про FVIRTKEY, если не поможет вон нелюбитель бармалеев вам поможет... |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
обработка клавиш из dll | AntyDES | C# (си шарп) | 5 | 23.10.2012 12:42 |
Возможно ли в Турбо Паскале изменить назначение клавиш? | bonjovi | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 12.02.2012 20:43 |
Обработка клавиш на TListBox | Melanholly | Общие вопросы Delphi | 2 | 31.10.2011 14:06 |
Блокирование системных клавиш и их комбинаций | DannerDOS | Win Api | 15 | 05.05.2010 14:12 |
Изменение и назначение сочетания клавиш | uha58 | Общие вопросы Delphi | 1 | 29.12.2009 12:54 |