Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/41: Рейтинг темы: голосов - 41, средняя оценка - 4.56
20 / 20 / 2
Регистрация: 28.11.2012
Сообщений: 366

MFC Dialog based, перехват нажатия клавиш

07.07.2013, 01:39. Показов 7701. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нахожу в интернете, что для того чтобы перехватить нажатия клавиш клавиатуры нужно переопределить виртуальный метод класса диалога PreTranslateMessage(MSG* msg)
Хорошо, в заголовочном файле нашего диалога объявляем эту функцию:
afx_msg BOOL PretranslateMessage(MSG* msg);
В файле реализации (.cpp) описываем данную функцию:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
BOOL CFirstSteps2Dlg::PreTranslateMessage(MSG* msg)
{
    if(msg->message==WM_KEYDOWN)
    {
        if(msg->wParam == VK_UP)
        {
            AfxMessageBox(L"Нажалит стрелку вверх",MB_OK);
        }
        if(msg->wParam == VK_DOWN)
        {
            AfxMessageBox(L"Нажата стрелка вниз",MB_OK);
        }
    }
    return  CFirstSteps2Dlg::PreTranslateMessage(msg);
}
А в карту сообщений то что писать? ON_WM_KEYDOWN()?
И да, после компиляции он(компилятор) у меня ругается на описание функции: Error 1 error C2509: 'PreTranslateMessage' : member function not declared in 'CFirstSteps2Dlg'
Так как же правильно?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.07.2013, 01:39
Ответы с готовыми решениями:

Проблема с COM и MFC Dialog-based Application
Уважаемый Олл! В Visual C++ знаний крайне немного, начал разбираться и столкнулся с проблемой, причину которой не могу понять. В...

Работа Dialog-based MFC приложения
Здравствуйте. Есть Dialog-based MFC приложение. Необходимо по нажатию кнопки вызвать новое диалоговое окно и произвести в нем рисование. Ка...

mfc. dialog-based application. CStatic, CButton
хочу понять логику поведения этих объектов. в диалоговом приложении создаем два класса: один производим от CButton, второй – от CStatic. ...

9
18 / 18 / 1
Регистрация: 22.04.2013
Сообщений: 57
07.07.2013, 02:40
Для подобного рода целей в VC++ есть события (для всех элементов "Панели управления" так же
и для диалоговых окон), это одна из кнопок в свойствах элемента. Там множество событий
которыми можно контролировать как фокус так и нажатие клавиатуры. Чем сложнее задача, тем
дороже и сложнее ответ :-)

Может весь код скинуть !?

Для чего вам перехват нажатия делать ?
0
20 / 20 / 2
Регистрация: 28.11.2012
Сообщений: 366
07.07.2013, 11:58  [ТС]
мне перехват для того, чтобы просто посмотреть, как это делается.
Код присоединяю к проекту...
Вложения
Тип файла: rar FirstSteps2.rar (36.4 Кб, 46 просмотров)
0
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 21
16.10.2013, 17:08
Та же проблема, хочу узнать когда кто то на клаве ткнет в кнопку 1.
А событие на обрабатывается.
0
18 / 18 / 1
Регистрация: 22.04.2013
Сообщений: 57
16.10.2013, 17:31
как это не обрабатывается.
Идет обработка нажатия клавиши (так сказать общее событие нажатия)
в свойствах объекта есть большое количество событий в том числе и клавиши
а вот какая клавиша была нажата это уже другой вопрос в MSDN где-то видел
пример данного определения но т.к. это мне не нужно то не стал обращать
внимание. Вобщем гуглите там все есть
0
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 21
16.10.2013, 18:39
Цитата Сообщение от Im_hungry Посмотреть сообщение
как это не обрабатывается.
Идет обработка нажатия клавиши (так сказать общее событие нажатия)
в свойствах объекта есть большое количество событий в том числе и клавиши
а вот какая клавиша была нажата это уже другой вопрос в MSDN где-то видел
пример данного определения но т.к. это мне не нужно то не стал обращать
внимание. Вобщем гуглите там все есть
как только разберусь как поставить тебе минус в репу, сразу поставлю, погоди только
0
18 / 18 / 1
Регистрация: 22.04.2013
Сообщений: 57
16.10.2013, 19:49
ага :-0
1
Почетный модератор
12274 / 5340 / 268
Регистрация: 05.04.2011
Сообщений: 14,086
Записей в блоге: 2
16.10.2013, 19:54
Цитата Сообщение от assters Посмотреть сообщение
как только разберусь как поставить тебе минус в репу, сразу поставлю, погоди только
Интересно, за что? У нас запрещено необоснованное понижение репутации.
1
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 21
16.10.2013, 20:23
Цитата Сообщение от Taatshi Посмотреть сообщение
Интересно, за что? У нас запрещено необоснованное понижение репутации.
Что стало бы с форумами если бы на каждый вопрос каждый посылал бы тс в гугл?
Кликните здесь для просмотра всего текста
Если нечего сказать пускай не говорит, а так как заставить его замолчать не могу "- в репу" был бы как нельзя кстати.
Я бы про минус и не заикнулся потому как понимаю в этой теме не полностью описал свою проблему, но этот "человек" опять же в сообщениях выше просил код, но после выдачи кода никаких ответов не дал, и опять таки мне все равно, ну бывает, мало ли, ну занят, свет выключили, ну понадеялся он на других, но он отправил меня в гугл, а я не люблю гугл, яндексом пользуюсь, вот и ответил.

Мой вопрос полностью
А банить или мутить меня пока не за что,
0
Почетный модератор
12274 / 5340 / 268
Регистрация: 05.04.2011
Сообщений: 14,086
Записей в блоге: 2
16.10.2013, 20:32
assters, банить и мутить Вас никто не собирался. Это предупреждение. Будьте любезны вникнуть.

Еще рекомендую: почитать правила форума. Там есть много чего интересного и полезного.

И отвечать Вам никто не обязан. Не нашлось времени, не смог, не захотел - его право. Вам сказали, что где-то видели. Без грубости. Ну так и поищите - если Вам это нужно.

И дублировать вопросы тоже запрещено - достаточно одной темы. Тоже учтите на будущее.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.10.2013, 20:32
Помогаю со студенческими работами здесь

MFC Dialog-based Application: Combo Box
Я пишу мое первое приложение MFC, его смысл состоит в том, чтобы составить грегорианский календарь и у пользователя была возможность...

Dialog based MFC приложение, установка лимита для переменной Edit типа Double
Здравствуйте! Возникла проблемка, мне нужно связать поле Edit1 с переменной m_x1 типа double и установить диапазон: Минимальное значение:...

Перехват нажатия клавиш
Почему при нажатии на любую клавишу, выдаёт 2 MessageDox'a? Как я понимаю значит функция выполняется 2 раза, почему? В общем как сделать...

Перехват нажатия клавиш.
Помогите новичку в программировании, если не трудно. Есть задача: по нажатию клавиш (например F1 - F12) программа должна забирать текст из...

Перехват нажатия клавиш XGrabKeyboard
Нашёл готовое решение, немного допилил и получился вот такой говнокод: #include <X11/Xlib.h> #include <X11/Xutil.h> ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Номеклатура. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru