Página 1 de 1

[Lenguaje en C] vlfGuiProgressBarSetProgress VLF

Publicado: 12 Ago 2011, 06:13
por ElCiberNauta42
Hola gente!!!
Últimamente eh tenido que pedir varias veces ayuda en el foro, pero siempre me ayudan! y por eso les agradezco, pero esta vez me eh topado con algo en lo que no eh encontrado nada, la barra de progreso, pues eh logrado encontrado el codigo, pero aunque lo edite 700 veces nunca me queda bien, ya que quiero que quede centrado y que la barra de progreso llegue hasta el fin.
Bueno este es el codigo:

Barra

Código: Seleccionar todo

int barra=vlfGuiAddProgressBarEx(20, 200);


el progreso

Código: Seleccionar todo

vlfGuiProgressBarSetProgress(barra,55);


quitar la barra
vlfGuiRemoveProgressBar(barra);



Una última pregunta, esto como funcionaria, por que eh logrado insertarlo, pero como puedo hacer que se sincronice? o puede que no funcione así y este diciendo tontería, ojala se pueda sincronizar, ya que lo que necesito es que al terminar de crear una carpeta por ejemplo esta barra termine y se cierre. Puede ser así como digo?

Re: [Lenguaje en C] vlfGuiProgressBarSetProgress VLF

Publicado: 14 Ago 2011, 13:20
por Yn$an€
A qué te refieres con que se sincronice? Si es lo que yo entiendo por sincronizar, lo tienes que hacer tú a mano. Cuando se den determinados estados en tu programa (llevar escrito una determinada cantidad de datos, terminar una función) tienes que hacer las llamadas a vlfGuiProgressBarSetProgress(barra,int);
No existe otra forma. El programador es el que debe definir los estados. Aunque en determinados casos es relativamente más sencillo. Por ejemplo:

Código: Seleccionar todo

int bytesread;
    int written = 0;
    char buffer[128*1024];
    char *READPATH="ms0:/testcopy.txt";
    char *WRITEPATH="ms0:/testcopied.txt";

int barra=vlfGuiAddProgressBarEx(20, 200); //Creas la barra
vlfGuiProgressBarSetProgress(barra,0); //La pones a cero


    SceUID fs = sceIoOpen(READPATH, PSP_O_RDONLY, 0777);
    SceUID fd = sceIoOpen(WRITEPATH, PSP_O_WRONLY|PSP_O_CREAT, 0777);
    (obtienes el tamaño de archivo) //No me apetece mirarme la doc

    bytesread = sceIoRead(fs,buffer,sizeof(buffer));
while (bytesread > 0){
    sceIoWrite(fd,buffer,bytesread);
    written += bytesread;
    bytesread = sceIoRead(fs,buffer,sizeof(buffer));
    vlfGuiProgressBarSetProgress(barra, written * (100/totalsize)); //Actualizas el estado. La fórmula es suponiendo que la barra
                                                                                             //tiene de rango [0,100]
}
sceIoClose(fs);
sceIoClose(fd);


Aviso: La programación de interfaces gráficas muchas veces requiere de la creación de hilos de proceso auxiliares para realizar tareas con consumo de recursos altos, etc. Espero que en tu caso no lo necesites, aunque bueno, puede ser entretenido.

Re: [Lenguaje en C] vlfGuiProgressBarSetProgress VLF

Publicado: 14 Ago 2011, 22:58
por ElCiberNauta42
Yn$an€ escribió:A qué te refieres con que se sincronice? Si es lo que yo entiendo por sincronizar, lo tienes que hacer tú a mano. Cuando se den determinados estados en tu programa (llevar escrito una determinada cantidad de datos, terminar una función) tienes que hacer las llamadas a vlfGuiProgressBarSetProgress(barra,int);
No existe otra forma. El programador es el que debe definir los estados. Aunque en determinados casos es relativamente más sencillo. Por ejemplo:

Código: Seleccionar todo

int bytesread;
    int written = 0;
    char buffer[128*1024];
    char *READPATH="ms0:/testcopy.txt";
    char *WRITEPATH="ms0:/testcopied.txt";

int barra=vlfGuiAddProgressBarEx(20, 200); //Creas la barra
vlfGuiProgressBarSetProgress(barra,0); //La pones a cero


    SceUID fs = sceIoOpen(READPATH, PSP_O_RDONLY, 0777);
    SceUID fd = sceIoOpen(WRITEPATH, PSP_O_WRONLY|PSP_O_CREAT, 0777);
    (obtienes el tamaño de archivo) //No me apetece mirarme la doc

    bytesread = sceIoRead(fs,buffer,sizeof(buffer));
while (bytesread > 0){
    sceIoWrite(fd,buffer,bytesread);
    written += bytesread;
    bytesread = sceIoRead(fs,buffer,sizeof(buffer));
    vlfGuiProgressBarSetProgress(barra, written * (100/totalsize)); //Actualizas el estado. La fórmula es suponiendo que la barra
                                                                                             //tiene de rango [0,100]
}
sceIoClose(fs);
sceIoClose(fd);


Aviso: La programación de interfaces gráficas muchas veces requiere de la creación de hilos de proceso auxiliares para realizar tareas con consumo de recursos altos, etc. Espero que en tu caso no lo necesites, aunque bueno, puede ser entretenido.


Muchas gracias, un ejemplo perfecto, entendi a la perfección, ahora voy a terminar mi ultimo proyecto. Gracias...

Re: [Lenguaje en C] vlfGuiProgressBarSetProgress VLF

Publicado: 15 Ago 2011, 00:48
por Yn$an€
De nada. Por cierto, tengo pendiente probarme tu homebrew cuando vuelva de vacaciones. :oki:

Re: [Lenguaje en C] vlfGuiProgressBarSetProgress VLF

Publicado: 15 Ago 2011, 16:26
por ElCiberNauta42
Ok no ahí problema!
Felices vacaciones!