Форум программистов, компьютерный форум CyberForum.ru

Обработка WM_KEYDOWN и WM_KEYUP в диалоговом окне - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
Izhachok
3 / 3 / 0
Регистрация: 29.04.2011
Сообщений: 34
23.04.2012, 21:19     Обработка WM_KEYDOWN и WM_KEYUP в диалоговом окне #1
С толкнулся с проблемой того, что в диалоге требуется обработка клавиатуры!
Однако как оказалось диалог их не ловит!
Есть ли способ как нибудь решить эту проблему?
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,604
Записей в блоге: 17
23.04.2012, 21:22     Обработка WM_KEYDOWN и WM_KEYUP в диалоговом окне #2
Создать свое диалоговое окно
Izhachok
3 / 3 / 0
Регистрация: 29.04.2011
Сообщений: 34
23.04.2012, 21:49  [ТС]     Обработка WM_KEYDOWN и WM_KEYUP в диалоговом окне #3
Эммм... ну в общем-то я в своём и обрабатывал, а точнее пытался! При нажатии на клавишу в диалог не приходит сообщение WM_KEYDOWN и WM_KEYUP!!!
При чём при работе как с модальным так и с не модальным, видимо проблема не в фокусе!><

Добавлено через 18 минут
Оу нашёл ответ, может кому понадобиться!^^
Нашёл туточки

http://www.programmersheaven.com/mb/...ens-in-dialog/

А решение в общем-то тривиально!=Р

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
while (GetMessage(&clTalkWithPeople::Msg,NULL,0,0))
    {
        if (clTalkWithPeople::Msg.message == WM_KEYDOWN ||
            clTalkWithPeople::Msg.message == WM_KEYUP)
            SendMessage(clTalkWithPeople::hControlDlg, clTalkWithPeople::Msg.message, 
            clTalkWithPeople::Msg.wParam, clTalkWithPeople::Msg.lParam);
 
        if(!IsDialogMessage(clTalkWithPeople::hOpenProgramDlg, &clTalkWithPeople::Msg) 
        && !IsDialogMessage(clTalkWithPeople::hControlDlg, &clTalkWithPeople::Msg))
        {
            TranslateMessage(&clTalkWithPeople::Msg);
            DispatchMessage(&clTalkWithPeople::Msg);
        }
    }
zss
Модератор
Эксперт С++
 Аватар для zss
5947 / 5552 / 1784
Регистрация: 18.12.2011
Сообщений: 14,184
Завершенные тесты: 1
23.04.2012, 22:12     Обработка WM_KEYDOWN и WM_KEYUP в диалоговом окне #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Если надо несколько клавиш, то можно через hotkey.
1. Регистрируем hotkey (пример - под №1 регистриуем клавишу alt+стрелка вверх):
C++
1
RegisterHotKey(hwnd,1,MOD_ALT,VK_UP);
2. Отлавливаем сообщение
C++
1
    case WM_HOTKEY:
Yandex
Объявления
23.04.2012, 22:12     Обработка WM_KEYDOWN и WM_KEYUP в диалоговом окне
Ответ Создать тему
Опции темы

Текущее время: 09:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru