进度条和滑块
-
-
如何初始化进度条和滑块的数值范围和默认的位置
// 设置默认的范围值
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;
} -