Вероятно, самое простое, что нужно сделать, это отслеживать движение мыши с помощью ReadConsoleInput
, которая даст вам координаты буфера экрана консоли указателя мыши, а затем получить символ с помощью ReadConsoleOutputCharacter
, что-то вроде:
INPUT_RECORD irInBuf[128];
DWORD cNumRead;
int i;
COORD coord;
while (1)
{
ReadConsoleInput(
GetStdHandle(STD_INPUT_HANDLE), // input buffer handle
irInBuf, // buffer to read into
128, // size of read buffer
&cNumRead);
for (i = 0; i < cNumRead; i++)
{
if (irInBuf[i].EventType == MOUSE_EVENT)
{
MOUSE_EVENT_RECORD mer = irInBuf[i].Event.MouseEvent;
switch (mer.dwEventFlags)
{
case 0:
if (mer.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED)
{
TCHAR c[2] = { '\0' };
DWORD cnum;
ReadConsoleOutputCharacter(
GetStdHandle(STD_OUTPUT_HANDLE),
c,
1,
coord,
&cnum
);
if (cnum == 1) MessageBox(NULL, c, NULL, 0);
}
break;
case MOUSE_MOVED:
//printf("mouse moved\n");
coord.X = mer.dwMousePosition.X;
coord.Y = mer.dwMousePosition.Y;
break;
default:
break;
}
}
else if (irInBuf[i].EventType == KEY_EVENT)
{
KEY_EVENT_RECORD ker = irInBuf[i].Event.KeyEvent;
if (ker.bKeyDown)
{
DWORD written;
WriteConsole(
GetStdHandle(STD_OUTPUT_HANDLE),
&ker.uChar,
1,
&written,
NULL
);
}
}
}
}