SDK_进度条和滑块

进度条和滑块

  • 进度条和滑块属于通用控件,通用控件的使用需要加 CommCtrl.h 头文件

  • 如何初始化进度条和滑块的数值范围和默认的位置

    // 设置默认的范围值
    SendDlgItemMessage(hWnd, IDC_SLIDER1, TBM_SETRANGE, 0, MAKELPARAM(0, 1000));
    SendDlgItemMessage(hWnd, IDC_PROGRESS1, PBM_SETRANGE, 0, MAKELPARAM(0, 1000));

    // 设置当前的位置
    SendDlgItemMessage(hWnd, IDC_SLIDER1, TBM_SETPOS, TRUE, 500);
    SendDlgItemMessage(hWnd, IDC_PROGRESS1, PBM_SETPOS, 500, 0);
  • 如何响应一个滑块消息,依赖于滚动条

    • 需要注意对响应消息的句柄进行一个过滤

    // 响应滑块的消息
    case WM_HSCROLL:
    {
       // 1. 获取到滑块控件的句柄
       HWND hSlider = GetDlgItem(hWnd, IDC_SLIDER1);

       // 2. 比对句柄值,看是不是它产生的消息
       if (hSlider == (HWND)lParam)
      {
           // 3. 获取滑块所在的位置
           int nPos = SendDlgItemMessage(hWnd, IDC_SLIDER1, TBM_GETPOS, 0, 0);

           // 4. 设置进度条的位置
           SendDlgItemMessage(hWnd, IDC_PROGRESS1, PBM_SETPOS, nPos, 0);
      }

       break;
    }

 

原文地址:https://www.cnblogs.com/ltyandy/p/10910199.html