Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ON_WM_KEYDOWN() 
V
    Опции темы
GLeBaTi
Дата 6.9.2008, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 1.2.2008
Где: г.Чебоксары

Репутация: нет
Всего: 0



Есть код:
Код

BEGIN_MESSAGE_MAP(C_KBH_Dlg, CDialog)
...
ON_WM_KEYDOWN()
...
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////
//class C_KBH_Dlg:
...
public:
    afx_msg void OnKeyDown(UINT C,UINT R,UINT F);
...
/////////////////////////////////////////////////////////////
//реализация:
void C_KBH_Dlg::OnKeyDown(UINT C,UINT R,UINT F)
{
    MessageBox("Hello",0,MB_OK);
    UpdateData(0);    
}

тип проекта: MFC application->dialog based
Проблема: при нажатии любой клавиши во время выполнения программы, ничего не происходит((
Кто знает, что в моем коде не так ?
PM MAIL   Вверх
KEHT
Дата 6.9.2008, 17:52 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 17.7.2006

Репутация: 1
Всего: 1



Видимо какой-то элемент перебивает фокс с окна-рамки.
PM MAIL   Вверх
GLeBaTi
Дата 7.9.2008, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 1.2.2008
Где: г.Чебоксары

Репутация: нет
Всего: 0



Нет, окно вроде активно smile 
PM MAIL   Вверх
KEHT
Дата 7.9.2008, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 17.7.2006

Репутация: 1
Всего: 1



Я имею ввиду элемент именно в этом окне, например ActiveX 

Цитата

The framework calls this member function when a nonsystem key is pressed. A nonsystem key is a keyboard key that is pressed when the ALT key is not pressed or a keyboard key that is pressed when CWnd has the input focus. 



Это сообщение отредактировал(а) KEHT - 7.9.2008, 12:55
PM MAIL   Вверх
GLeBaTi
Дата 7.9.2008, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 1.2.2008
Где: г.Чебоксары

Репутация: нет
Всего: 0



И как мне это исправить ?
PM MAIL   Вверх
KEHT
Дата 7.9.2008, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 17.7.2006

Репутация: 1
Всего: 1



Ну, либо создать оконный подкласс для каждого элемента и переопределять в нем событие которое отвечает за ловлю клавиш, либо использовать keyboard hook
PM MAIL   Вверх
GLeBaTi
Дата 7.9.2008, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 1.2.2008
Где: г.Чебоксары

Репутация: нет
Всего: 0



Что такое keyboard hook ??))
PM MAIL   Вверх
GLeBaTi
Дата 9.9.2008, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 1.2.2008
Где: г.Чебоксары

Репутация: нет
Всего: 0



Тогда как с помощью ф-ии: 
Код

BOOL C_KBH_Dlg::PreTranslateMessage(MSG* pMsg)
{
    if (pMsg->message == WM_KEYDOWN)
    {
        MessageBox("Hello",0,MB_OK);
        UpdateData(0);   
    }
    return CDialog::PreTranslateMessage(pMsg);
}

как узнать какая клавиша была нажата?
PM MAIL   Вверх
KEHT
Дата 9.9.2008, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 17.7.2006

Репутация: 1
Всего: 1



Код

BOOL C_KBH_Dlg::PreTranslateMessage(MSG* pMsg)
{
    if (pMsg->message == WM_KEYDOWN)
    {
        if(pMsg->wParam==VK_RETURN) //Смотря какая клавиша нужна
            MessageBox("Hello",0,MB_OK);
            UpdateData(0);   
        }
    }
    return CDialog::PreTranslateMessage(pMsg);
}

PM MAIL   Вверх
GLeBaTi
Дата 10.9.2008, 07:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 1.2.2008
Где: г.Чебоксары

Репутация: нет
Всего: 0



Спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0637 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.