MFC控件(13):Progress Control与Slider Control

Progress Control

当有比较耗时的操作在进行时,一般会给用户点提示信息,表示你正在操作,而不是卡死在那了.最常用的提示信息是进度条了.另外进度条一般与Timer一起用,因为要过会自动刷新下.

Timer的使用见:http://blog.csdn.net/weiwenhp/article/details/8733216

 

另外Progress control最重要的操作是这样两个:

1.指定range,用数字指定.就像我们制度工作进度时,要指定一个时间,比如要一周搞定某件事.

2.指定当前pos,就是进展到哪一步了,像计划一周完成的事,现在过了半周,那进度就是50%了.

 

用法示例

CMFC_Ctrl_Dlg.h//

CProgressCtrl m_pro;

afx_msg void OnTimer(UINT_PTR nIDEvent); 

 

/CMFC_Ctrl_Dlg.cpp//

 

#define TIME_ID 88

 

//..........

DDX_Control(pDX, IDC_PRO, m_pro);

//...............

ON_WM_TIMER()

 

 

BOOL CMFC_Ctrl_Dlg::OnInitDialog()

{

CDialog::OnInitDialog();

 

SetTimer(TIME_ID,1000,0); //设定Timer每一秒钟执行一次

m_pro.SetRange(0,250);

m_pro.SetPos(0); //设定初始位置

}

 

 

void CMFC_Ctrl_Dlg::OnTimer(UINT_PTR nIDEvent)

{

if(nIDEvent == TIME_ID)

{

 pos += 10;

 if(pos > 250)

     pos = 250;

  m_pro.SetPos(pos); //指定当前的进度

}

}

 

Slider Control

其实Slider Ctrono与Progress Control还有点类似的地方.progress是程序告诉用户做啥操作的进展,而Slider可以让用户自己指定进展情况.最典型的就是播放视频时我们会拉进度条.那就是个Slider Control.

 

用法示例.

CSliderCtrl m_slider;

DDX_Control(pDX, IDC_SLIDER1, m_slider);

 

//初始化

m_slider.SetRange(0,59);  //假如让用户选分钟,限定只能是0至59中的某个数字

m_slider.SetPos(0);

 

消息处理,当拉动进度条时做相应的处理

ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER1, &CMFC_Ctrl_Dlg::OnNMCustomdrawSlider1)

 

 

void CMFC_Ctrl_Dlg::OnNMCustomdrawSlider1(NMHDR *pNMHDR, LRESULT *pResult)

{

   int nMinute = m_slider.GetPos(); //获取当前选择的位置.

   //可以根据该信息做其他操作,比如如果是视频的话,根据该数字加载相应的内容进去

}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值