Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Allegro] Wyświetlanie myszki

Ostatnio zmodyfikowano 2011-12-29 16:14
Autor Wiadomość
Kamil9132
Temat założony przez niniejszego użytkownika
[Allegro] Wyświetlanie myszki
» 2011-12-28 16:13:33
Witam
Mam taki kod:
C/C++
#include <allegro.h>

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, 800, 600, 0, 0 );
    install_mouse();
    show_mouse( screen );
    unscare_mouse();
    BITMAP * bufor = NULL;
    bufor = create_bitmap( 800, 600 );
   
    while( !key[ KEY_ESC ] )
    {
        clear_to_color( bufor, makecol( 100, 100, 100 ) );
        myszka();
       
        textprintf_ex( bufor, font, 20, 20, makecol( 200, 200, 200 ), - 1, "Myszka x = %d, y = %d, klawisz = %d !", mx, my, mb );
        blit( bufor, screen, 0, 0, 0, 0, 800, 600 );
        clear_keybuf();
    }
   
    destroy_bitmap( bufor );
    allegro_exit();
    return 0;
}
END_OF_MAIN();
Nie wyświetla on myszki, a powinien, dlaczego tak się dzieje?
Kod jest skopiowany z tego kursu: » Kurs Allegro 4.x, C++Myszka lekcja
Z małą zmianą w tej linijce:
C/C++
set_gfx_mode( GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0 );
Na:
C/C++
set_gfx_mode( GFX_AUTODETECT, 800, 600, 0, 0 );
P-46488
Gabes
» 2011-12-29 15:22:13
Daj najpierw na bufor a na koniec aby nie było błędu przy zamykaniu programu z powrotem na screen .
C/C++
show_mouse( bufor );
blit( bufor, screen, 0, 0, 0, 0, 800, 600 );
show_mouse( screen );
Można dodawać własne kursory z bitmapy jak i zmieniać na systemowe.
P-46600
pekfos
» 2011-12-29 15:24:05
Najlepiej wyświetlać ręcznie. masked_blitem np.
P-46601
Kamil9132
Temat założony przez niniejszego użytkownika
» 2011-12-29 16:14:51
Dałem to w pętli i już wszystko działa
show_mouse( pamiec );
unscare_mouse();
P-46611
« 1 »
  Strona 1 z 1