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。
















![[c++] 意识需要转变的一个例子,全局变量的构造函数先于main执行](https://img-blog.csdnimg.cn/direct/f8d511daa1704d4cb36a635b90c5ef1a.png)


