92 lines
2.4 KiB
C++
92 lines
2.4 KiB
C++
//## begin module.cm preserve=no
|
|
|
|
// %X% %Q% %Z% %W%
|
|
|
|
//## end module.cm
|
|
|
|
|
|
|
|
//## begin module.cp preserve=no
|
|
|
|
//## end module.cp
|
|
|
|
|
|
|
|
//## Module: NTEventReader; Pseudo Package body
|
|
|
|
//## Subsystem: lab7
|
|
|
|
//## Source file: H:\kurs\avC++\lab7\NTvntRdr.cpp
|
|
|
|
|
|
|
|
//## begin module.additionalIncludes preserve=no
|
|
|
|
//## end module.additionalIncludes
|
|
|
|
|
|
|
|
//## begin module.includes preserve=yes
|
|
|
|
#include <iostream.h>
|
|
|
|
#include <windows.h>
|
|
|
|
//## end module.includes
|
|
|
|
|
|
|
|
// NTEventReader
|
|
|
|
#include "NTvntRdr.h"
|
|
|
|
//## begin module.additionalDeclarations preserve=yes
|
|
|
|
//## end module.additionalDeclarations
|
|
|
|
|
|
|
|
|
|
|
|
// Class NTEventReader
|
|
|
|
|
|
|
|
NTEventReader::NTEventReader()
|
|
|
|
//## begin NTEventReader::NTEventReader%.hasinit preserve=no
|
|
|
|
//## end NTEventReader::NTEventReader%.hasinit
|
|
|
|
//## begin NTEventReader::NTEventReader%.initialization preserve=yes
|
|
|
|
//## end NTEventReader::NTEventReader%.initialization
|
|
|
|
{
|
|
|
|
//## begin NTEventReader::NTEventReader%.body preserve=yes
|
|
|
|
//## end NTEventReader::NTEventReader%.body
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
NTEventReader::~NTEventReader()
|
|
|
|
{
|
|
|
|
//## begin NTEventReader::~NTEventReader%.body preserve=yes
|
|
|
|
//## end NTEventReader::~NTEventReader%.body
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//## Other Operations (implementation)
|
|
|
|
Event NTEventReader::getEvent ()
|
|
|
|
{
|
|
|
|
//## begin NTEventReader::getEvent%940854115.body preserve=yes
|
|
|
|
HANDLE hln = GetStdHandle(STD_INPUT_HANDLE);
|
|
|
|
_INPUT_RECORD lpBuffer[5];
|
|
|
|
DWORD length=1;
|
|
|
|
DWORD lpNumberOfEventsRead=0;
|
|
|
|
WORD key=0, scan=0;
|
|
|
|
Event e;
|
|
|
|
|
|
|
|
ReadConsoleInput(hln,&lpBuffer[0],length,&lpNumberOfEventsRead);
|
|
|
|
|
|
|
|
for(DWORD i=0; i<lpNumberOfEventsRead; i++){
|
|
|
|
INPUT_RECORD r=lpBuffer[i];
|
|
|
|
switch(r.EventType){
|
|
|
|
case MOUSE_EVENT:
|
|
|
|
switch(r.Event.MouseEvent.dwButtonState){
|
|
|
|
case FROM_LEFT_1ST_BUTTON_PRESSED:
|
|
|
|
e.setEventType(MOUSE_E);
|
|
|
|
e.setxpos(r.Event.MouseEvent.dwMousePosition.X);
|
|
|
|
e.setypos(r.Event.MouseEvent.dwMousePosition.Y);
|
|
|
|
return e;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
; break;
|
|
|
|
case KEY_EVENT: ; break;
|
|
|
|
default: ; break;
|
|
|
|
}
|
|
|
|
cout.flush();
|
|
|
|
}
|
|
|
|
e.setEventType(NO_E);
|
|
|
|
return e;
|
|
|
|
|
|
|
|
//## end NTEventReader::getEvent%940854115.body
|
|
|
|
}
|
|
|
|
|
|
|
|
// Additional Declarations
|
|
|
|
//## begin NTEventReader.declarations preserve=yes
|
|
|
|
//## end NTEventReader.declarations
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//## begin module.epilog preserve=yes
|
|
|
|
//## end module.epilog
|
|
|