MFC控件编程:旋转按钮、进度条和滑块控件

旋转按钮(微调按钮) : 对应的控件类是CSpinButtonCtrl

进度条:对应的控件类是CProgressCtrl

滑块:对应的控件类是CSliderCtrl

对这三个控件的操作都是同过与之相关联的控件类完成的,并且这三个控件有极大的相似性,故这里放到一起

先认识下:

Spin:            Progress:             Slider:

常用函数:

   SetRange()/GetRange();        // 设置、获取控件表示的范围
   /* 设置控件的增量(步长) */
   CSpinButtonCtrl::SetAccel
   CProgressCtrl::SetStep
   CSlierCtrl::SetPageSize
   CSliderCtrl::SetLineSize

   SetPos()/GetPos();                    // 设置、获取当前数值

另外:旋转按钮通常和编辑框一起使用,所以使用前需要设置两者的伙伴关系。

使用案列程序:

Spin控件和编辑框控件的关联设置如下:  勾选:Auto buddy 和  Set buddy interger

程序界面设置如下:

为了方便操作控件:分别为Progress、Slider、Spin控件关联三个控件类型的变量:m_wndProgress、m_wndSlider、m_wndSpin

具体功能函数显示如下:

/*************************************
   初始化控件函数
**************************************/
void CCtrl4Dlg::InitCtrl()
{
	// 设置控件的数值范围
	m_wndSpin.SetRange (0, 100);
	m_wndProgress.SetRange (0, 100);
	m_wndSlider.SetRange (0, 100);

	// 设置控件的步长
	UDACCEL accel = {0};
	accel.nSec = 1;// 设置按住几秒时间开始快输增长
	accel.nInc = 1;// 增长率
	m_wndSpin.SetAccel (1, &accel);

	m_wndProgress.SetStep (10);
	m_wndSlider.SetLineSize (5); // 设置鼠标点击和光标按键的增量
	m_wndSlider.SetPageSize (20);// 设置键盘翻页按键的增量

	// 设置每个刻度的值,需要Slider控件勾选"Tic marks" 和 "Auto tics"样式
        m_wndSlider.SetTicFreq (20);
}
/***********************************************************
   "增长"按钮消息响应函数
************************************************************/
void CCtrl4Dlg::OnBtnAdd()
{
	// TODO: Add your control notification handler code here
	// 进度条前进一个步长
	m_wndProgress.StepIt ();
	// 获取进度条的当前位置
	int nPos = m_wndProgress.GetPos ();
	// 把获取到的为之设置给Slider和Spin
	m_wndSlider.SetPos (nPos);
	m_wndSpin.SetPos (nPos);
}
/********************************************************************************
   Slider的NM_CUSTOMDRAW消息响应函数,当用户拖动Slider时设置Progress和Spin的位置
*********************************************************************************/
void CCtrl4Dlg::OnCustomdrawSlider(NMHDR* pNMHDR, LRESULT* pResult)
{
	// TODO: Add your control notification handler code here
	// 获取Slider的当前位置
	int nPos = m_wndSlider.GetPos ();
	// 把获取到的为之设置给Progress和Spin
	m_wndProgress.SetPos (nPos);
	m_wndSpin.SetPos (nPos);

	*pResult = 0;
}

Demo下载地址:点击打开链接

MFC控件编程:旋转按钮、进度条和滑块控件,布布扣,bubuko.com

时间: 2024-09-28 22:18:49

MFC控件编程:旋转按钮、进度条和滑块控件的相关文章

旋转按钮、进度条、滑块控件的使用

1.旋转按钮 -对应控件类是CSpinButtonCtrl 2.进度条 -对应控件类是CProgressCtrl 3.滑块 -对应控件类是CSliderCtrl 控件的使用步骤: 1--设置控件表示的数值范围 SetRange/GetRange 2--设置控件的增量/步长 CSpinButtonCtrl::SetAccel CProgressCtrl::SetStep CSliderCtrl::SetPageSize CSliderCtrl::SetLineSize 3--设置/获取当前数值 S

[转载]ExtJs4 笔记(8) Ext.slider 滚轴控件、 Ext.ProgressBar 进度条控件、 Ext.Editor 编辑控件

