pedros Temat założony przez niniejszego użytkownika |
[Allegro] Migajacy kursor, oraz wylaczenie programu. » 2009-09-11 19:20:59 Witam. Postanowiłem napisać banalne menu w bibliotece Allegro, c++ i mam problem. A mianowicie: po pierwsze miga mi kursor, a po drugie program ma sie wylaczac po naciśnięcie esc. Wylacza sie jedynie gdy program odpalam w fullscreenie, a mi zalezy aby program mozna bylo odpalac w trybie okienkowym. Oto kod programu: #include <allegro.h>
BITMAP * kursor;
void laduj_kursor() { kursor = load_bitmap( "myszka.bmp", NULL ); if( !kursor ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "Nie moge zaladowac obrazka kursora!" ); allegro_exit(); } };
int mx = 0, my = 0, mb = 0; void myszka() { if( mx != mouse_x || my != mouse_y || mb != mouse_b ) { mx = mouse_x; my = mouse_y; mb = mouse_b; } };
int main() { allegro_init(); install_keyboard(); set_color_depth( 16 ); set_gfx_mode( GFX_AUTODETECT_FULLSCREEN, 640, 480, 0, 0 ); clear_to_color( screen, makecol( 200, 200, 200 ) ); install_mouse(); show_mouse( screen ); unscare_mouse(); BITMAP * bufor = NULL; BITMAP * menu = NULL; bufor = create_bitmap( 640, 480 ); if( !bufor ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "Nie moge utworzyc bufora !" ); allegro_exit(); return 0; } laduj_kursor(); set_mouse_sprite( kursor ); myszka(); menu = load_bmp( "menu.bmp", default_palette ); if( !menu ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "Nie moge zaladowac obrazka menu !" ); allegro_exit(); return 0; } int menu_x = 10, menu_y = 20; while( !key[ KEY_ESC ] ) { clear_to_color( bufor, makecol( 200, 200, 200 ) ); masked_blit( menu, bufor, 0, 0, menu_x, menu_y, menu->w, menu->h ); blit( bufor, screen, 0, 0, 0, 0, 640, 480 ); } destroy_bitmap( bufor ); destroy_bitmap( menu ); destroy_bitmap( kursor ); allegro_exit(); return 0; } END_OF_MAIN(); Probowalem juz chyba wszystkiego. Prosze o pomoc. |
|
DejaVu |
» 2009-09-11 20:22:44 Popraw linijkę: set_gfx_mode( GFX_AUTODETECT_FULLSCREEN, 640, 480, 0, 0 );
/edit: Sprawa kursora myszy + buforowania została już niejednokrotnie wyjaśniona na forum. Nie wyświetlaj kursora - pobieraj jego pozycję i rysuj bitmapę w odczytanym miejscu na buforze. |
|
pedros Temat założony przez niniejszego użytkownika |
» 2009-09-12 12:22:18 Dzieki. Przepraszam za powtorzenie pytania, ale jak poprawic ten kod. Wiem ze aktualnie program jest ustawiony na fullscreen ale co zrobic aby program okienkowy rowniez zamykal sie po nacisnieciu esc.?? |
|
DejaVu |
» 2009-09-12 14:27:24 Będzie się zamykał jeśli będzie okienko aktywne. |
|
« 1 » |