1 // Windows/Console.h 2 3 #ifndef ZIP7_INC_WINDOWS_CONSOLE_H 4 #define ZIP7_INC_WINDOWS_CONSOLE_H 5 6 #include "Defs.h" 7 8 namespace NWindows { 9 namespace NConsole { 10 11 class CBase 12 { 13 protected: 14 HANDLE m_Object; 15 public: Attach(HANDLE handle)16 void Attach(HANDLE handle) { m_Object = handle; } GetMode(DWORD & mode)17 bool GetMode(DWORD &mode) 18 { return BOOLToBool(::GetConsoleMode(m_Object, &mode)); } SetMode(DWORD mode)19 bool SetMode(DWORD mode) 20 { return BOOLToBool(::SetConsoleMode(m_Object, mode)); } 21 }; 22 23 class CIn: public CBase 24 { 25 public: PeekEvents(PINPUT_RECORD events,DWORD numEvents,DWORD & numEventsRead)26 bool PeekEvents(PINPUT_RECORD events, DWORD numEvents, DWORD &numEventsRead) 27 { return BOOLToBool(::PeekConsoleInput(m_Object, events, numEvents, &numEventsRead)); } PeekEvent(INPUT_RECORD & event,DWORD & numEventsRead)28 bool PeekEvent(INPUT_RECORD &event, DWORD &numEventsRead) 29 { return PeekEvents(&event, 1, numEventsRead); } ReadEvents(PINPUT_RECORD events,DWORD numEvents,DWORD & numEventsRead)30 bool ReadEvents(PINPUT_RECORD events, DWORD numEvents, DWORD &numEventsRead) 31 { return BOOLToBool(::ReadConsoleInput(m_Object, events, numEvents, &numEventsRead)); } ReadEvent(INPUT_RECORD & event,DWORD & numEventsRead)32 bool ReadEvent(INPUT_RECORD &event, DWORD &numEventsRead) 33 { return ReadEvents(&event, 1, numEventsRead); } GetNumberOfEvents(DWORD & numEvents)34 bool GetNumberOfEvents(DWORD &numEvents) 35 { return BOOLToBool(::GetNumberOfConsoleInputEvents(m_Object, &numEvents)); } 36 WriteEvents(const INPUT_RECORD * events,DWORD numEvents,DWORD & numEventsWritten)37 bool WriteEvents(const INPUT_RECORD *events, DWORD numEvents, DWORD &numEventsWritten) 38 { return BOOLToBool(::WriteConsoleInput(m_Object, events, numEvents, &numEventsWritten)); } WriteEvent(const INPUT_RECORD & event,DWORD & numEventsWritten)39 bool WriteEvent(const INPUT_RECORD &event, DWORD &numEventsWritten) 40 { return WriteEvents(&event, 1, numEventsWritten); } 41 Read(LPVOID buffer,DWORD numChars,DWORD & numCharsRead)42 bool Read(LPVOID buffer, DWORD numChars, DWORD &numCharsRead) 43 { return BOOLToBool(::ReadConsole(m_Object, buffer, numChars, &numCharsRead, NULL)); } 44 Flush()45 bool Flush() 46 { return BOOLToBool(::FlushConsoleInputBuffer(m_Object)); } 47 48 }; 49 50 }} 51 52 #endif 53