Консультация № 65232
02.12.2006, 14:56
0.00 руб.
0 3 3
Здравствуйте уважаемые эксперты
Вопрос у меня следующий. Я работаю в VC6, мне нужно поймать нажатие клавиш на ListView событие OnKeydown
void CMyView::OnKeydownLst (NMHDR* pNMHDR, LRESULT* pResult)
{
NMLVKEYDOWN* nmkd = (NMLVKEYDOWN*)pNMHDR;
//например ALT+Z
if( nmkd->wVKey==90)
{MessageBox("Нажата клавиша Z");}
}
Здесь получается все нормально
А мне нужно ALT+Z
Если вместо 90 ставлю VK_Z то получаю ошибку
error C2065: ‘VK_Z‘ : undeclared identifier

Как отработать нажатие двух клавиш?

Обсуждение

Неизвестный
02.12.2006, 17:20
общий
это ответ
Здравствуйте, Creonus!
Тебе нужно ловить другое сообщение OnSysKeyDown, именно оно срабатывает при нажатии alt.
Неизвестный
04.12.2006, 12:28
общий
это ответ
Здравствуйте, Creonus!
По логике при нажатии двух клавиш должно приходить два сообщения с VK_MENU и (90) соответственно. Можно еще попробовать получить состояние клавиши Alt при помощи GetAsynkKeyState.
Неизвестный
04.12.2006, 12:52
общий
это ответ
Здравствуйте, Creonus!
Вам правильно ответили, прошлый раз.
Необходимо
MyView.h
protected:
afx_msg LRESULT OnSyskey(WPARAM wParam, LPARAM lParam);
DECLARE_MESSAGE_MAP()

MyView.cpp
BEGIN_MESSAGE_MAP(CMyView, CListCtrl)
ON_MESSAGE(WM_SYSKEYDOWN, OnSyskey)
END_MESSAGE_MAP()

LRESULT CMyView::OnSyskey(WPARAM wParam, LPARAM lParam)
{
AfxMessageBox(_T("Ok"));
return 0;
}

Думаю, разберётесь.
У меня все работает.
Форма ответа