Bucle de mensajes de la consola Vc
VOID ResizeEventProc(WINDOW _ BUFFER _ TAMAÑO _ RECORD);
VOID KeyEventProc(KEY _ EVENT _ RECORD);
VOID GetInputEvents(VOID);
DWORD main(vacío)
{
Procesando hStdin
DWORD cNumRead, fdwMode, fdwSaveOldMode, I;
INPUT _ RECORD irin buf[128];
//Obtiene el identificador de entrada estándar.
HST din = GetStdHandle(STD_INPUT_HANDLE);
if(HST din = = INVALID_HANDLE_VALUE)
MyErrorExit(" GetStdHandle " );
//Guarde el modo de entrada actual y restáurelo al salir.
If (!GetConsoleMode(HST din amp; fdwSaveOldMode))
MyErrorExit(" GetConsoleMode ");
// Habilitar eventos de entrada de ventana y mouse.
FD wmode = HABILITAR _ VENTANA _ ENTRADA | HABILITAR _ MOUSE _ ENTRADA
If (!SetConsoleMode(hStdin, fdwMode))
MyErrorExit(" SetConsoleMode ");
//Bucle para leer y procesar eventos de entrada.
mientras (1)
{
//Esperando eventos.
If (!ReadConsoleInput(
hStdin, //Ingrese el identificador del búfer
irInBuf, //Búfer a leer
128, //El tamaño del buffer de lectura
ampcNumRead) ) //El número de registros leídos
MyErrorExit(" ReadConsoleInput ");
// Envía el evento al controlador apropiado.
for(I = 0; i ltcNumReadi)
{
switch(irInBuf[i].EventType)
{< / p>
case KEY_EVENT: //Entrada de teclado
KeyEventProc(irin buf[I]. event . key event);
Break;
case mouse_event: //entrada del mouse
MouseEventProc(irin buf[I]. event. mouse event);
Break;
Caso window_buffer ZONE_SIZE_EVENT://scrnbuffer .
Resize
ResizeEventProc(
irin buf[I]. event . windowbuffersizeevent);
Break;
Case focus_event: //Ignorar eventos de enfoque
Caso menu_event: //Ignorar eventos de menú
Break;
Valor predeterminado:
MyErrorExit( "Tipo de evento desconocido"
Romper
}
}
}
Devuelve 0; p>}
Creo que el "Código MSDN" le resultará útil.