Create a Progress Bar with Win32 project

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.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值