EasyX 如何正解使用鼠标的滑轮消息,例如:上滚数值放大,下滚数值变小?

0

需要修改的代码示例:

#include<graphics.h>
#include<math.h>
#include<stdio.h>

int main()
{
	initgraph(1000, 1000, 1);

	int size = 5;

	ExMessage m;
	BeginBatchDraw();
	while (1)
	{
		peekmessage(&m, EX_MOUSE, true);

		switch (m.message)
		{
			// 在这里修改鼠标滑轮的消息
		case WM_MOUSEWHEEL:

			size = m.wheel ;
			break;

			// 这里是通过鼠标中键滑轮控制移动圆的大小变换。
		case WM_MOUSEMOVE:

			fillcircle(m.x, m.y, size);

			FlushBatchDraw();
			cleardevice();
			break;
		}
	}
	EndBatchDraw();
	getmessage(EX_CHAR);
	closegraph();
	return 0;
}
ava
随波逐流

2023-8-12

1

你的代码可以这样修改:

#include <graphics.h>

int main()
{
	initgraph(1000, 1000);
	BeginBatchDraw();

	int r = 10;			// 半径
	int x = 0, y = 0;	// 坐标

	ExMessage m;
	while (1)
	{
		// 控制
		while(peekmessage(&m, EX_MOUSE))
		{
			switch (m.message)
			{
				// 通过鼠标中键滑轮控制移动圆的大小变换
				case WM_MOUSEWHEEL:
					r += m.wheel / 40;

					if		(r < 2)		r = 2;
					else if	(r > 100)	r = 100;

					break;

				// 通过移动鼠标实现圆的移动
				case WM_MOUSEMOVE:
					x = m.x;
					y = m.y;
					break;
			}
		}

		// 根据数据绘制
		cleardevice();
		fillcircle(x, y, r);

		// 延时
		Sleep(10);
		FlushBatchDraw();
	}

	getmessage(EX_CHAR);

	EndBatchDraw();
	closegraph();
	return 0;
}
ava
慢羊羊

2023-8-22

0

这个,只能做到,鼠标滑轮滚动进行计算后,还需要鼠标移动一下才会刷新,滚轮放大放小的数值并应用在填充圆上,看有没有大神再修改为时实的,

#include<graphics.h>
#include<math.h>
#include<stdio.h>

int main()
{
	initgraph(1000, 1000, 1);

		int size = 5;
		int dd = 5;
		int wh;
	ExMessage m;
	BeginBatchDraw();
	while (1)
	{
		peekmessage(&m, EX_MOUSE, true);

		switch (m.message)
		{
			// 在这里修改鼠标滑轮的消息
		case WM_MOUSEWHEEL:

			printf("%d\n", m.wheel);
 			wh = m.wheel;
			if (wh== -120)
			{
			dd+=10;
			m.wheel = 120;
			}
 		if (wh == 120)
			{
			dd-=10;
			m.wheel = -120;
			}
			break;

			// 这里是通过鼠标中键滑轮控制移动圆的大小变换。
		case WM_MOUSEMOVE:

			fillcircle(m.x, m.y, dd);

			FlushBatchDraw();
			cleardevice();
			break;
		}
	}
	EndBatchDraw();
	getmessage(EX_CHAR);
	closegraph();
	return 0;
}
ava
Margoo

2023-8-12

技术讨论社区