学习了下CSliderCtrl的用法

鼠标精确控制CSliderCtrl控件的滑块 最近用MFC写了个音乐播放器,在做通过鼠标点击CSLiderCtrl来控制滑块,调节音量大小的功能,这种效果很容易想象。刚开始学MFC,第一次使用CSLiderCtrl控件,对这个控件不是非常熟,自带的功能里没有找到能满足我需求的,所以自己捉摸了这个方法,跟大家分享下。       以CSliderCtrl为基类派生出一个新类,我命名为CVolSliderCtrl,添加左击消息响应 阅读详情
 

今天学习了下滑动控制条控件的用法,该控件的行为特性封装在CSliderCtrl类中,重要的成员函数有如下一些:

1、Slider属性:


* 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);

还有一篇是网上转来的关于CSliderCtrl的具体使用的:

  滑动条控制(Slider Control)也叫轨道条控制,其主要是用一个带有轨道和滑标的小窗口以及窗口上的刻度,来让用户选择一个离散数据或一个连续的数值区间。通过鼠标或键 盘来进行数据的选择操作,这在WIN98/95中的很多应用程序中都可以看到,如控制面板中的鼠标等,滑动条既可以是水平方式的也可以是垂直方式的。滑动 条控制的风格如下:

  TBS_HORZ 滑动条是水平方向的

  TBS_VERT 滑动条是垂直方向的

  TBS_LEFT 滑动条位于窗口左侧

  TBS_RIGHT 滑动条位于窗口右侧

  TBS_TOP 滑动条位于窗口顶部

  TBS_BOTTOM 滑动条位于窗口底部

  TBS_BOTH 滑动条位于窗口两侧

  TBS_AUTOTICKS滑动条具有刻度,默认

  TBS_NOTICKS 滑动条不具有刻度

  滑动条的刻度条在每一个数值位置显示一个刻度标记,如果在滑动条上显示某一数值选择区间,则应使用风格TBS_ENABLESELRANGE,此时选择区间两个不再是刻度标记,而是一个小的三角形符号。另外,使用风格TBS_NOTHUMB会使滑标消隐起来。

  滑动条控制在MFC类库中被封装为CSliderCtrl控制,其主要操作是设置刻度范围、绘制刻度标记、设置选择范围和当前滑标位置等。当用 户进行交互操作时,滑动条控制将向其父窗口发送消息WM_HSCROLL,所以在应用程序中应重载父窗口的OnHScroll()成员函数,以便对消息进 行正确处理系统发送的通知代码、滑标位置和指向CSliderCtrl对象的指针等。由于考虑到和水平卷动杆公用同一个成员函数,OnHScroll() 函数参数表中的指针变量被定义为CScrollBar*类型,由于实际上消息是由滑动条产生的,所以在程序中必须把这个指针变量强制转换为 CSliderCtrl*类型。滑动条和卷动杆的消息代码和含义都非常类似如TB_BOTTOM等,所以这种处理方法比较合理。SetRange()函数 用来设置范围,SetPos()函数用来设置当前位置。

  (二)滑动条控制的对象结构

  滑动条控制的建立方法

   CsliderCtrl &SliderCtrl 建立滑动条控制对象结构

   Create 建立滑动条控制对象并绑定对象

  滑动条控制类CSliderCtrl::Create的调用格式如下:

   BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );

  其中参数dwStyle用来确定滑动条控制风格;参数rect用来确定滑动条控制的大小和位置;参数pParentWnd用来确定滑动条控制的父窗口指针;参数nID用来确定滑动条控制的控制符ID值。

  2、滑动条控制的类属性

  滑动条控制对象的类属性包括取得滑动条大小GetLineSize、设置滑动条大小SetLineSize、取得滑动条页大小 GetPageSize、设置滑动条页大小SetPageSize、取得滑动条最大位置GetRangeMax、取得滑动条最小位置 GetRangeMin、取得滑动条范围GetRange、设置滑块最小位置SetRangeMin、设置滑块最大位置SetRangeMax、设置滑动 条范围SetRange、取得滑块当前位置GetSelection、设置滑块当前位置SetSelection、取得滑动条当前位置GetPos和设置 滑动条当前位置SetPos等。

  3、滑动条控制的操作方法

  滑动条控制的操作方法包括清除滑动条当前选择ClearSel、验证滑动条当前位置是否在最大最小位置之间VerifyPos和清除当前刻度标志ClearTics。

  滑动条控制的应用技巧示例

  1、利用应用程序向导AppWizard生成基于对象框的应用程序CSlidDlg;

  2、在对话框中设置滑动条控制,其ID为IDC_SLIDER;

  3、在对话框初始代码中增加控制的范围和位置:

  (1)在SlidDlg.h中设置数据成员,用来表示滑动条的当前值:

