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

Jak używać dialogów allegro?

Ostatnio zmodyfikowano 2009-11-10 18:37
Autor Wiadomość
astronom
Temat założony przez niniejszego użytkownika
Jak używać dialogów allegro?
» 2009-11-06 17:53:51
Witam! Mój kłopot dotyczy biblioteki allegro. A dokładniej to chce napisać trochę bardziej rozbudowany program. W którym chce umieścić jakieś menu. Parę przycisków itp. niestety nie wiem jak mogę umieścić kontrolki dialog z tym że programie. Prosił bym o jakiś przykład (muszę przyznać że kurs „Kurs Allegro GUI, C++” jest dla mnie trochę nie czytelny... bo nie ma w nim żadnych przykładów.

Ps: prosiłbym o prosty przykład z użyciem chodzi by 2 buttonów lub innych kontrolek. Jedna może zamykać program. Myślę że po tym jakoś ruszę z moim programem.

Pozdrawiam astronom
P-11323
DejaVu
» 2009-11-08 00:34:45
Niestety będziesz musiał się chyba przebić przez ten kurs... pomimo, że część jego przetłumaczyłem to sam musiałbym studiować te materiały aby Tobie wyjaśnić i dać jakiś przykład, a tego akurat nie chce mi się robić :)
P-11390
pixelmaster
» 2009-11-08 14:34:15
Kiedy bawiłem się z Allegro GUI napisałem coś takiego
C/C++
#include <allegro.h>

int quit( void )
{
    if( alert( "Naprawdę chcesz wyjść ?", NULL, NULL, "&Tak", "&Nie", 't', 'n' ) == 1 )
         return D_CLOSE;
    else
         return D_O_K;
   
}

int about( void )
{
    alert( "* Allegro GUI *",
    "",
    "To jest przykład wykorzystania Allegro GUI",
    "Ok", 0, 0, 0 );
    return D_O_K;
}

int my_button_proc( int msg, DIALOG * d, int c )
{
    int ret = d_button_proc( msg, d, c );
    if( ret == D_CLOSE && d->dp3 )
         return(( int( * )( void ) ) d->dp3 )();
   
    return ret;
}

DIALOG the_dialog[] =
{
    /* (dialog proc)     (x)   (y)   (w)   (h) (fg)(bg) (key) (flags)     (d1) (d2)    (dp)                   (dp2) (dp3) */
   
    { d_clear_proc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
   
    { my_button_proc, 10, 10, 160, 20, 0, 0, 'q', D_EXIT, 0, 0, "&Quit", NULL,( void * ) quit },
    { my_button_proc, 10, 50, 160, 20, 0, 0, 'a', D_EXIT, 0, 0, "&About", NULL,( void * ) about },
   
    { d_keyboard_proc, 0, 0, 0, 0, 0, 0, 0, 0, KEY_F1, 0,( void * ) quit, NULL, NULL },
    { d_yield_proc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
    { NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL }
};

int main( int argc, char * argv[] )
{
    char buf[ 256 ];
    int i;
   
    /* initialise everything */
    if( allegro_init() != 0 )
         return 1;
   
    install_keyboard();
    install_mouse();
    install_timer();
   
    if( set_gfx_mode( GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0 ) != 0 ) {
        if( set_gfx_mode( GFX_SAFE, 640, 480, 0, 0 ) != 0 ) {
            set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
            allegro_message( "Unable to set any graphic mode\n%s\n", allegro_error );
            return 1;
        }
    }
   
   
    set_palette( default_palette );
   
    gui_fg_color = makecol( 255, 255, 255 );
    gui_mg_color = makecol( 0, 60, 255 );
    gui_bg_color = makecol( 100, 28, 29 );
    set_dialog_color( the_dialog, gui_fg_color, gui_bg_color );
   
    the_dialog[ 0 ].bg = makecol( 117, 187, 115 );
    position_dialog( the_dialog, 2, 2 );
    do_dialog( the_dialog, - 1 );
    return 0;
}
END_OF_MAIN()
Jednak aplikacje okienkowe lepiej się robi w bibliotekach takich jak np. Qt itp.
P-11393
astronom
Temat założony przez niniejszego użytkownika
» 2009-11-10 18:37:54
Dzięki za odpisanie! Jednak trochę nie ogarniam tego sposobu. Postanowiłem że znajdę inny sposób na mój program.
P-11473
« 1 »
  Strona 1 z 1