随笔-4  评论-40  文章-117  trackbacks-0
@张武
当下列情况发生时,SliderCtrl的父窗口都会收到 WM_HSCROLL(水平方向控件) 或者 WM_VSCROLL(竖直方向控件) 通知消息。
<1>. 用鼠标点击滑杆,点击一次收到一条通知消息.
<2>. 按下鼠标拖动滑杆,拖动时会不断收到通知消息.
<3>. 按下方向键,按一次,收到一条通知消息.
<4>. 按下 PageUp , PageDown 键,同上.
<5>. 按下 Home, End 键,同上.

所以实现你所要的功能只需要在父窗口里处理 WM_HSCROLL 或者 WM_VSCROLL消息即可。

假设你的滑杆,编辑框控件ID分别为 IDC_SLIDER1, IDC_EDIT1.

void CScrollBar_TestDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
if( pScrollBar->GetDlgCtrlID() == IDC_SLIDER1 )
{
// nPos就是此时滑杆的位置,显示到 CEdit 就可以了
char temp[30];
sprintf_s(temp, 30, "%d", nPos);

//或者 获取 Slider 当前位置
sprintf_s(temp, 30, "%d", ((CSliderCtrl*)pScrollBar)->GetPos());

GetDlgItem(IDC_EDIT1)->SetWindowText(temp);
}
}
@zhangyingshuo

class CSliderCtrl : public CWnd

CSliderCtrl也是一个窗口嘛,可以使用 SetWindowPos 或者 MoveWindow
来设置它在其父窗口中的位置。