举报

关于多个鼠标事件的问题

0

我的问题是这样的,我设置了多个鼠标事件,这些事件如果是顺序结构 (if 事件1.... esle... if 事件2 else) 这样鼠标点击就没问题,如果是嵌套的 (if 事件1 if 事件2...else...else...)点击事件2就无法运行,请问如何修改

if (m.x >= 395 && m.x <= 500 && m.y >= 45 && m.y <= 85)
{
	if (m.uMsg == WM_LBUTTONDOWN)
	{
		clearrectangle(10, 100, 600, 800);
		//如果按下鼠标左键实现相应功能.
		settextstyle(25, 0, "微软雅黑");
		outtextxy(50, 100, ("第一步,分析题目可知很明显,对于奇数枚硬币,该问题是无解的,"));
		outtextxy(50, 150, ("因为最终所有的硬币都会成对出现,使得硬币的总数是偶数。"));
		outtextxy(50, 200, ("考虑到所有移动的可能,不难发现,对于n=2,4和6的情况,该问题无解。"));
		Sleep(1000);
		outtextxy(700, 500, ("下一步"));
		if (m.x >= 700 && m.x <= 800 && m.y >= 500 && m.y <= 600)
		{
			if (m.uMsg == WM_LBUTTONDOWN)
			{
				clearrectangle(10, 100, 600, 800);
				//如果按下鼠标左键实现相应功能.
				settextstyle(25, 0, "微软雅黑");
				outtextxy(700, 500, ("下一步"));
				outtextxy(50, 250, ("对于n = 8,存在若干个种移动方式,每一次移动都生成一对硬币时移动次数最少。"));
				outtextxy(50, 300, ("4在7上面,6在2上面,1在3上面,5在8上面。"));
				//break;
			}
			else
			{
				outtextxy(70, 700, ("对于n = 8,存在若干个种移动方式,每一次移动都生成一对硬币时移动次数最少。"));
			}
		}
	}
}
ava
process☘️

2020-10-21

举报
0

(if 事件1 if 事件2...else...else...) 这种形式,只满足事件2是不行的,必须先满足事件1再满足事件2,才会满足条件。

你的两个if判断的不同的鼠标事件,但是针对的是同一个鼠标事件变量并且其间该变量没有更新,所以肯定不会同时满足两个if。

ava
慢羊羊

2020-10-21

谢谢解答,为什么两个if之间鼠标事件不会更新呢,那如果我想写的逻辑是发生事件2的前提是事件1发生应该怎么改呢 -  process☘️  2020-10-21
举报
@process☘️ 变量 m 的值又没改变。 -  慢羊羊  2020-10-21
举报
@慢羊羊 谢谢解答我明白了错误原因,那如果我想写的逻辑是发生事件2的前提是事件1发生应该怎么改呢 -  process☘️  2020-10-23
举报
@process☘️ 你需要重新获取鼠标消息。有了新的鼠标消息,再进行新的判断。 -  慢羊羊  2020-10-23
举报
技术讨论社区