怎样实现只接受鼠标左右键单击消息

0

在学习制作一个扫雷小游戏,在鼠标消息代码这里,遇到了,只要拖动鼠标,程序就会自动运行一轮的问题。怎么能屏蔽鼠标移动带来的影响。换言之就是只接受鼠标点击左右键的消息,而屏蔽其他。谢谢各位大佬

//部分代码
int PlayGame()
{
	int r, c;
	MOUSEMSG msg = { 0 };
	while (1)
	{
		msg = GetMouseMsg();
		switch (msg.uMsg)
		{
		case WM_LBUTTONDOWN:
			r = msg.x / SIZ + 1;
			c = msg.y / SIZ + 1;
			if (map[r][c] >= 19 && map[r][c] <= 28)
			{
				map[r][c] -= 20;
			}
			return map[r][c];
			break;
		case WM_RBUTTONDOWN:
			r = msg.x / SIZ + 1;
			c = msg.y / SIZ + 1;
			if (map[r][c] >= 19 && map[r][c] <= 28)
			{
				map[r][c] += 30;
			}
			else if (map[r][c] > 30)
			{
				map[r][c] -= 30;
			}
			return map[r][c];
			break;
		}
		break;
	}
}

int main()
{
	GameInit();
	GameSet();
	while (1)
	{
		GameDraw();
		PlayGame();
	}
	cin.get();
}

ava
⭐️

2020-7-31

0

没有看到你的全部代码,只是根据自己的理解给你一个解决方案。

如果你想屏蔽鼠标移动消息,只需要在或许鼠标消息的地方加个循环判断就好了。就是把代码:

msg = GetMouseMsg();

修改为忽略鼠标移动消息:

do
	msg = GetMouseMsg();
while(msg.uMsg == WM_MOUSEMOVE);

当然,你可以修改为只接受鼠标左右键按下的消息:

do
	msg = GetMouseMsg();
while(msg.uMsg != WM_LBUTTONDOWN && msg.uMsg != WM_RBUTTONDOWN);

根据你的需要来吧。

ava
慢羊羊

2020-7-31

技术讨论社区