C++控制台:为什么运行完这行之后接收不了鼠标输入
  • 板块灌水区
  • 楼主Zxd2009
  • 当前回复10
  • 已保存回复10
  • 发布时间2022/1/14 18:26
  • 上次更新2023/10/28 12:22:16
查看原帖
C++控制台:为什么运行完这行之后接收不了鼠标输入
325995
Zxd2009楼主2022/1/14 18:26

如题,打算随便搞个程序。
我家用的是 Windows 10 系统,C++(C++98)。

示例程序如下:

#include <iostream>
#include <windows.h>
using namespace std;

int main()
{
	// 移除快速编辑模式和插入模式,使程序可以接收鼠标输入
	HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE);
    DWORD mode;
    GetConsoleMode(hStdin, &mode);
    mode &= ~ENABLE_QUICK_EDIT_MODE;
    mode &= ~ENABLE_INSERT_MODE;
    SetConsoleMode(hStdin, mode);

	// 若干代码,中有一行
	system("color f0");

	// 接收鼠标输入
	HANDLE hin = GetStdHandle(STD_INPUT_HANDLE);
	CONSOLE_SCREEN_BUFFER_INFO bInfo;
	INPUT_RECORD	rec;
	DWORD			res;
	while(1)
	{
		ReadConsoleInput(hin, &rec, 1, &res);
		if(rec.EventType == MOUSE_EVENT)
		{
			switch (rec.Event.MouseEvent.dwButtonState)
			{
				case FROM_LEFT_1ST_BUTTON_PRESSED:  // 按下左键
					cout << "# ";
					break;
				case RIGHTMOST_BUTTON_PRESSED:      // 按下右键
					cout << "* ";
					break;
			}
		}
	}
	return 0;
}

先注释掉 system("color f0"); 并编译运行程序,等待数秒后按下鼠标,会出现符号提示。
然后取消注释并再次编译运行程序,等待数秒后按下鼠标,无任何反应发生。

有人能告诉我是为什么吗?

2022/1/14 18:26
加载中...