Я создаю программу на C ++ с SDL, и мне нужно, чтобы при нажатии клавиши появлялось окно сообщения. Мой код создает окно и может писать, когда я нажимаю клавишу. Вот что уже есть:
#include <SDL/SDL.h>
#include <stdlib.h>bool wait_for_events ()
{
SDL_WM_SetCaption("TESTE DE RATO E TECLAS", "TESTE DE RATO E TECLAS"); //tituloSDL_Surface* screen = SDL_SetVideoMode(640, 480, 0, 0); // criação da janelaSDL_Surface* temp = SDL_LoadBMP("sdl_logo.bmp"); // leitura do bitampSDL_Surface* bg = SDL_DisplayFormat(temp); // converterSDL_FreeSurface(temp);
SDL_Event event;
int status;
char *key;
bool quit = false;
printf("Prima 'esc' ou pressione o botao 'x' para sair\n");
while ( !quit ) {
status = SDL_WaitEvent(&event);
if ( !status ) {
printf("SDL_WaitEvent error: %s\n", SDL_GetError());
return false;
}
switch (event.type) {
case SDL_KEYDOWN:
key = SDL_GetKeyName(event.key.keysym.sym);
printf("A Tecla '%s' Foi Pressionada\n", key );
if ( event.key.keysym.sym == SDLK_ESCAPE )
quit = true;
break;
case SDL_MOUSEBUTTONUP:
printf("Solto\n");
break;
case SDL_MOUSEBUTTONDOWN:
printf("Pressionado\n");
break;
case SDL_QUIT:
exit ( 1 );
break;
}
SDL_BlitSurface(bg, NULL, screen, NULL); // desenho do fundoSDL_UpdateRect(screen, 0, 0, 0, 0);
}SDL_FreeSurface(bg);SDL_Quit();
return true;
}
int main()
{
SDL_Surface *screen;
//iniciação do sistema de video
if ( SDL_Init( SDL_INIT_VIDEO ) < 0 ) {
fprintf(stderr, "Erro na inicializacao do SDL: %s\n", SDL_GetError());
exit(1);
}
atexit(SDL_Quit);
//tamanho da janela, resolução bits
screen = SDL_SetVideoMode(640, 480, 16, SDL_SWSURFACE);
if ( screen == NULL ) {
fprintf(stderr, "Erro na resolucao 640x480 video: %s\n", SDL_GetError());
exit(1);
}
wait_for_events();
return 0;
}
простой способ для сообщения:
char buf[1024];
sprintf(buf, "xmessage -center \"%s\"", mymessage);
system(buf);
для правильной интеграции с графическим интерфейсом может быть лучше использовать gtk / qt.
Других решений пока нет …