MFC中进度控件的基本用法
来源:互联网 发布:下载切换mp3软件 编辑:程序博客网 时间:2024/05/17 04:08
MFC用CProgressCtrl类来表示进度控件。在默认方式下,进度条控件沿水平方向放置,进度用一系列的方块来表示。
1 进度控件的创建
可以通过两种方法创建进度控件,一种是在Visaul Studio的资源编辑器中通过工具箱添加;另一种是通过代码添加。
1.1 在资源编辑器中添加
一般基于对话框的MFC程序中,使用资源编辑器的方式来添加进度控件。在“资源视图”中打开对话框资源,之后在右侧的“工具栏”中将Progress Control控件拖入到对话框上,并且调整其位置和大小,如图1所示。
图1 通过“工具栏”添加进度控件
之后,选择右侧的“属性”按键,通过属性栏设置进度控件的属性,如图2所示。
图2 设置进度控件属性
其中,Smooth属性表示进度控件中的进度条是虚线还是实线,将该属性设置为True则是实线,False是虚线;Vertical属性表示控件是否是垂直的,True表示垂直,False表示水平。
1.2 通过代码添加
基于文档/视图的MFC程序一般通过代码来添加进度控件。通过CProgressCtrl::Create()函数实现控件的创建。该函数的格式为
BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);其中,参数dwStyle表示进度控件的风格;rect表示控件的位置和大小;pParentWnd指定了控件的父窗口的指针;nID是控件的ID。如果创建成功,则返回值是TRUE,否则返回值是FALSE。
可以使用如下代码创建进度控件
m_Progress_Control_Manual.Create(WS_CHILD|WS_VISIBLE|PBS_SMOOTH|PBS_VERTICAL, CRect(10,10, 500, 60), this, 10001);其中,m_Progress_Control_Manual是CProgressCtrl类的对象,需要注意的是该对象必须是类的成员变量,而不能是局部变量,否则控件无法显示。Create()函数的参数中,WS_CHILD表示该控件是子控件,WS_VISIBLE表示控件是可见的;PBS_SMOOTH和PBS_VERTICAL分别对应在“1.1在资源编辑器中添加”中提到的Smooth属性和Vertical属性。
2 进度控件中进度条的活动
进度控件的作用就是通过进度条的活动来表示某个动作进展的情况。因此,在创建了进度控件之后,接下来就是要控制进度条的活动了。在控制进度条活动时,首先要设置进度条活动的范围,之后设置其的位置来实现进度条的活动。
2.1 设置进度条活动的范围
通过CProgressCtrl::SetRange()函数设置进度条活动的范围。该函数的格式为
void SetRange( short nLower, short nUpper);其中,参数nLower和nUpper分别表示进度条活动的起始位置和结束位置。
m_Progress_Control_Manual.SetRange(0, 100);以上代码的功能是将进度条的活动范围设置到了0~100之间,m_Progress_Control_Manual是在“1.2通过代码添加”中定义的CProgressCtrl类的对象。
2.2 设置进度条位置
可以通过三种方法设置进度条位置:第一种是直接设置位置;第二种是设置位置的偏移量;第三种是设置步进。
2.2.1 直接设置进度条位置
通过CProgressCtrl::SetPos()直接设置进度条的位置。该函数的作用是设置进度条的位置并且重画进度控件。该函数的格式为
int SetPos(int nPos);其中,参数nPos表示要设置的进度条位置,该位置必须在“2.1设置进度条活动的范围”中设置的范围之内;返回值是设置新位置之前,进度条所在的位置。
m_Progress_Control_Manual.SetPos(50);以上代码的作用是将进度条的位置设置到整个进度控件的中间位置。
2.2.2 设置进度条位置的偏移量
通过CProgressCtrl::OffsetPos()函数设置控制条新位置相对于之前位置的偏移量。该函数的格式为
int OffsetPos(int nPos);其中,参数nPos表示新位置相对于之前位置的偏移量;返回值是设置新位置之前,进度条所在的位置。
for(int i=0; i<4; ++i){m_Progress_Control_Manual.OffsetPos((100-0)/4);Sleep(100);}以上代码的功能是进度条每次前进整个进度控件的四分之一,分四次前进到进度控件的最顶端。
2.2.2 设置进度条的步进
进度条的步进指的是进度条每次前进的长度。通过CProgressCtrl::SetStep()函数设置步进,该函数的格式为
int SetStep(int nStep);该函数的参数为新的步进值;返回值是设置新步进之前的步进值。
在设置了进度条步进之后,需要调用CProgressCtrl::StepIt()函数来使得进度条按照设置的步进前进。
m_Progress_Control_Manual.SetStep((100-0)/4);for(int i=0; i<4; ++i){m_ProgressCtrl.StepIt();Sleep(100);}以上代码与“2.2.2设置进度条位置的偏移量”中的代码功能相同。
3 设置进度条颜色及进度控件背景颜色
通过向控件发送PBM_SETBARCOLOR消息或者调用CProgressCtrl::SetBarColor()函数来设置进度条的颜色;通过向控件发送PBM_SETBKCOLOR消息或者调用CProgressCtrl::SetBkColor()函数来设置进度控件背景颜色。
3.1 发送改变颜色的消息
通过CProgressCtrl类的对象,调用该类的SendMessage()函数向控件发送改变颜色的消息。
m_ProgressCtrl.SendMessage(PBM_SETBARCOLOR, 0, (LPARAM)RGB(255, 0, 0));m_ProgressCtrl.SendMessage(PBM_SETBKCOLOR, 0, (LPARAM)RGB(0, 255, 0));对于SendMessage()函数,第一个参数表示要发送的消息,第二个参数和第三个参数均表示消息的信息,其中,第三个参数表示要设置的颜色。以上代码的功能是将进度条颜色设置为红色,将进度控件背景颜色设置为绿色。
3.2 调用CProgressCtrl类控制颜色的成员函数
通过调用CProgressCtrl::SetBarColor()函数和CProgressCtrl::SetBkColor()函数来设置颜色。这两个成员函数最终还是向控件发送了改变颜色的消息。
m_ProgressCtrl.SetBarColor(RGB(255, 0, 0));m_ProgressCtrl.SetBkColor(RGB(0, 255, 0));以上代码与“3.1发送改变颜色的消息”中代码的功能相同。
经测试,修改进度条颜色的功能只能在VC++6.0中实现,VS2008及以上版本无法实现该功能。
- MFC中进度控件的基本用法
- mfc基本控件用法
- MFC控件基本用法
- MFC中控件的用法
- MFC中基本控件的WNDCLASS
- MFC中基本控件的WNDCLASS
- MFC中对话框控件radio的用法
- MFC 中Silder控件的用法
- MFC中CListCtrl控件的用法
- MFC中树控件CTreeCtrl的用法
- MFC中控件的用法【转】
- MFC中FlexGrid控件的用法
- MFC中树控件CTreeCtrl的用法
- MFC中树控件CTreeCtrl的用法
- MFC中树控件CTreeCtrl的用法
- MFC中Edit控件的用法整理
- MFC基本常用控件基本用法
- MFC基本常用控件基本用法
- 关于glsl集中参数类型
- Matlab/Simulink 中枚举类数据的定义
- linux权限2
- 浅析大型网站架构之分布式消息队列
- springboot小结
- MFC中进度控件的基本用法
- CC_CALLBACK_0/2/3的使用.
- 皮卡丘的梦想2
- [kuangbin带你飞]专题17:B
- 网络编程复习(一):最原始的BIO网络编程
- C++内联函数
- TCP/IP学习笔记(4)-ICMP协议,ping和Traceroute
- Java 并发编程:volatile的使用及其原理
- 大数据的概述