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

[Allegro] GUI- Text Box

Ostatnio zmodyfikowano 2009-11-24 17:00
Autor Wiadomość
eBbi
Temat założony przez niniejszego użytkownika
[Allegro] GUI- Text Box
» 2009-11-23 15:40:20
Mógł by mi ktoś napisać przykładowy programik w którym jakiś tekst wpisujemy do boxa a z boxa zapisywany jest do zmiennej string. Ten kurs alegro-gui o dupe otrzeć. Nic nie jest w nim jasno napisane....
P-11745
pixelmaster
» 2009-11-23 16:06:15
chodzi chyba o edit boxa
dp wskazuje na stringa, a d1 określa maksymalną ilość znaków
C/C++
#define MAX_BYTES_PER_CHAR 4
#define LEN 32

char the_string[( LEN + 1 ) * MAX_BYTES_PER_CHAR ] = "Change Me!";

//...
/* (dialog proc)     (x)   (y)   (w)   (h) (fg)(bg) (key) (flags)     (d1) (d2)    (dp)                   (dp2) (dp3) */
{ d_edit_proc, 160, 130, 160, 8, 0, 0, 0, 0, LEN, 0, the_string, NULL, NULL },
P-11746
eBbi
Temat założony przez niniejszego użytkownika
» 2009-11-23 21:12:34
choć bym chciał dać wam spokój to nie da rady...

Ten twój dialog próbowałem edytować na wszystkie strony byle zadziałało.. Niestety nie dałem rady. Wujek google też przestał współpracować.

skończyłem na tym:


char the_string[] = "Change Me!";

DIALOG* main={ d_edit_proc,       160, 130,  160,    8,   0,  0,    0,      0,     32,   0,    the_string,             NULL, NULL  };

do_dialog(main, -1);

 
ty w ogóle sprawdzałeś czy to okienko działa?
Po zmianie wszystkiego wyskakuje mi taki błąd:
initializer for scalar variable requires one element
 <- do linijki rozpoczynającej się od "DIALOG"

wujek google pisał że to jakiś problem z tą zmienna the_string. Zmieniałem ją na 30 sposobów i dalej nie hula. PLIZ help me
P-11753
pixelmaster
» 2009-11-23 21:49:25
Kodzik, który u mnie działa (dopisałem to co wyżej dałem do http://archiwum.ddt.pl/?TextId=25234)
C/C++
#include <allegro.h>

#define MAX_BYTES_PER_CHAR 4
#define LEN 32

char the_string[( LEN + 1 ) * MAX_BYTES_PER_CHAR ] = "Change Me!";

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_edit_proc, 10, 130, 160, 8, 0, 0, 0, 0, LEN, 0, the_string, NULL, NULL },
    { 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, 320, 240, 0, 0 ) != 0 ) {
        if( set_gfx_mode( GFX_SAFE, 320, 240, 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()
P-11755
eBbi
Temat założony przez niniejszego użytkownika
» 2009-11-23 22:19:36
albo ja nie mam jakiś plików albo ocś. Korzystam z Dev C++ 4.9.9.2

wkleiłem twój cały kod do nowego projektu Allegro static i mi wyskakuje taki błąd:

45: invalid conversion from `const void*' to `void*'

jest to błąd na linijkę:


{ 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  }
[B]};[/B] //<-- tylko ten znaczek

int main(int argc, char *argv[])
{



P-11756
eBbi
Temat założony przez niniejszego użytkownika
» 2009-11-24 00:28:21
albo ja nie mam jakiś plików albo ocś. Korzystam z Dev C++ 4.9.9.2

wkleiłem twój cały kod do nowego projektu Allegro static i mi wyskakuje taki błąd:

45: invalid conversion from `const void*' to `void*'

jest to błąd na linijkę:


{ 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  }
[B]};[/B] //<-- tylko ten znaczek

int main(int argc, char *argv[])
{



P-11757
malan
» 2009-11-24 17:00:10
Przeglądałeś ten temat: http://forum.ddt.pl/?Tid=1662 ?
P-11773
« 1 »
  Strona 1 z 1