1.创建控件
HWND hScrollBar = ::CreateWindow( WC_SCROLLBAR, //控件类名 NULL, //窗口标题文本 WS_VISIBLE | WS_CHILD | SBS_TOPALIGN, //控件风格样式 10, 100, 200, 40, //控件显示位置坐标 m_hWnd, //父窗口句柄 (HMENU)IDC_SCROLLBAR1, //控件ID号 m_hInstance, //程序实例句柄 0); //附加数据
|
2.设置最小值和最大值(SBM_SETRANGE)
SendMessage(hScrollBar, SBM_SETRANGE, 0, 100);
wParam: 为最小值 lParam: 为最大值
|
3.设置滑块的位置(SBM_SETPOS)
SendMessage(hScrollBar, SBM_SETPOS, 1, TRUE);
wParam: 为要设定的位置
lParam: TRUE为是否刷新窗口,FALSE为不刷新
4.获得滑块当前位置(SBM_GETPOS)
int pos = SendMessage(hCtrl, SBM_GETPOS, 0, 0);
5.通知消息
水平通知消息(WM_HSCROLL)
垂直通知消息(WM_VSCROLL)
水平通知消息示例:
LRESULT MyDialog::OnhScroll(WPARAM wParam, LPARAM lParam) { int nSbCode = LOWORD(wParam); //获得控件通知消息码 HWND hCtrl = (HWND)lParam; //控件句柄 /*WORD lPos = HIWORD(wParam);*/只有拖动滑块时才有滑块当前位置信息 int pos = SendMessage(hCtrl, SBM_GETPOS, 0, 0); //获得当前滑块位置 switch (nSbCode) { case SB_LINELEFT: //点击左边按钮消息 pos-=5; break;
case SB_LINERIGHT: //点击右边按钮消息 pos+=5; break;
case SB_PAGELEFT: //点击滑块左边滚动条空白翻页消息 pos -= 20; break;
case SB_PAGERIGHT: //点击滑块右边空白处为翻页消息 pos += 20; break;
/*case SB_THUMBTRACK: //拖动滑块时消息 SendMessage(hCtrl, SBM_SETPOS, lPos, 1); return true;*/
case SB_THUMBPOSITION: //拖动滑块放开消息 pos = HIWORD(wParam); break; } SendMessage(hCtrl, SBM_SETPOS, pos, 1); //设置当前位置=pos,并重绘控件
CString str; str.Format(TEXT("%d"), pos); SetDlgItemText(IDC_STATIC1, str); return LRESULT(); } |