code :: block 中事件无响应???
sdlgui吧
全部回复
仅看楼主
level 4
be148TTN 楼主
@twtfcu3 的教程配置的....我知道来的人会很少[不高兴]
2014年06月02日 10点06分 1
level 4
be148TTN 楼主
SDL_Window *win = nullptr;
SDL_Renderer *ren = nullptr;
SDL_Event event;
SDL_Rect rt = {20,20,200,200};
int W,H;
int control(void * data);
int main(int argc,char **argv)
{
SDL_Init(SDL_INIT_EVERYTHING);
win = SDL_CreateWindow("test",0,0,800,600,SDL_WINDOW_SHOWN);
ren = SDL_CreateRenderer(win,-1,SDL_RENDERER_PRESENTVSYNC);
SDL_GetWindowSize(win,&W,&H);
SDL_Thread * ctrl = SDL_CreateThread(control,NULL,NULL);
while(rt.x > 0 && rt.x + rt.w < W && rt.y > 0 && rt.y + rt.h < H)
{
SDL_SetRenderDrawColor(ren,0,0,0,0);
SDL_RenderClear(ren);
SDL_SetRenderDrawColor(ren,0xff,0xff,0xff,0xff);
SDL_RenderDrawRect(ren,&rt);
SDL_RenderPresent(ren);
}
SDL_DestroyRenderer(ren);
SDL_DestroyWindow(win);
SDL_Quit();
return 0;
}
int control(void * data)
{
int speed = 10;
while(1)
{
while(SDL_PollEvent(&event) && event.type == SDL_KEYDOWN)
{
switch(event.key.keysym.sym)
{
case SDLK_w:
rt.y -= speed;
break;
case SDLK_s:
rt.y += speed;
break;
case SDLK_a:
rt.x -= speed;
break;
case SDLK_d:
rt.x += speed;
break;
}
}
}
}
//这是代码 好不容易上电脑耍耍的
2014年06月02日 10点06分 2
level 10
我会告诉你,事件处理不能放在子线程吗?
2014年06月02日 11点06分 3
[狂汗]知道了,C4上可以的
2014年06月02日 13点06分
1