VC++中轻松实现滑动(Slider)控件

简介:
滑动控件是Windows中最常用的控件之一。一般而言它是由一个滑动条,一个滑块和可选的刻度组成,用户可以通过移动滑块在相应的控件中显示对应的值。通常,在滑动控件附近一定有标签控件或编辑框控件,用于显示相应的值。滑动控件在应用程序中用途级为广泛,如在桌面的属性中就可以看到。为此,让我们一起来看一下它的实现方法。


  (1)在VC++ 6.0中新建一个对话框文档的工程。

  (2)打开资源管理器,在对话框中放置一个EDIT控件,然后在它旁边放上一个Slider控件。基本的框架已经完成了。

  (3)对Slider控件右击,选择“建立类向导”,对刚才的Slider控件定义一个变量m_Slider,类型为CSliderCtrl。

  (4)在对话框初始化的代码BOOL CMy601Dlg::OnInitDialog(),后添加相应的属性。以下是常用的属性设置函数:

  * GetRange,SetRange函数

  用于查询和设置滑动条的取值范围,默认为0~100。函数定义形式如下:

void GetRange(int &nMin,int &nMax) const;
void SetRange(int nMin,int nMax,BOOL bRedrGETaw=FALSE);

  * GetPos,SetPos函数

  用于查询和设置滑动条的当前值。函数定义形式如下:

int GetPos() const;
int SetPos(int nPos);

  * GetLineSize,SetLineSize函数

  用于查询和设置在按一下右或左箭头时滑块的移动量,默认为1个单位。函数定义形式如下:

int GetLineSize() const;
int SetLineSize(int nSize);

  * GetPageSize,SetPageSize函数

  用于查询和设置函滑块和块移动量,块移动量是指当按下PgUp或PgDown时滑块的移动量。函数定 义形式如下:

int GetPageSize() const;
int SetPageSize(int nSize);

  * SetTicFreq函数

  用于设置滑动条刻度的频度。默认为一个单位一个函数。函数定义形式如下:

void SetTicFreq(int nFreq);

  * SetTic函数

  用于在指定的位置设置刻度。Windows默认的刻度是均匀的。函数定义形式如下:

BOOL SetTic(int nTic);

  * ClearTics函数

  用于清除所有的刻度。函数定义形式如下:

void ClearTics(BOOL bRedraw=FALSE); 

  我们在初始化时写入以下语句:


m_Slider.SetRange(-100,100);
m_Slider.SetTicFreq(10);

  即:设置范围为-100到100,刻度为每10个单位一个。

  (5)现在我们加入事件过程代码。

  选择Slider的“事件”然后选择第一个过程(NM_CUSTOMDRAW)随后加入以下代码: 


void CMy601Dlg::OnCustomdrawSlider1(NMHDR* pNMHDR, LRESULT* pResult) 
{
UpdateData(TRUE);
m_Int=m_Slider.GetPos();
UpdateData(FALSE); 
*pResult = 0;
}
  其中m_Int是定义的EDIT控件的类型为INT的变量。至此我们的编辑工作结束了。

  (6)编译运行程序试试吧,很方便就使用了Slider 控件。 

  以上代码在Windows2000,VC++ 6.0/VC++.net上调试通过。
本文转自博客园知识天地的博客,原文链接: VC++中轻松实现滑动(Slider)控件,如需转载请自行联系原博主。
相关文章
|
存储 Cloud Native Linux
C++Qt表格控件一些常用的设置封装
C++Qt表格控件一些常用的设置封装
|
定位技术 C++
C++实现俄罗斯方块(附代码)
C++实现俄罗斯方块(附代码)
C++实现俄罗斯方块(附代码)
|
机器学习/深度学习 C++
C++实现实现逆时针旋转矩阵
C++实现实现逆时针旋转矩阵
C++实现实现逆时针旋转矩阵
|
C++ Windows
C++ Windows窗口程序:子窗口控件之按钮类button
C++ Windows窗口程序:子窗口控件之按钮类button
862 0
|
编译器 C++ 容器
【C++要笑着学】迭代器适配器 | 内嵌类型实现反向迭代器 | 迭代器萃取
上一章讲解 list 模拟实现时,我们简单的提到了反向迭代器,我们说反向迭代器其实就是对正向迭代器的一种封装 —— 适配器模式(配接器模式)。当时我们做的是简单的了解,本章我们就来探讨这一部分的知识。
150 1
【C++要笑着学】迭代器适配器 | 内嵌类型实现反向迭代器 | 迭代器萃取
|
存储 C++
C++异常处理机制由浅入深, 以及函数调用汇编过程底层刨析. C++11智能指针底层模拟实现
C++异常处理机制由浅入深, 以及函数调用汇编过程底层刨析. C++11智能指针底层模拟实现
C++异常处理机制由浅入深, 以及函数调用汇编过程底层刨析. C++11智能指针底层模拟实现
|
存储 Linux C语言
生产者消费者模式保姆级教程 (阻塞队列解除耦合性) 一文帮你从C语言版本到C++ 版本, 从理论到实现 (一文足以)
生产者消费者模式保姆级教程 (阻塞队列解除耦合性) 一文帮你从C语言版本到C++ 版本, 从理论到实现 (一文足以)
生产者消费者模式保姆级教程 (阻塞队列解除耦合性) 一文帮你从C语言版本到C++ 版本, 从理论到实现 (一文足以)
|
设计模式 安全 定位技术
C++从面试常考实现特殊类到单例模式的实现
C++从面试常考实现特殊类到单例模式的实现
C++从面试常考实现特殊类到单例模式的实现
|
存储 Java 应用服务中间件
线程池设计, 从简单的我们平常设计线程池图解,到生活中的类似线程池的处理现实场景, 到简单的C++模拟nginx写的单链表组织工作队列的简单线程池实现 + nginx 部分源码刨析
线程池设计, 从简单的我们平常设计线程池图解,到生活中的类似线程池的处理现实场景, 到简单的C++模拟nginx写的单链表组织工作队列的简单线程池实现 + nginx 部分源码刨析
线程池设计, 从简单的我们平常设计线程池图解,到生活中的类似线程池的处理现实场景, 到简单的C++模拟nginx写的单链表组织工作队列的简单线程池实现 + nginx 部分源码刨析
如何用c++实现异常处理
如何用c++实现异常处理
如何用c++实现异常处理