C++控制台界面库_事件类

事件类可以获取鼠标,键盘的操作。鼠标事件包括左键点击,右键点击,双击等;键盘事件包括ASCII码键,虚拟键,控制键。

示例代码:点击左键,输出5个a,点击右键,输出5个A,双击退出。按下Q键,ESC键或Alt+F4键退出。

// ConsoleApplication1.cpp : 此文件包含 “main” 函数。程序执行将在此处开始并结束。

#include “console.h”
#pragma comment(lib,“console.lib”)

extern COORD mouse; // 鼠标位置

void jiemian0(); // 界面0

int main()
{
Screen screen;
screen.ShowOrHideCursor(0);
screen.SetTitle(“示例2”);

Event event;
event.AddMouseMode();   // 添加鼠标模式

jiemian0();

event.RestoreMode();	
screen.Close_handle();
return 0;

}

void jiemian0()
{
Screen screen;
screen.SetSize(80, 33);

Event event;   //  定义一个事件对象

while (1)
{
	event.ReadEvent();  //  读取事件
	if (event.Mouse_Event())    //  鼠标事件
	{
		if (event.Left_Button_Pressed())
		{
			event.Get_mouse_position();
			screen.Character_color_num = 2;
			screen.DisplayCharacter(mouse, 'a', 5);
		}

		if (event.Right_Button_Pressed())
		{
			event.Get_mouse_position();
			screen.Character_color_num = 3;
			screen.DisplayCharacter(mouse, 'A', 5);
		}

		if (event.Double_Click())break;
	}

	if (event.Key_Event() && event.Key_Down())   //  键盘事件
	{
		char ch = event.Get_ch();
		WORD vk = event.Get_vk();    // 虚拟键
		DWORD ck = event.Get_ck();  // 控制键

		if (ch == 'q' || vk == VK_ESCAPE)
		{
			break;
		}

		if ((ck & LEFT_ALT_PRESSED || ck & RIGHT_ALT_PRESSED) && vk == VK_F4)  //  Alt+F4键
		{
			break;
		}
	}

}

}

运行效果:

在这里插入图片描述
ReadEvent()是阻塞型的,若要非阻塞性的,可用PeekEvent()函数。

用法:

while(1)
{
if(event.PeekEvent())
{
event.ReadEvent();

}
Sleep(30);
}

猜你喜欢

转载自blog.csdn.net/aier_wl/article/details/107302408