SDL之鼠标消息

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_38126105/article/details/85227553

在SDL中有一个结构体SDL_Event存放SDL存放事件。将该结构体的地址传入SDL_PollEvent,便可以知道发生了什么事件。

#include "SDL.h"
#include "SDL_image.h"
int main(int argc, char* argv[])
{

	SDL_Init(SDL_INIT_VIDEO);
	SDL_Window* window = SDL_CreateWindow("Tutorial", 100, 100,
	600, 600, SDL_WINDOW_SHOWN);
	SDL_Surface* surface = SDL_GetWindowSurface(window);
	SDL_Surface* picture1 = IMG_Load("C:\\Users\\xxxx\\Desktop\\1.jpg");
	SDL_Surface* picture2 = IMG_Load("C:\\Users\\xxxx\\Desktop\\2.jpg");
	SDL_Event event;
	
	bool quit = false;
	SDL_Rect rect;
	rect.x = 0;
	rect.y = 0;
	//事件驱动
	while (quit == false)
	{
		while (SDL_PollEvent(&event))
		{
			//点击关闭按钮事件
			if (SDL_QUIT == event.type)
			{
				printf("hello world");
				quit = true;
				
			}else if(SDL_MOUSEBUTTONDOWN == event.type)
			{
				//鼠标按下事件
				printf("click");
				if (SDL_BUTTON_LEFT == event.button.button)
				{
					printf("左键按下");
					SDL_BlitSurface(picture1,NULL, surface,NULL);
					SDL_UpdateWindowSurface(window);
				}
				else if (SDL_BUTTON_RIGHT == event.button.button)
				{
					printf("右键按下");
					SDL_BlitSurface(picture2, NULL, surface, NULL);
					SDL_UpdateWindowSurface(window);
				}
			}
			else if (SDL_KEYDOWN == event.type)
			{
				//键盘按下事件
				printf("keybpard");
				SDL_FillRect(surface, NULL, 0);
				if (SDLK_UP == event.key.keysym.sym)
				{
					printf("上被点击");
					SDL_BlitSurface(picture1, NULL, surface, &rect);
				}
				else if (SDLK_LEFT == event.key.keysym.sym)
				{
					rect.x -= 10;
					SDL_BlitSurface(picture1, NULL, surface, &rect);
				}
				else if (SDLK_RIGHT == event.key.keysym.sym)
				{
					rect.x += 10;
					SDL_BlitSurface(picture1, NULL, surface, &rect);
				}
				else if (SDLK_DOWN == event.key.keysym.sym)
				{
					rect.y += 10;
					SDL_BlitSurface(picture1, NULL, surface, &rect);
				}
				SDL_UpdateWindowSurface(window);
			}
		}
	}

	SDL_FreeSurface(surface);
	SDL_FreeSurface(picture1);
	SDL_FreeSurface(picture2);
	SDL_DestroyWindow(window);
	SDL_Quit();
}

猜你喜欢

转载自blog.csdn.net/m0_38126105/article/details/85227553
SDL