EasyX图形化学习(二)

2023-12-14 18:42:45

1.消息处理---鼠标消息:

1.ExMessage结构体:

ExMessage---这个结构体用于保存鼠标消息。

//定义消息结构体变量
ExMessage msg = { 0 };

2.获取消息:

(1)peekmessage函数:用于获取一个消息,并立即返回。
bool peekmessage(ExMessage *msg, BYTE filter = -1, bool removemsg = true);

参数:

msg:指向消息结构体?ExMessage?的指针,用来保存获取到的消息。

filter:默认 -1?获取所有类别的消息。可以用以下值或值的组合获取指定类别的消息:

removemsg:在 peekmessage 处理完消息后,是否将其从消息队列中移除。

返回值:

如果获取到了消息,返回 true,如果当前没有消息,返回 false。

(2)获取鼠标按键情况:

peekmessage函数会将消息保存到 ExMessage 结构体中,只需查看 msg.message (一个成员变量)的内容即可知道按了什么键。

msg.message 可以成为以下值:

	//获取消息
	while (1)
	{
		if (peekmessage(&msg, EX_MOUSE))
		{
			switch (msg.message)
			{
			case WM_LBUTTONDOWN	:			
					cout << "鼠标左键按下\n" << endl;
					break;			
			case WM_RBUTTONDOWN	:			
					cout << "鼠标右键按下\n" << endl;
					break;			
			case WM_MBUTTONDOWN	:			
					cout << "鼠标中键按下\n" << endl;
					break;			
			case WM_MOUSEWHEEL:	:			
					cout << "鼠标滚轮滚动\n" << endl;
					break;	
            case WM_LBUTTONDBLCLK :
					cout << "鼠标左键双击" << endl;
					break;	    		
			}
		}
	}

注:检测鼠标双击必须在 initgraph 函数参数中传入 EX_DBLCLKS(详见上篇)。

(3)获取按键时鼠标位置:

msg.x?; msg.y 中保存了按键时鼠标的位置坐标。

例:将上面代码改为:

case WM_LBUTTONDOWN	:			
		cout << "鼠标左键按下 pos("<<msg.x<<","<<msg.y<<")" << endl;

(4)获取滚轮时滚动方向:

msg.wheel 中保存了滚轮时滚动方向:

向屏幕滚动为120 ,向自己为 -120。

文章来源:https://blog.csdn.net/2301_78922485/article/details/135000201
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。