[Lenguaje en C] vlfGuiProgressBarSetProgress VLF

Moderadores: Kravenbcn, largeroliker, fidelcastro, cerealkiller, pspCaracas, dark_sasuke, m0skit0, LnD, ka69, zacky06

Responder
Avatar de Usuario
ElCiberNauta42
Enteradillo
Enteradillo
Mensajes: 29
Registrado: 04 Ago 2011, 03:45
PSN ID: CiberNauta42
Ubicación: Argentina
Contactar:

[Lenguaje en C] vlfGuiProgressBarSetProgress VLF

Mensaje 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?
ElCiberNauta42:

File Mananger

PSP-ODA

6.XX Installer

Avatar de Usuario
Yn$an€
Desarrollador
Desarrollador
Mensajes: 258
Registrado: 11 Feb 2011, 21:44

Re: [Lenguaje en C] vlfGuiProgressBarSetProgress VLF

Mensaje 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.
... after all, we're all alike.

Avatar de Usuario
ElCiberNauta42
Enteradillo
Enteradillo
Mensajes: 29
Registrado: 04 Ago 2011, 03:45
PSN ID: CiberNauta42
Ubicación: Argentina
Contactar:

Re: [Lenguaje en C] vlfGuiProgressBarSetProgress VLF

Mensaje 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...
ElCiberNauta42:

File Mananger

PSP-ODA

6.XX Installer

Avatar de Usuario
Yn$an€
Desarrollador
Desarrollador
Mensajes: 258
Registrado: 11 Feb 2011, 21:44

Re: [Lenguaje en C] vlfGuiProgressBarSetProgress VLF

Mensaje por Yn$an€ »

De nada. Por cierto, tengo pendiente probarme tu homebrew cuando vuelva de vacaciones. :oki:
... after all, we're all alike.

Avatar de Usuario
ElCiberNauta42
Enteradillo
Enteradillo
Mensajes: 29
Registrado: 04 Ago 2011, 03:45
PSN ID: CiberNauta42
Ubicación: Argentina
Contactar:

Re: [Lenguaje en C] vlfGuiProgressBarSetProgress VLF

Mensaje por ElCiberNauta42 »

Ok no ahí problema!
Felices vacaciones!
ElCiberNauta42:

File Mananger

PSP-ODA

6.XX Installer

Responder