作者:李盼(Lipan)出处:[Lipan] (http://www.cnblogs.com/lipan/)版权声明:本文的版权归作者与博客园共有.转载时须注明本文的详细链接,否则作者将保留追究其法律责任. 本篇要登场的有三个控件,分别是滚轴控件.进度条控件和编辑控件. 一.滚轴控件 Ext.slider 1.滚轴控件的定义 下面我们定义三个具有代表意义滚轴控件,分别展示滚轴横向.纵向,以及单值.多值选择的特性: [html] <h1>滚轴控件</h1> <div class

Android中进度条类型的控件定义和妙用技巧

Android中进度条控件有3个(不算ProgressDialog),分别是ProgressBar,SeekBar和RatingBar,对于自定义样式来说又得按照需求分为2中情况,第一种是刻度型,第二种是循环类型. 第一种是"刻度型",也就是他有起点和终点,起点值小于终点值 这种样式的修改,要修改三个属性即可 分别是:背景(主要是进度的轨道样式),第一级别滚动条progressDrawable,第二级别progressDrawable 遗憾的是Android提供的api很难设置,不过可

Android 重写系统控件UI,自定义进度条

Android的系统控件没有对应的XML布局文件,界面的逻辑都是在onDraw(Canvas canvas)里面进行绘制 所以如果对控件的外观进行修改就需要重写onDraw(Canvas canvas)方法,控件的功能逻辑可以不变. 下面是继承ProgressBar重写了控件的界面,一个是加了文字的水平进度条,一个是圆圈的进度条 public class HorizontalProgressBarWithNumber extends ProgressBar { private static fi

UI控件之ProgressBar(进度条)

(一)概述 (二)常用属性与基础实例 从官方的API我们可以看到这样一个类的关系图: 常用属性详解 : 对应在java我们可以调用下述方法: 先看看系统给我们提供的进度条吧 运行效果如下: 实现代码: xml文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" andro

IOS版本-两个小球不停的绕中心旋转的进度条

转载请标明出处: http://blog.csdn.net/hanhailong726188/article/details/47375157 本文出自:海龙的博客 一.概述 昨天实现了一个Android版本的小清新动画,可以当成进度条来用,这里补上IOS版本的 二.效果图 三.实现原理 自定义UIView,然后添加两个CALayer,通过CAShapeLayer和UIBezierPath画出两个小圆球,动起来是通过CAAnimation动画,动画包括小球的位移动画.缩放动画.透明动画组合起来的

Android-两个小球不停的绕中心旋转的进度条

转载请标明出处: http://blog.csdn.net/hanhailong726188/article/details/47363911 本文出自:海龙的博客 一.概述 最近做了一个比较清新的进度条,没啥难度的,就是涉及到属性动画和canvas绘制圆形的知识,因为群里有一个问怎么实现的,这里就稍微写了一下原理,先看效果图 二.效果图 Gif录制的帧数有点低,导致稍微有点卡,但是在真实运行的时候一点都不卡 三.实现原理 自定义view 自定义属性动画 canvas画圆 四.代码实现 因为代码

菜鸟实现(三) eclipse 安卓 点击按钮 进度条前进(按钮和进度条分开的)

以下实现的是点击独立的按钮,进度条会动,达到100%时进度条会消失的效果. 网上搜到的都是按钮和进度条合二为一的效果,我就不写了.:) 实现效果预览 XML部分代码 1 <!-- 进度条 --> 2 <ProgressBar 3 android:id="@+id/progressBar1" 4 style="@android:style/Widget.ProgressBar.Horizontal" 5 android:layout_width=&q

jQuery.uploadify-----文件上传带进度条,支持多文件上传的插件

借鉴别人总结的uploadify:基于jquery的文件上传插件,支持ajax无刷新上传,多个文件同时上传,上传进行进度显示,控制文件上传大小,删除已上传文件. uploadify有两个版本,一个用flash,一个是html5.html5的需要付费~所以这里只说flash版本的用法. uploadify官网地址:http://www.uploadify.com/ 上传文件截图: uploadify文档:http://www.uploadify.com/documentation/,在这儿可以查看