1 Star 0 Fork 0

HelloWorld/代码库

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
ConsoleEvent.h 2.18 KB
一键复制 编辑 原始数据 按行查看 历史
HelloWorld 提交于 2022-03-26 15:07 +08:00 . add
#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
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/wp-studio/code-base.git
git@gitee.com:wp-studio/code-base.git
wp-studio
code-base
代码库
master

搜索帮助