Create a Progress Bar with Win32 project

来源:互联网 发布:java @override 编辑:程序博客网 时间:2024/05/16 13:55

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.