Progress bar
como puedo crear una Progress Bar en Visual C++ en un C++ Source File
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) */
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) */
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);
/* 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);
