Progress bar

berna
01 de Noviembre del 2005
como puedo crear una Progress Bar en Visual C++ en un C++ Source File

Joako
01 de Noviembre del 2005
Una progress bar es relativamente fácil de usar... solo hacen falta unos pocos mensajes para configurarla:

Los tres sendDlgItemMessage que siguen los pongo en el WM_INITDIALOG o en WM_CREATE o algo por el estilo...

SendDlgItemMessage(hdlg, IDC_PROGRESS1, PBM_SETRANGE, (WPARAM)0, (LPARAM)MAKELPARAM(0, 200));
/* Este mensaje lo que hace es poner el rango de la progress de 0 a 200 */
SendDlgItemMessage(hdlg, IDC_PROGRESS1, PBM_SETPOS, (WPARAM)0, (LPARAM)0);
/* Este otro lo que hace es establecer la posición inicial de la barra (en WPARAM) */
SendDlgItemMessage(hdlg, IDC_PROGRESS1, PBM_SETSTEP, (WPARAM)5, (LPARAM)0);
/* Y este, lo que hace es establecer el "largo" del paso que da la progress */

Este último mensaje lo pones donde quieres que avance la progress:

SendDlgItemMessage(hdlg, IDC_PROGRESS1, PBM_STEPIT, (WPARAM)0, (LPARAM)0);
/* Lo que hace es avanzar un paso (el tamaño del paso lo configuramos antes con PBM_SETSTEP) */

Joako
01 de Noviembre del 2005
Si puedes poner un progress en una ventana de dialogo puedes usar lo anterior, sino puedes usar esto:

/* Es necesario que declares global a hWndProgress */

hWndProgress=CreateWindowEx(0,PROGRESS_CLASS,"",WS_CHILD | WS_VISIBLE,0,0,300,20,hdlg,0, hinst,0);
SendMessage(hWndProgress, PBM_SETRANGE, (WPARAM)0, (LPARAM)MAKELPARAM(0, 200));
SendMessage(hWndProgress, PBM_SETPOS, (WPARAM)0, (LPARAM)0);
SendMessage(hWndProgress, PBM_SETSTEP, (WPARAM)5, (LPARAM)0);


y luego:

SendMessage(hWndProgress, PBM_STEPIT, (WPARAM)0, (LPARAM)0);