You are on page 1of 3

#include <windows.

h>
#include <stdio.h>

VOID KeyEventProc(KEY_EVENT_RECORD);
VOID MouseEventProc(MOUSE_EVENT_RECORD);
VOID ResizeEventProc(WINDOW_BUFFER_SIZE_RECORD);
HANDLE Hsaida;
int main(VOID)
{
DWORD cNumRead, i;
INPUT_RECORD irInBuf[128];
HANDLE Hentrada;
// Get the standard input handle.
Hentrada = GetStdHandle(STD_INPUT_HANDLE);
Hsaida = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleMode(Hentrada, ENABLE_WINDOW_INPUT | ENABLE_MOUSE_INPUT );

SetConsoleTitle("Console de Teste");
// Loop to read and handle the input events.
while (1)
{
// Wait for the events.
ReadConsoleInput(
Hentrada, // input buffer handle
irInBuf, // buffer to read into
128, // size of read buffer
&cNumRead); // number of records read

// Dispatch the events to the appropriate handler.


for (i = 0; i < cNumRead; i++)
{
switch(irInBuf[i].EventType)
{
case KEY_EVENT: // keyboard input
KeyEventProc(irInBuf[i].Event.KeyEvent);
break;
case MOUSE_EVENT: // mouse input
MouseEventProc(irInBuf[i].Event.MouseEvent);
break;
case WINDOW_BUFFER_SIZE_EVENT: // scrn buf. resizing
ResizeEventProc(
irInBuf[i].Event.WindowBufferSizeEvent);
break;
case FOCUS_EVENT: // disregard focus events
case MENU_EVENT: // disregard menu events
break;
default:
break;
}
}
}
return 0;
}

VOID KeyEventProc(KEY_EVENT_RECORD quer)


{
COORD pos;
pos.X=1;
pos.Y=5;
SetConsoleCursorPosition(Hsaida,pos);
if(quer.bKeyDown)
{
if(quer.uChar.AsciiChar !=0) printf("Letra: %c ",quer.uChar.Asc
iiChar);
else printf("Especial: %d ",quer.wVirtualKeyCode);
}
else printf("Tecla Suspensa");
}
void MouseEventProc(MOUSE_EVENT_RECORD mer)
{
COORD pos;
pos.X=1;

switch(mer.dwEventFlags)
{
case 0:
pos.Y=3;
SetConsoleCursorPosition(Hsaida,pos);
printf("button press: %d ",mer.dwButtonState);
break;
case DOUBLE_CLICK:
pos.Y=3;
SetConsoleCursorPosition(Hsaida,pos);
printf("double click ");
break;
case MOUSE_MOVED:
pos.Y=1;
SetConsoleCursorPosition(Hsaida,pos);
printf("Posicao mouse (%2d, %2d)",mer.dwMousePosition.X, mer.dwMouse
Position.Y);
break;
case MOUSE_WHEELED:
pos.Y=3;
SetConsoleCursorPosition(Hsaida,pos);
printf("vertical mouse wheel: %d",mer.dwButtonState);
break;
default:
pos.Y=3;
SetConsoleCursorPosition(Hsaida,pos);
printf("nada ");
break;
}
}
VOID ResizeEventProc(WINDOW_BUFFER_SIZE_RECORD wbsr)
{
COORD pos;
pos.X=1;
pos.Y=7;
SetConsoleCursorPosition(Hsaida,pos);
printf("\n\nResize event\n\n");
}

You might also like