同步操作将从 Tocy/SampleCode 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
// 读取控制台输入缓冲事件,ReadProcessInputBufferDemo// 简单介绍如何处理输入缓冲的事件// 建议使用vs2005以上版本编译 unicode编码#include <windows.h>#include <iostream>using std::wcout;using std::endl;HANDLE hStdin;DWORD fdwSaveOldMode;VOID ErrorExit(LPSTR);VOID KeyEventProc(KEY_EVENT_RECORD);VOID MouseEventProc(MOUSE_EVENT_RECORD);VOID ResizeEventProc(WINDOW_BUFFER_SIZE_RECORD);int _tmain(int argc, _TCHAR* argv[]){// 输出中文std::wcout.imbue(std::locale("chs"));// 设置控制台标题栏SetConsoleTitle(TEXT("ReadProcessInputBufferDemo"));DWORD cNumRead, fdwMode, i;INPUT_RECORD irInBuf[128];int counter=0;// Get the standard input handle.hStdin = GetStdHandle(STD_INPUT_HANDLE);if (hStdin == INVALID_HANDLE_VALUE)ErrorExit("GetStdHandle");// Save the current input mode, to be restored on exit.if (! GetConsoleMode(hStdin, &fdwSaveOldMode) )ErrorExit("GetConsoleMode");// Enable the window and mouse input events.fdwMode = ENABLE_WINDOW_INPUT | ENABLE_MOUSE_INPUT| ENABLE_EXTENDED_FLAGS;if (! SetConsoleMode(hStdin, fdwMode) )ErrorExit("SetConsoleMode");// Loop to read and handle the next 100 input events.while (counter++ <= 100){// Wait for the events.if (! ReadConsoleInput(hStdin, // input buffer handleirInBuf, // buffer to read into128, // size of read buffer&cNumRead) ) // number of records readErrorExit("ReadConsoleInput");// Dispatch the events to the appropriate handler.for (i = 0; i < cNumRead; i++){switch(irInBuf[i].EventType){case KEY_EVENT: // keyboard inputKeyEventProc(irInBuf[i].Event.KeyEvent);break;case MOUSE_EVENT: // mouse inputMouseEventProc(irInBuf[i].Event.MouseEvent);break;case WINDOW_BUFFER_SIZE_EVENT: // scrn buf. resizingResizeEventProc( irInBuf[i].Event.WindowBufferSizeEvent );break;case FOCUS_EVENT: // disregard focus eventscase MENU_EVENT: // disregard menu eventsbreak;default:ErrorExit("Unknown event type");break;}}}// Restore input mode on exit.SetConsoleMode(hStdin, fdwSaveOldMode);return 0;}VOID ErrorExit (LPSTR lpszMessage){fprintf(stderr, "%s\n", lpszMessage);// Restore input mode on exit.SetConsoleMode(hStdin, fdwSaveOldMode);ExitProcess(0);}VOID KeyEventProc(KEY_EVENT_RECORD ker){printf("Key event: ");if(ker.bKeyDown)printf("key pressed\n");else printf("key released\n");}VOID MouseEventProc(MOUSE_EVENT_RECORD mer){#ifndef MOUSE_HWHEELED#define MOUSE_HWHEELED 0x0008#endifprintf("Mouse event: ");switch(mer.dwEventFlags){case 0:if(mer.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED){printf("left button press \n");}else if(mer.dwButtonState == RIGHTMOST_BUTTON_PRESSED){printf("right button press \n");}else{printf("button press\n");}break;case DOUBLE_CLICK:printf("double click\n");break;case MOUSE_HWHEELED:printf("horizontal mouse wheel\n");break;case MOUSE_MOVED:printf("mouse moved\n");break;case MOUSE_WHEELED:printf("vertical mouse wheel\n");break;default:printf("unknown\n");break;}}VOID ResizeEventProc(WINDOW_BUFFER_SIZE_RECORD wbsr){printf("Resize event\n");printf("Console screen buffer is %d columns by %d rows.\n", wbsr.dwSize.X, wbsr.dwSize.Y);}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。