代码拉取完成,页面将自动刷新
#ifndef CONSOLEEVENT_H_
#define CONSOLEEVENT_H_
#include<windef.h>
#include<winbase.h>
#include<wincon.h>
#include<stdio.h>
short UnitSize=128;
INPUT_RECORD input_buffer[32768];
VOID ErrorExit(LPCSTR);
VOID (*KeyEvtProc)(KEY_EVENT_RECORD);
VOID (*MouseEvtProc)(MOUSE_EVENT_RECORD);
VOID (*ResEvtProc)(WINDOW_BUFFER_SIZE_RECORD);
void InitConsoleEvent()
{
DWORD fdwMode=ENABLE_WINDOW_INPUT|ENABLE_MOUSE_INPUT;
SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE),fdwMode);
HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE);
DWORD mode;
GetConsoleMode(hStdin, &mode);
mode &= ~ENABLE_QUICK_EDIT_MODE; //盧뇜우醵긍서친駕
mode &= ~ENABLE_INSERT_MODE; //盧뇜꿨흙친駕
mode &= ~ENABLE_MOUSE_INPUT;
SetConsoleMode(hStdin, mode);
}
void Listen()
{
DWORD cNumRead;
if (!ReadConsoleInput(
GetStdHandle(STD_INPUT_HANDLE), // input buffer handle
input_buffer, // buffer to read into
UnitSize, // size of read buffer
&cNumRead)) // number of records read
ErrorExit("ReadConsoleInput");
// Dispatch the events to the appropriate handler.
for(int i=0;i<cNumRead;i++)
{
switch(input_buffer[i].EventType)
{
case KEY_EVENT: // keyboard input
if(KeyEvtProc) KeyEvtProc(input_buffer[i].Event.KeyEvent);
break;
case MOUSE_EVENT: // mouse input
if(MouseEvtProc) MouseEvtProc(input_buffer[i].Event.MouseEvent);
break;
case WINDOW_BUFFER_SIZE_EVENT: // scrn buf. resizing
if(ResEvtProc) ResEvtProc(input_buffer[i].Event.WindowBufferSizeEvent);
break;
case FOCUS_EVENT: // disregard focus events
case MENU_EVENT: // disregard menu events
break;
default:
ErrorExit("Unknown event type");
break;
}
}
}
VOID ErrorExit(LPCSTR lpszMessage)
{
fprintf(stderr, "%s\n", lpszMessage);
// SetConsoleMode(GdtStdHandle(STD_INPUT_HANDLE),fdwSaveOldMode);
ExitProcess(0);
}
#endif
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。