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