//SlidDlg.h

class CSlidDlg:public Cdialog

{ ......//其它代码

public:

int m_nCur;

......//其它代码

}

  (2)在SlidDlg.cpp中设置初始状态

BOOL CSlidDlg::OnInitDialog()

{ Cdialog::OnInitDialog();

......//其它代码

//TODO:Add extra initialization here

CSliderCtrl *pSlidCtrl=(CSliderCtrl*)GetDlgItem(IDC_SLLIDER);

pSlidCtrl->SetRange(1,5,TRUE);//设置滑动条范围

pSlidCtrl->SetPos(2);//设置滑动条位置

......//其它代码

return TRUE;

}

  (3)完善滑动条的消息处理,利用类向导ClassWizard增加对话框窗口的WM_HSCROLL消息处理函数,并取得滑标所指位置值:

void CSlidDlg::OnHScroll(UINT nSBCode,UINT nPos,CScrollBar *pScrollBar)

{ //TODO:Add your message handler?

Cdialog::OnHScroll(nSBCode,nPos,pScrollBar);

CSliderCtrl *pSlidCtrl=(CSliderCtrl*)GetDlgItem(IDC_SLLIDER);

m_nCur=pSlidCtrl->GetPos();//取得当前位置值

}

Visual C++中CSliderCtrl控件应用及界面编程.zip 本文还有配套的精品资源,点击获取 简介:在Windows编程中,Visual C++利用MFC库提供丰富的图形用户界面控件支持。本压缩包内容包含有关界面编程特别是滑块控件(CSliderCtrl)的深入介绍。该控件允许用户通过滑动选择数值,常用于音量调节和进度条等界面元素。文章详细讲解了CSliderCtrl控件的属性和成员函数,以及如何在Visual C++项目中实际使用... 阅读详情

相关推荐

掌握自绘CSliderCtrl的完整指南

CSliderCtrl是一个标准的Windows滑动条控件,它允许用户通过移动滑块在一定范围内选择一个值。开发者可以将其集成到MFC应用程序中,以实现用户界面的动态交互性。为了实现自绘的滑块控件,我们需要从MFC的标准滑块控件派生出一个新的类,然后重载该控件的OnPaint()方法。以下是一个创建自定义窗口类的示例代码:public:在上面的代码中,我们声明了一个继承自的类,并声明了一个消息映射宏,用于定义消息映射函数。需要注意的是,我们还需要在类的实现文件中定义。

weixin_28235889的博客 539

VC MFC滑块(CSliderCtrl)控件

从CSliderCtrl类派生出子类CNewSliderCtrl,由于滑块控件不像前几个控件那样复杂,所以自绘,就直接在WM_PAINT消息处理函数中进行就行了,给CSliderCtrl添加WM_PAINT消息处理函数,这里我仅简单的自绘一下。//设置滑块范围,nMin最小值,nMax最大值。//获取滑块通道区域。//获取滑块通道区域。

d3582077的专栏 833

Sentence-BERT 语义相似度双塔模型

论文介绍 发表:2019,EMNLP 论文题目:《Sentence-BERT:sentence embeddings using siaese BERT-networks》 论文地址:https://arxiv.org/abs/1908.10084 Github:https://github.com/UKPLab/sentence-transformers 适用领域: 句向量生成 语义相似度计算 语义搜索 无监督任务(聚类) 1 概述 在20年之前的各种预训练模型中,比如bert,XLNet,Alb

weiyaner的博客 9194

MFC中CSliderCtrl的使用(收集)

在MFC中滑动条(CSliderCtrl)是个常用的控件,用法如下: 主要要方法有: 1、设置、取得滑动范围: void SetRange( int nMin, int nMax, BOOL bRedraw = FALSE ); void GetRange( int& nMin, int& nMax ) const; 2、设置、取得按下左右箭头滑动间隔: int SetLineSiz

striver1205的专栏 1万+

手把手教你用TP4056和PMOS管搭建锂电池自动切换电路(含元器件选型指南)

本文详细介绍了如何使用TP4056和PMOS管搭建锂电池自动切换电路,包括核心架构设计、元器件选型指南和PCB布局优化。通过智能充电算法和电源路径切换模块,实现外部供电与锂电池的无缝切换,提升便携式设备的电源管理效率。

julia4scientist的博客 890

CTP开发实战:如何高效处理预埋单与委托单的完整流程(附代码示例)

本文深入探讨了CTP开发中预埋单与委托单的完整处理流程,从订单生命周期理解、核心代码实现到异步事件处理与系统健壮性构建。通过详细的代码示例和状态机分析,为开发者提供了构建高可靠订单处理系统的实战指南,重点解决了状态同步、异常恢复等关键工程挑战。

