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

Allegro GUI

Ostatnio zmodyfikowano 2010-01-17 14:45
Autor Wiadomość
Ivian
Temat założony przez niniejszego użytkownika
Allegro GUI
» 2010-01-16 12:21:08
Mam problem z gui.

Otóż utworzyłem menu na procedurach d_icon_proc ( z uwagi na bitmapowe przyciski )
Wygląda ono tak:

C/C++
DIALOG menu[] =
/* (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 },
    { d_box_proc, 270, 192, 260, 256, 0, 0, 0, 0, 0, 0, NULL },
    { d_icon_proc, 273, 200, 256, 64, 0, 0, 0, D_EXIT, 0, 0, NULL },
    { d_icon_proc, 273, 264, 256, 64, 0, 0, 0, D_DISABLED, 0, 0, NULL },
    { d_icon_proc, 273, 328, 256, 64, 0, 0, 0, 0, 0, 0, NULL },
   
};

//***

menu[ 1 ].fg = makecol( 220, 190, 12 );
for( int i = 2; i < 5; i++ ) {
    menu[ i ].dp = przycisk[ i - 2 ][ 0 ];
    menu[ i ].dp2 = przycisk[ i - 2 ][ 2 ];
    menu[ i ].dp3 = przycisk[ i - 2 ][ 1 ]; }
do_dialog( menu, - 1 );

Flaga na przycisku menu[1] jest ustawiona by zamykało okno dialogowe i przechodziło do wykonywania pętli gry.

Moje pytanie jest jak ustawić flagę na przycisku menu[3] by kończyło pracę z programem?
P-13021
eBbi
» 2010-01-16 12:42:28
P-13028
Ivian
Temat założony przez niniejszego użytkownika
» 2010-01-16 12:48:31
Rozumiem że :

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

Po naciśnięciu tak zwraca D_O_K tak?

Więc jak to wykorzystać żeby ominęło pętle i przeskoczyło do końca programu?
P-13031
pixelmaster
» 2010-01-16 13:03:52
Po naciśnięciu "tak" zwróci D_CLOSE, ale to chyba nie zamknie programu tylko okno dialogowe
P-13035
Ivian
Temat założony przez niniejszego użytkownika
» 2010-01-16 21:34:28
no właśnie... a np. jakaś wartość?

próbowałem jako flagę ustwaic (return a=1) a potem np:
C/C++
if( !a )
{
    //
}
return 0;
}
END_OF_MAIN()
Ale zawsze zwracało a=1 i nie zamykało dialogu.

edit:

Tak mnie natchnęło... Jak sprawdzić czy dana flaga jest ustawiona? (przycisk jest wciśnięty?);
P-13082
pixelmaster
» 2010-01-17 10:39:13
Może coś takiego zadziała ?
C/C++
int quit( void )
{
    if( alert( "Naprawdę chcesz wyjść ?", NULL, NULL, "&Tak", "&Nie", 't', 'n' ) == 1 )
         allegro_exit();
    else
         return D_O_K;
   
}
P-13094
Ivian
Temat założony przez niniejszego użytkownika
» 2010-01-17 11:33:50
i co wtedy np.?

if(!D_O_K)
{
//pętla?
}
P-13103
pixelmaster
» 2010-01-17 12:48:57
nie, wtedy swoim przyciskiem, którym chcesz zamykać aplikację po prostu to wywołujesz
P-13109
« 1 » 2
  Strona 1 z 2 Następna strona