1.To create a Progress Bar with Win32 project, firstly, we need to create a Progress Bar with CreateWindowEx(), and then use SendMessage(hwndProgress,PBM_SETRANGE,0,MAKELPARAM(0, 100)) to set the range, use SendMessage(hwndProgress,PBM_SETSTEP,(WPARAM) 1,0) to set step. For code, see:
case WM_INITDIALOG:
hwndProgress = CreateWindowEx(0, PROGRESS_CLASS, NULL,
WS_CHILD | WS_VISIBLE, 20, 20, 260, 17,
hWndDlg, (HMENU)0, hInst, NULL);
SendMessage(hwndProgress,PBM_SETRANGE,0,MAKELPARAM(0, 100));
SendMessage(hwndProgress,PBM_SETSTEP,(WPARAM) 1,0);
case WM_TIMER:
SendMessage(hwndProgress,PBM_STEPIT,0,0);
2.To create a Progress Bar with Windows XP style, we need to link comctl32.lib 6.0 version or high, and specify PBS_MARQUEE flag in CreateWindowsEx(). For whole code, see:
#include <windows.h>
#include <commctrl.h>
#include "Resource.h"
#pragma comment(linker,"/manifestdependency:/"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'/"")
#pragma comment(lib,"comctl32.lib")
//---------------------------------------------------------------------------
HWND hWnd;
HINSTANCE hInst;
HWND hwndProgress;
LRESULT CALLBACK DlgProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
int CurrentStep;
//---------------------------------------------------------------------------
INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
hInst = hInstance;
DialogBox(hInst, MAKEINTRESOURCE(IDD_CONTROLS_DLG),
hWnd, reinterpret_cast<DLGPROC>(DlgProc));
return FALSE;
}
//---------------------------------------------------------------------------
LRESULT CALLBACK DlgProc(HWND hWndDlg, UINT Msg,
WPARAM wParam, LPARAM lParam)
{
INITCOMMONCONTROLSEX InitCtrlEx;
InitCtrlEx.dwSize = sizeof(INITCOMMONCONTROLSEX);
InitCtrlEx.dwICC = ICC_PROGRESS_CLASS;
InitCommonControlsEx(&InitCtrlEx);
switch(Msg)
{
case WM_INITDIALOG:
hwndProgress = CreateWindowEx(0, PROGRESS_CLASS, NULL,
WS_CHILD | WS_VISIBLE|PBS_MARQUEE ,
20, 20, 260, 17,
hWndDlg, (HMENU)0, hInst, NULL);
SendMessage(hwndProgress,PBM_SETMARQUEE,(WPARAM) TRUE,(LPARAM)50);
return TRUE;
case WM_COMMAND:
switch(wParam)
{
case IDOK:
//SendMessage(hwndProgress,PBM_STEPIT,0,0);
//EndDialog(hWndDlg, 0);
return TRUE;
case IDCANCEL:
EndDialog(hWndDlg, 0);
return TRUE;
}
break;
}
return FALSE;
}
IDD_CONTROLS_DLG is ID of the dialog resource.