Прием данных с клавиатуры
Добавлено: 15 май 2011, 16:04
У меня есть класс CMyView, основанный на диалоговом окне. Я переопределил функцию CMyView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) чтобы принимать данные с клавиатуры, но почему-то эта функция не работает.
..............................
// Объявление класса Вид в CMyView.h:
class CMyView : public COleDBRecordView // (COleDBRecordView - класс для базы данных
..........................................................................Access, диалоговое окно с прокруткой)
{ ... };
...............................
// функция OnKeyDown определённая в CMyView.срр
void CMyView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
switch (nChar) {
........case VK_HOME:
................OnVScroll(SB_TOP, 0, NULL);
................break;
........case VK_END:
................OnVScroll(SB_BOTTOM, 0, NULL);
................break;
........case VK_UP:
................OnVScroll(SB_LINEUP, 0, NULL);
................break;
........case VK_DOWN:
................OnVScroll(SB_LINEDOWN, 0, NULL);
................break;
........case VK_RETURN: //ENTER
................break;
........default:
................break;
}
COleDBRecordView::OnKeyDown(nChar, nRepCnt, nFlags);
}
Когда я нажимаю в диалоговом окне Home, End, Enter или любую клавишу - она не обрабатывается этой функцией, вопрос - почему?
..............................
// Объявление класса Вид в CMyView.h:
class CMyView : public COleDBRecordView // (COleDBRecordView - класс для базы данных
..........................................................................Access, диалоговое окно с прокруткой)
{ ... };
...............................
// функция OnKeyDown определённая в CMyView.срр
void CMyView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
switch (nChar) {
........case VK_HOME:
................OnVScroll(SB_TOP, 0, NULL);
................break;
........case VK_END:
................OnVScroll(SB_BOTTOM, 0, NULL);
................break;
........case VK_UP:
................OnVScroll(SB_LINEUP, 0, NULL);
................break;
........case VK_DOWN:
................OnVScroll(SB_LINEDOWN, 0, NULL);
................break;
........case VK_RETURN: //ENTER
................break;
........default:
................break;
}
COleDBRecordView::OnKeyDown(nChar, nRepCnt, nFlags);
}
Когда я нажимаю в диалоговом окне Home, End, Enter или любую клавишу - она не обрабатывается этой функцией, вопрос - почему?