做一个展示图片的界面,但打开图片返回主菜单后,主菜单的按钮用不了了

0

做一个展示图片的界面,但打开图片返回主菜单后,主菜单的按钮用不了了。不知道是程序哪个地方有问题。怎样使开打图片返回后还能继续使用主菜单。

#include <graphics.h> // 引用 EasyX 图形库
#include <conio.h>
#include <stdio.h>
#include <io.h>

int main()
{
	IMAGE img1;
	IMAGE img2;
	IMAGE img3;
	initgraph(1366, 700);
	if (_waccess(_T("res\\welcome.jpg"), 0) < 0)
	{
		printf("文件不存在,原因可能是:1.资源不存在;2.路径错误;3.无法识别文件(夹)名\n");
		_getch();
		return 0;
	}
	loadimage(&img1, _T("res\\welcome.jpg"), 0, 0);
	_T("res\\welcome.jpg");
	putimage(0, 0, &img1);
	MOUSEMSG msg;//定义变量,保存鼠标消息
	FlushMouseMsgBuffer();// 清空鼠标消息缓冲区,避免无效鼠标信息带入到正式判断中
	while (true) // 主循环,循环监听鼠标信息
	{
		while (MouseHit())	//监听鼠标信息;当有鼠标消息的时候执行,可检测连续的鼠标信息
		{
			msg = GetMouseMsg();//获取鼠标消息
			if (WM_LBUTTONDOWN == msg.uMsg)//判断鼠标信息;鼠标左键按下
			{
				if (msg.x > 232 && msg.x < 498 && msg.y > 478 && msg.y < 543)//鼠标点击特定区域,即ENTER按钮所在区域
				{
					if (_waccess(_T("res\\welcome_button.jpg"), 0) < 0)
					{
						printf("1");
						_getch();
						return 0; // 资源不存在时,退出程序,不继续往下
					}
					loadimage(&img2, _T("res\\welcome_button.jpg"), 0, 0);
					_T("res\\welcome_button.jpg");
					putimage(0, 0, &img2);
					Sleep(100);
					if (_waccess(_T("res\\startup.jpg"), 0) < 0)
					{
						printf("文件不存在,原因可能是:1.资源不存在;2.路径错误;3.无法识别文件(夹)名\n");
						_getch();
						return 0; // 资源不存在时,退出程序,不继续往下
					}
					loadimage(&img3, _T("res\\startup.jpg"), 0, 0);
					_T("res\\startup.jpg");
					putimage(0, 0, &img3);

					FlushMouseMsgBuffer();// 清空鼠标消息缓冲区,避免无效鼠标信息带入到正式判断中
					while (true)
					{
						while (MouseHit())
						{
							msg = GetMouseMsg();
							if (WM_LBUTTONDOWN == msg.uMsg)//判断鼠标信息;鼠标左键按下
							{
								if (msg.x > 1239 && msg.x < 1334 && msg.y > 20 && msg.y < 62)
								{
									loadimage(&img1, _T("res\\welcome.jpg"), 0, 0);
									_T("res\\welcome.jpg");
									putimage(0, 0, &img1);

								}
							}
						}
					}
				}
			}
		}
	}
	getchar(); // 暂停程序运行,查看输出结果
	return 0;
}

ava
罗泽文

2021-5-6

1

代码很有问题,一下用了 4 个 while 没必要。可以考虑下面结构:

while (true) // 主循环,循环监听鼠标信息
	{
		if (MouseHit())
		{
			msg = GetMouseMsg();//获取鼠标消息

			if (WM_LBUTTONDOWN == msg.uMsg)//判断鼠标信息;鼠标左键按下
			{
				if (msg.x > 232 && msg.x < 498 && msg.y > 478 && msg.y < 543)//鼠标点击特定区域,即ENTER按钮所在区域
				{
					//....
					//...	

					if (_waccess(_T("。。。。"), 0) < 0)
					{
						printf("1");
						_getch();
						return 0; // 资源不存在时,退出程序,不继续往下
					}
					loadimage(&img2, _T("。。。g"), 0, 0);
					putimage(200, 0, 100, 30, &img2, 0, 0);
					Sleep(100);
					if (_waccess(_T("F:\\temp.png"), 0) < 0)
					{
						printf("文件不存在,原因可能是:1.资源不存在;2.路径错误;3.无法识别文件(夹)名\n");
						_getch();
						return 0; // 资源不存在时,退出程序,不继续往下
					}
					loadimage(&img3, _T("。。。"), 0, 0);
					putimage(110, 0, 100, 30, &img3, 0, 0);

					//..........
				}
				else if (msg.x > 1239 && msg.x < 1334 && msg.y > 20 && msg.y < 62)
				{
					loadimage(&img1, _T(".打开图片..."), 0, 0);
					putimage(0, 0, &img1);

					//...
					//...
				}
			}
		}

		Sleep(6);
	}
ava
xiongfj ◑◑

2021-5-7

技术讨论社区