滑块控件的使用

新建一个对话框程序,添加一个Slider Control控件和静态文本控件如下:

滑块控件:IDC_SLIDER1,关联控件变量:m_slider

设置滑块控件属性来显示刻度,Auto Ticks:True;Tick Marks:True

静态文本控件:IDC_STATIC_VALUE,关联控件变量m_staticValue


在OnInitDialog()中初始化滑块控件:

m_slider.SetRange(1,50);  //设置范围
	m_slider.SetPos(2);   //设置初始位置
	CString str;
	str.Format("%d",m_slider.GetPos());
	m_staticValue.SetWindowText(str);
	m_slider.SetPageSize(3);   //设置在控件上单击时滑块移动步长
	m_slider.SetTicFreq(5);    //设置刻度间隔

添加消息响应NM_CUSTOMDRAW,以便用户在移动滑块时做出反应

void CMoveTestDlg::OnCustomdrawSlider1(NMHDR *pNMHDR, LRESULT *pResult)
{
	LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);
	// TODO: 在此添加控件通知处理程序代码
	CString str;
	str.Format("%d",m_slider.GetPos());   //获取滑块位置值
	m_staticValue.SetWindowTextA(str);
	*pResult = 0;
}


若想要通过键盘左右方向键控制滑块移动,则重写PreTranslateMessage虚函数

BOOL CMoveTestDlg::PreTranslateMessage(MSG* pMsg)
{
	if( pMsg->message == WM_KEYDOWN )  //如果有键按下
	{
		int nValue=m_slider.GetPos();
		CString str;
		//判断具体键
		switch( pMsg->wParam )
		{ 
		case VK_LEFT://按下左键
			nValue-=1;  //值减小1
			m_slider.SetPos(nValue); //移动滑块
			str.Format("%d",nValue);  
			m_staticValue.SetWindowTextA(str);  //设置静态文本
			break; 

		case VK_RIGHT://按下右键
			nValue+=1;  //值增大1
			m_slider.SetPos(nValue); //移动滑块
			str.Format("%d",nValue);  
			m_staticValue.SetWindowTextA(str);  //设置静态文本
			break;   
		default: 
			break; 
		}
	}

	return CDialogEx::PreTranslateMessage(pMsg);
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值