Code:
#ifndef HITIMER_H
#define HITIMER_H
#endif
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#define TimerResolution 1000 //Milliseconds
class HiTimer
{
private :
LARGE_INTEGER freq;
LARGE_INTEGER start;
LARGE_INTEGER stop;
bool available;
public :
HiTimer();
void SetTimer();
void StopTimer();
LONGLONG GetelapsedCount();
bool isavailable();
};
#include <iostream>
#include <fstream>
using namespace std;
HiTimer Watch;
unsigned int Count = 0;
void MouseEventProc(MOUSE_EVENT_RECORD, ofstream & Output);
bool _hasclick(void);
int main(VOID)
{
HANDLE handleIn;
INPUT_RECORD recordIn;
DWORD NumRead;
ofstream outputdata;
outputdata.open("sample.txt");
if( !outputdata )
cerr << "Error: file could not be opened" << endl;
//Get the handle to the console instance
handleIn = GetStdHandle(STD_INPUT_HANDLE);
if (handleIn == INVALID_HANDLE_VALUE)
cerr << "Error:could not get instance"<<endl;
// Enable the window and mouse input events.
DWORD fdwMode = ENABLE_WINDOW_INPUT | ENABLE_MOUSE_INPUT;
if (! SetConsoleMode(handleIn, fdwMode) )
cerr << "Error:could not set mode"<<endl;
while (Count < 100)
{
ReadConsoleInput(handleIn, &recordIn, 1, &NumRead);
switch (recordIn.EventType)
{
case MOUSE_EVENT:
MouseEventProc(recordIn.Event.MouseEvent, outputdata);
break;
}
}
outputdata.close();
cout<< "Finished check sample file"<<endl;
cin.get();
return 0;
}
bool _hasclick(void)
{
static bool click = false;
if(click = true )
return true;
click = true;
return false;
}
void MouseEventProc(MOUSE_EVENT_RECORD mer, ofstream & Output)
{
switch(mer.dwEventFlags)
{
case 0:
if( mer.dwButtonState ==FROM_LEFT_1ST_BUTTON_PRESSED)
{
//do what you need to do
if( _hasclick() )
{
cout<<"You click"<<endl;
Watch.StopTimer();
Output << Watch.GetelapsedCount() <<endl;
}
Watch.SetTimer();
}
break;
}
}
HiTimer::HiTimer()
{
start = 0;
stop = 0;
available = false;
if(QueryPerformanceFrequency(&freq))
available = true;
}
void HiTime:: SetTimer()
{
QueryPerformanceCounter(&start);
}
void HiTime:: StopTimer()
{
QueryPerformanceCounter(&stop);
}
LONGLONG HiTime:: GetelapsedCount()
{
long long Time_elapsed = (stop.QuadPart - start.QuadPart) * TimerResolution / freq.QuadPart ;
return Time_elapsed;
}
bool HiTime:: isavailable()
{
return available;
}
Compiler: Default compiler
Executing g++.exe...
g++.exe "C:\Users\Jim\Desktop\Samplecollector.cpp" -o "C:\Users\Jim\Desktop\Samplecollector.exe" -I"C:\Dev-Cpp\lib\gcc\mingw32\3.4.2\include" -I"C:\Dev-Cpp\include\c++\3.4.2\backward" -I"C:\Dev-Cpp\include\c++\3.4.2\mingw32" -I"C:\Dev-Cpp\include\c++\3.4.2" -I"C:\Dev-Cpp\include" -L"C:\Dev-Cpp\lib"
C:\Users\Jim\Desktop\Samplecollector.cpp: In constructor `HiTimer::HiTimer()':
C:\Users\Jim\Desktop\Samplecollector.cpp:128: error: no match for 'operator=' in '((HiTimer*)this)->HiTimer::start = 0'
C:/Dev-Cpp/include/winnt.h:1979: note: candidates are: _LARGE_INTEGER& _LARGE_INTEGER:perator=(const _LARGE_INTEGER&)
C:\Users\Jim\Desktop\Samplecollector.cpp:129: error: no match for 'operator=' in '((HiTimer*)this)->HiTimer::stop = 0'
C:/Dev-Cpp/include/winnt.h:1979: note: candidates are: _LARGE_INTEGER& _LARGE_INTEGER:perator=(const _LARGE_INTEGER&)
C:\Users\Jim\Desktop\Samplecollector.cpp: At global scope:
C:\Users\Jim\Desktop\Samplecollector.cpp:135: error: `HiTime' has not been declared
C:\Users\Jim\Desktop\Samplecollector.cpp: In function `void SetTimer()':
C:\Users\Jim\Desktop\Samplecollector.cpp:137: error: `start' undeclared (first use this function)
C:\Users\Jim\Desktop\Samplecollector.cpp:137: error: (Each undeclared identifier is reported only once for each function it appears in.)
C:\Users\Jim\Desktop\Samplecollector.cpp: At global scope:
C:\Users\Jim\Desktop\Samplecollector.cpp:140: error: `HiTime' has not been declared
C:\Users\Jim\Desktop\Samplecollector.cpp: In function `void StopTimer()':
C:\Users\Jim\Desktop\Samplecollector.cpp:142: error: `stop' undeclared (first use this function)
C:\Users\Jim\Desktop\Samplecollector.cpp: At global scope:
C:\Users\Jim\Desktop\Samplecollector.cpp:145: error: `HiTime' has not been declared
C:\Users\Jim\Desktop\Samplecollector.cpp: In function `LONGLONG GetelapsedCount()':
C:\Users\Jim\Desktop\Samplecollector.cpp:147: error: `stop' undeclared (first use this function)
C:\Users\Jim\Desktop\Samplecollector.cpp:147: error: `start' undeclared (first use this function)
C:\Users\Jim\Desktop\Samplecollector.cpp:147: error: `freq' undeclared (first use this function)
C:\Users\Jim\Desktop\Samplecollector.cpp: At global scope:
C:\Users\Jim\Desktop\Samplecollector.cpp:151: error: `HiTime' has not been declared
C:\Users\Jim\Desktop\Samplecollector.cpp: In function `bool isavailable()':
C:\Users\Jim\Desktop\Samplecollector.cpp:153: error: `available' undeclared (first use this function)
Execution terminated