Здравствуйте, nhie, Вы писали:
N>Win2000, MSVC6, MFC (но проблема с апишной функцией)
N>Получаю состояние VK_RBUTTON в обработчике OnMouseMove, и сталкиваюсь с такой проблемой, что GetAsyncKeyState иногда говорит, что кнопка нажата в то время, как она не нажата. Интересно, что при повторном вызове GetAsyncKeyState всё правильно (так я и решил проблему).
N>Сейчас с такой же проблемой столкнулся, получая состояние VK_SHIFT в OnKeyDown. Это происходит после того, как я вызываю другой диалог изнутри OnKeyDown, там жму Shift и отпускаю, после чего закрываю диалог и обрабатываю следующее нажатие клавиш в том же OnKeyDown. Абсолютно то же самое — первый раз GetAsyncKeyState говорит, что Shift нажат, второй раз говорит правду.
N>Не сталкивался ли кто-нибудь с подобной проблемой? Мне, в принципе, несложно два раза позвать GetAsyncKeyState, но интересно же, в чём всё-таки дело
Если нужно получить состояние клавиши при обработке сообщения — лучше используй GetKeyState, она тебе даст состояние клавиши именно на момент генерации события.