weixin_29234239的博客 117

csliderctrl详解

CSliderCtrl 类表示滑块控件 (Slider Control),也称为跟踪条。滑块控件 (Slider Control) 是一个包含一个滑块和可选刻度线的窗口。当用户使用鼠标或者箭头键移动滑块时,滑块控件 (Slider Control) 发送通知消息以指示此更改。 当希望用户选择一个不连续的值或者某个范围中一组连续值时,滑块控件 (Slider Control) 很有用。例如

heary29的专栏 2818

【文献阅读笔记】之基于注意力机制的深度学习路面裂缝检测

中文,计算机辅助设计与图形学学报,第 32 卷 第 8 期,2020 年 8 月。 DOI: 10.3724/SP.J.1089.2020.18059 摘要: 为实现自动准确地检测路面裂缝, 提升路面裂缝检测效果, 提出了一种基于注意力机制的裂缝检测网络 (attention-based crack networks, ACNet). 该网络采用编码器-解码器网络构架, 编码器采用 ResNet34 为骨干网, 提取路面裂缝特征; 在编码器和解码器间加入基于注意力机制的特征模块(attention-b

qq_44785998的博客 7593

十、MFC控件(二)

3)添加下拉列表控件(Combo Box),设置为Drop List,用于选择列表控件的风格。CListCtrl类,父类为CWnd,封装了关于列表控件的操作。小图标(LVS_SMALLICON),相当于文件夹小图标。(2)添加列表控件(从工具箱中拖拽 List Condtrol控件)(1)创建(Win32控制台)项目(MFCFileFind)列表(LVS_LIST),相当于文件夹列表。(7)在对话框初始化函数添加选项,设置列表的报表风格的列。(2)添加树控件(从工具栏拖拽 Tree Control)...

liutit的博客 996

Hierarchical Flow Partition(Top-down&&Bottom-up)

hierarchy flow是将设计切分成多个block,分别处理单个block,然后完成后,将它们进行拼接以完成最终的chip。一般划分为三个阶段:chip planning;physical budget就是pin assignmenthierarchy flow实现的方法有两种,一种是top-down,另一种是bottom-up,无论是哪种,都是都要通过flatten的方法分别全局范围进行优化实现。

qq_39493558的博客 3072

告别Keil手动分区!用CubeMX+VS Code一键生成带Bootloader的STM32 OTA工程

本文详细介绍了如何利用STM32CubeMX和VS Code实现STM32 OTA工程的自动化构建,告别传统Keil手动分区的繁琐流程。通过图形化配置Flash分区、自动生成链接脚本以及实现Bootloader跳转逻辑,开发者可以高效完成远程升级功能开发,显著提升嵌入式开发效率。

weixin_33720956的博客 389

c语言滑块控件的使用方法,MFC中滑块CSliderCtrl的使用

