@張武
當(dāng)下列情況發(fā)生時,SliderCtrl的父窗口都會收到 WM_HSCROLL(水平方向控件) 或者 WM_VSCROLL(豎直方向控件) 通知消息。
<1>. 用鼠標(biāo)點(diǎn)擊滑桿,點(diǎn)擊一次收到一條通知消息.
<2>. 按下鼠標(biāo)拖動滑桿,拖動時會不斷收到通知消息.
<3>. 按下方向鍵,按一次,收到一條通知消息.
<4>. 按下 PageUp , PageDown 鍵,同上.
<5>. 按下 Home, End 鍵,同上.
所以實(shí)現(xiàn)你所要的功能只需要在父窗口里處理 WM_HSCROLL 或者 WM_VSCROLL消息即可。
假設(shè)你的滑桿,編輯框控件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 當(dāng)前位置
sprintf_s(temp, 30, "%d", ((CSliderCtrl*)pScrollBar)->GetPos());
GetDlgItem(IDC_EDIT1)->SetWindowText(temp);
}
}
@zhangyingshuo
class CSliderCtrl : public CWnd
CSliderCtrl也是一個窗口嘛,可以使用 SetWindowPos 或者 MoveWindow
來設(shè)置它在其父窗口中的位置。