[英]SDL program freezes
我正在編寫一個用於測試鼠標的簡單程序。 它可以正常編譯,但是不起作用。 當我啟動它時,窗口凍結。 我究竟做錯了什么?
#include <SDL/SDL.h>
#undef main
int main()
{
if (SDL_Init (SDL_INIT_EVERYTHING) != 0)
return 1;
SDL_Surface* Scr;
if ((Scr = SDL_SetVideoMode (300, 200, 32, 0)) == 0)
return 2;
SDL_Rect Mouse1 = {50, 50, 50, 100};
SDL_Rect Mouse3 = {150, 50, 50, 100};
SDL_Rect Mouse2 = {250, 50, 50, 100};
SDL_Surface Colors;
SDL_Rect Click = {0, 0, 50, 100};
SDL_Rect NoClick = {50, 0, 50, 100};
SDL_FillRect (Scr, 0, SDL_MapRGB (Scr->format, 255, 255, 255));
SDL_FillRect (&Colors, &Click, SDL_MapRGB (Colors.format, 255, 0, 0));
SDL_FillRect (&Colors, &NoClick, SDL_MapRGB (Colors.format, 0, 0, 255));
while (true)
{
if (SDL_GetMouseState (0, 0) & SDL_BUTTON(1))
SDL_BlitSurface (&Colors, &Click, Scr, &Mouse1);
else
SDL_BlitSurface (&Colors, &NoClick, Scr, &Mouse1);
if (SDL_GetMouseState (0, 0) & SDL_BUTTON(2))
SDL_BlitSurface (&Colors, &Click, Scr, &Mouse2);
else
SDL_BlitSurface (&Colors, &NoClick, Scr, &Mouse2);
if (SDL_GetMouseState (0, 0) & SDL_BUTTON(3))
SDL_BlitSurface (&Colors, &Click, Scr, &Mouse3);
else
SDL_BlitSurface (&Colors, &NoClick, Scr, &Mouse3);
if (SDL_GetKeyState (0) [SDLK_ESCAPE])
return 0;
SDL_Delay (17);
}
}
您不處理任何事件。 在您的情況下,請調用SDL_PumpEvents以使SDL處理它們並更新其所有內部狀態:
while (true)
{
SDL_PumpEvents();
// The rest is the same ...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.