新建一個對話框程序,添加一個SliderControl控件和靜態文本控件如下:
滑塊控件:IDC_SLIDER1,關聯控件變量:m_slider
設置滑塊控件屬性來顯示刻度,AutoTicks:True;TickMarks:True
靜態文本控件:IDC_STATIC_VALUE,關聯控件變量m_staticValue
在OnInitDialog()中初始化滑塊控件:
m_slider.SetRange(1,50);//設置范圍
m_slider.SetPos(2);//設置初始位置
CStringstr;
str.Format("%d",m_slider.GetPos());
m_staticValue.SetWindowText(str);
m_slider.SetPageSize(3);//設置在控件上單擊時滑塊移動步長
m_slider.SetTicFreq(5);//設置刻度間隔
添加消息響應NM_CUSTOMDRAW,以便用戶在移動滑塊時做出反應
voidCMoveTestDlg::OnCustomdrawSlider1(NMHDR*pNMHDR,LRESULT*pResult)
{
LPNMCUSTOMDRAWpNMCD=reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);
//TODO:在此添加控件通知處理程序代碼
CStringstr;
str.Format("%d",m_slider.GetPos());//獲取滑塊位置值
m_staticValue.SetWindowTextA(str);
*pResult=0;
}
若想要通過鍵盤左右方向鍵控制滑塊移動,則重寫PreTranslateMessage虛函數
BOOLCMoveTestDlg::PreTranslateMessage(MSG*pMsg)
{
if(pMsg->message==WM_KEYDOWN)//如果有鍵按下
{
intnValue=m_slider.GetPos();
CStringstr;
//判斷具體鍵
switch(pMsg->wParam)
{
caseVK_LEFT://按下左鍵
nValue-=1;//值減小1
m_slider.SetPos(nValue);//移動滑塊
str.Format("%d",nValue);
m_staticValue.SetWindowTextA(str);//設置靜態文本
break;
caseVK_RIGHT://按下右鍵
nValue+=1;//值增大1
m_slider.SetPos(nValue);//移動滑塊
str.Format("%d",nValue);
m_staticValue.SetWindowTextA(str);//設置靜態文本
break;
default:
break;
}
}
returnCDialogEx::PreTranslateMessage(pMsg);
}