Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Vs C++ Console перехват нажатия клавиши


Автор: mavrusha 25.2.2008, 05:39
Хочу сделать всплывающее окно для стандартной консоли windows, которое поможет упростить ввод команд. Как к примеру в видеоиграх. Но хочется сделать это не с помощью написания своей функции gets(), а путем перехвата сообщений к консольному окну (главный поток вызывает gets(), а второй перехватывает нажатия пользователя. Все в рамках одного процесса). 
Я пробовал перенаправлять стандартный ввод при помощи SetStdHandle, но ничего хорошего не вышло. (Второй поток может прочитать строку которая в данный момент на экране, но момент нажатия клавиши отловить не получается - в этом то и проблемма). 
В MSDN есть примеры как обрабатывать ввод на низком уровне (ReadConsoleInput), но если один поток вызывает к примеру gets(), то второй поток в пролете и ничего не получает. 
У меня нет опыта по ручной обработки сообщений Windows, поэтому может кто ответит можно ли в консоли отловить сообщения о нажатии из порожденного потока.  
Спасибо.

Автор: Rapalex 25.2.2008, 11:13
Цитата(mavrusha @  25.2.2008,  05:39 Найти цитируемый пост)
У меня нет опыта по ручной обработки сообщений Windows, поэтому может кто ответит можно ли в консоли отловить сообщения о нажатии из порожденного потока.  

Винда посылает сообщения окнам, они их обрабатывают в цикле, консоль к этому никакого отношения не имеет.

Добавлено через 1 минуту и 26 секунд
http://msdn2.microsoft.com/en-us/library/ms682073.aspx

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)