在这个方法中加入下面代码
if(m_player.GetPlayState()==3)
{
开始播了
}
else if(m_player.GetPlayState()==1)
{
播放完了
}
else if(m_player.GetPlayState()==2)
{
暂停
}
else if(m_player.GetPlayState()==6)
{
正在缓冲
}
if(m_MyMediaPlayer.GetPlayState()==3)
{
m_oldDuration=m_Control.GetCurrentPosition();
m_Control.SetCurrentPosition(m_oldDuration);
}
===========================================================================
滑动条控制(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、设置滑块最小位置S
etRangeMin、设置滑块最大位置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();//取得当前位置值
}
===============================================================================
在函数OnHScroll捕捉到鼠标点击控件的消息.
但是为啥捕捉到的距离都与实际点击距离相差很多呢.
假设我设置m_Slider.setRange(0,1000);
然后鼠标点在大概结束处,而利用GetPos函数得到的好像大概是200左右.
好像它是一个page一个page的跳的,有没有什么办法解决啊.谢谢各位大侠.
回复人:zhuobattle(风夜蓝) ( ) 信誉:100 2007-7-10 8:26:03 得分:0
目前已经解决该问题,为了方便后人,我把解决方法帖一下.
1.定义自己的CGoodSliderCtrl类,继承自CSliderCtrl
2.添加鼠标响应函数OnLButtonDown
3.在CGoodSliderCtrl::OnLButtonDown函数里面添加如下代码:
//得到控件本身矩形大小
CRect mSliderRect;
GetWindowRect(&mSliderRect);
//设置的控件range值
int mMinRg,mMaxRg;
GetRange(mMinRg,mMaxRg);
//得到目前的Pos值
DWORD nowPos=GetPos();
//计算鼠标点击后的pos值
DWORD mouseClickpos=(point.x)*(mMaxRg-mMinRg)/mSliderRect.Width();
//设置当前需要滑动的距离
SetPageSize(abs(mouseClickpos-nowPos));
//每次设置新的CSliderCtrl移动page值,可以实现要求。
===================================================================================
void CButtonTestDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
CSliderCtrl *pWnd=(CSliderCtrl *)GetDlgItem(IDC_SLIDER1);
if(nSBCode==TB_LINEDOWN)
{
int nIndex=pWnd->GetPos();
pWnd->SetPos(nIndex+20);
}
if(nSBCode==TB_LINEUP)
{
int nIndex=pWnd->GetPos();
pWnd->SetPos(nIndex-20);
}
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}
==================================================================================
由于有两个滑杆条,所以在要 OnHScroll () 中区分是哪个:
OnHSCroll ()
{
CSliderCtrl * pSlede = ( CSliderCtrl * ) pScrollBar ;
CString strText ;
switch ( pScrollBar -> GetDlgCtrlID() )
{
case IDC_TRACKBAR1:
strText . Format (" %d " , pSlide->GetPos() );
SetDlgItemText ( IDC_STATIC_TRACK1, strText ) ;
break ;
case IDC_TRACKBAR2:
strText . Format ( " %3.1 f" , dValue[pSlide->GetPos() ] ) ;
SetDlgItemText( IDC_STATIC_TRACK2, strText ) ;
break ;
}
}
=====================================================================================
第8章 演练CSlider
滑动条控制(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 ()函数用来设置当前位
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
MyMediaPlayer_20070829_pm5.rar (54个子文件)
MyMediaPlayer_20070829_pm5
wmpclosedcaption.h 1KB
wmpplaylistcollection.cpp 2KB
wmpcdromcollection.h 1KB
wmpnetwork.h 2KB
StdAfx.cpp 215B
MyMediaPlayer.rc 8KB
resource.h 2KB
wmpdvd.cpp 1KB
wmpdvd.h 1KB
wmpplaylistcollection.h 2KB
wmpclosedcaption.cpp 2KB
wmpmedia.cpp 4KB
wmperror.cpp 1KB
wmpsettings.h 2KB
wmpnetwork.cpp 5KB
wmpmediacollection.h 2KB
MyMediaPlayer.aps 37KB
wmpmediacollection.cpp 4KB
wmpplayerapplication.cpp 1KB
MyMediaPlayer.h 1KB
wmpplayer4.h 3KB
wmpcdrom.h 1KB
wmperroritem.cpp 1KB
MyMediaPlayer.dsw 593B
wmpplaylist.cpp 3KB
MyMediaPlayer.ncb 185KB
wmpplayerapplication.h 1KB
wmpcontrols.h 2KB
ReadMe.txt 10KB
StdAfx.h 1KB
wmperroritem.h 1KB
wmpstringcollection.cpp 893B
MyMediaPlayer.plg 4KB
MyMediaPlayer.clw 2KB
wmpplaylistarray.h 1KB
wmpcdromcollection.cpp 1KB
wmpplayer4.cpp 8KB
wmpcdrom.cpp 1017B
wmpplaylist.h 2KB
wmpsettings.cpp 4KB
wmperror.h 1KB
wmpcontrols.cpp 3KB
wmpstringcollection.h 1KB
res
MyMediaPlayer.rc2 405B
Thumbs.db 4KB
MyMediaPlayer.ico 1KB
wmpmedia.h 2KB
MyMediaPlayerDlg.h 2KB
MyMediaPlayer.dsp 10KB
发开进度.txt 108B
MyMediaPlayer.cpp 2KB
wmpplaylistarray.cpp 994B
MyMediaPlayer.opt 53KB
MyMediaPlayerDlg.cpp 10KB
共 54 条
- 1
资源评论
- you282013-10-01可是可用,一般般
- shueiwes2012-05-10不是很好用,感觉兼容性特差,我的是windows7旗舰版64bit的系统
- lijunboy1682014-04-12bu不是灰常稳定啊
- cszwdn2013-06-17是cpp 的程序,不是我想要的c#程序。不好意思用不来
shingaga
- 粉丝: 0
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于 LSTM(长短期记忆)(即改进的循环神经网络)预测风力发电厂中风力涡轮机产生的功率+源代码+文档说明
- 基于stm32f103+空心杯电机+oled按键+运动算法
- 《CKA/CKAD应试指南/从docker到kubernetes 完全攻略》学习笔记 第1章docker基础(1.1-1.4)
- 基于python实现的水下压缩空气储能互补系统建模仿真与经济效益分析+源代码+论文
- 华中科技大学-自然语言处理实验,Bi-LSTM+CRF的中文分词框架,并且利用基于深度学习的方法进行中文命名实体识别++源码报告
- 基于动态罚函数的铁路车流分配与径路优化模型python源码
- 鱼群算法求解组环问题python源码+文档说明
- 基于决策优化的多波束测深测线规划模型MATLAB代码
- 课程设计-基于python实现的多目标优化算法求解带时间窗的车辆路径规划问题+源代码+文档说明+界面截图+pptx
- 基于通信信号与通信系统的MATLAB仿真源码-课程设计
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功