在MFC中滑动条(CSliderCtrl)是个常用的控件,用法如下:主要要方法有:1、设置、取得滑动范围:void SetRange( int nMin, int nMax, BOOL bRedraw = FALSE);void GetRange( int& nMin, int& nMax ) const;2、设置、取得按下左右箭头滑动间隔:int SetLineSize( int...

weixin_28884213的博客 1062

深度学习【46】pix2pixHD

英伟达的pix2pixHD,能够合成高清的2048*1024图片,简直振奋人心。pix2pixHD是我之前介绍过的pix2pix的改进版本,使用多由粗到精的G网络和多尺度D网络(每个D网络都是用了pix2pix中同样的patch技术)。论文一开始用pix2pix尝试合成更高分辨率的图片,但发现效果不好,训练也很不稳定。所以就对pix2pix进行了一顿魔改。我们来看看他们是怎么改进的。由粗到精的G网络

DCD_LIN的博客 1万+

CSliderCtrl的使用

CSliderCtrl类的成员函数,可以对轨道条进行查询和设置: 用GetRange和SetRange来查询和设置轨道条的范围,缺省的范围是0-100.函数的声明为 void GetRange( int& nMin, int& nMax ) const; void SetRange( int nMin, int nMax, BOOL bRedraw = FALSE ); 参数nMin和nM

行云织梦 7390

Orange3实战教程:文本挖掘---主题建模

主题建模通过LDA、LSI或HDP算法分析文档集合,自动发现隐含主题结构。组件输入为文档语料库,输出包括带主题权重的语料库、主题词分布及完整主题数据。不同算法特性各异:LSI允许正负权重但解释性较弱,LDA更易解释,HDP参数复杂需谨慎设置。结果可结合词云、热力图等可视化工具分析主题特征及分布。示例显示如何通过预处理文本、选择算法(如提取5个LDA主题),并利用MDS和箱线图探索主题间关系及关键词分布。

err2008的专栏 365

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

VC++中CSliderCtrl用法

<br />在MFC中滑动条(CSliderCtrl)基本用法如下:<br />1、设置、取得滑动范围:<br />  void SetRange( int nMin, int nMax, BOOL bRedraw = FALSE );<br />  void GetRange( int& nMin, int& nMax ) const;<br /> <br />2、设置、取得按下左右箭头滑动间隔:<br />  int SetLineSize( int nSize );<br />  int GetLin

Iranaway的专栏 2591

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

【MFC】控件自绘之CSliderCtrl

一:      我们通过继承MFC自带的CSliderCtrl,并且重写一个OnPaint函数。当然其实也可以通过继承CStatic去模拟CSliderCtrl来实现自绘。自绘难度并不大。国际惯例,上代码。   二: h 头文件 class CSkinSliderCtrl : public CSliderCtrl { DECLARE_DYNAMIC(CSkinSliderCtrl)

1902

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

MFC CSliderCtrl

1、创建和控件绑定的变量 CSliderCtrl m_Slider; 2、成员函数用法 //设置和获取滑块可移动范围 m_Slider.SetRange(0,100); int iMin = 0; int iMax = 0; m_Slider.GetRange(iMin,iMax); //设置和获取按下左右箭头按钮时时滑块移动的步长(移动的幅度) m_...

Allen Roson 1211

(转)CSliderCtrl控件学习

 (转)CSliderCtrl控件学习 一、        CSliderCtrl简介   CSliderCtrl类的成员函数,可以对轨道条进行查询和设置: 用GetRange和SetRange来查询和设置轨道条的范围,缺省的范围是0-100.函数的声明为 void GetRange( int& nMin, int& nMax ) const; void SetRa

MxiaoVV的专栏 995

CSliderCtrl的各种消息总结

<br />当用户拖拽滑块、点击滑块、按↑↓←→键、按PageUp PageDown键、按Home End键时都会触发滚动条消息(此滚动条已经获得焦点)。这些消息的响应一般在父窗口的WM_HSCROLL中处理(讨论水平滚动条)。下来总结下WM_HSCROLL消息的消息响应函数之nSBCode参数的意思。<br /> <br />函数原型:afx_msgvoidOnHScroll(UINTnSBCode,UINTnPos,CScrollBar*pScrollBar);<br /><br /><br />nSB

3646

CSliderCtrl的自绘制和鼠标定位滑块

鼠标左键定位滑块首先创建一个类继承于CSliderCtrl然后由于要根据鼠标左键定位到相应的位置,则必须要添加消息响应函数OnLButtonDown(),内容见下:void CMySlider::OnLButtonDown(UINT nFlags, CPoint point) {       CRect mChannel;        GetChannelRect(&mChannel);      // 获得Channel(即那条线)的矩形大小       //获得所设置的范围值(这边应在初始化函数中

Mur. 3486

CSliderCtrl

A “slider control” (also known as a trackbar) is a window containing a slider and optional tick marks. When the user moves the slider, using either the mouse or the direction keys, the control sends n

Wang471981125的专栏 1063

控件使用--CSliderCtrl

//CSliderCtrl//当控件移动时,会向父窗体发送//ON_WM_HSCROLL(横向控件发送), ON_WM_VSCROLL(纵向控件发送) 消息BOOL CPic::OnInitDialog() { CDialog::OnInitDialog(); //m_slider 是绑定到控件的控件变量 m_slider.SetRange(0, 255); m_slider.SetPos(5

vinep的专栏 3065

CSliderCtrl和CProgressCtrl的简单使用

由于两个空间相似度比较高,所以放在一起处理 第一步:两个控件的初始化 m_pgs.SetRange32(1, 100); //设置滚动条的范围 m_slider.SetRange(1, 1000); //设置滑块的范围 m_uTimer = SetTimer(1,100,NULL); //启动定时器 m_pgs.SetStep(1); /

荒唐蜀黍的专栏 757

CSliderCtrl的用法

1、Slider属性:* GetRange,SetRange函数用于查询和设置滑动条的取值范围,默认为0~100。函数定义形式如下:void GetRange(int &nMin,int &nMax) const;void SetRange(int nMin,int nMax,BOOL bRedrGETaw=FALSE);* GetPos,SetPos函数用于查询和设置滑动条的当前值。函数

浪的专栏 5507
上一篇: vc6.0连接sql 2000
下一篇: 手动添加消息响应
LuckilyYu
博客等级 码龄20年 72粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值