MFC在状态栏中使用进度条控件



在状态栏上使用进度条

原理: 状态栏是个窗口,进度条将父窗口设置为状态栏的某一分区即可

步骤:

0. 建立MFC对话框程序

1. 增加头文件,CProgressCtrl需要使用

2. 在类中声明2个控件:状态栏 + 进度条(进度条在资源编辑器中创建)

3. 进度条是资源,有ID,需要对象数据交换

4. 创建、布置状态栏 (在初始化对话框函数中)

5. 设置状态栏的某一分区为进度条父窗口

6. 使用定时器让进度条动起来


运行显示:


主要代码:

1-2-3

#include <afxcmn.h> //包含头文件

    CStatusBar m_status;
    CProgressCtrl m_progress;

DDX_Control(pDX, IDC_PROGRESS1, m_progress); //对象数据交换

4-5

    m_status.Create(this);	//创建状态栏
    UINT arr[] = {1001,1002,1003};
    m_status.SetIndicators(arr, sizeof(arr)/sizeof(UINT)); 

    m_status.SetPaneInfo(0, 1001, 0, 100);	//设置分区ID及大小
    m_status.SetPaneInfo(1, 1002, 0, 200);
    m_status.SetPaneInfo(2, 1003, 0, 200);

    m_status.SetPaneText(0, _T("GOGO"));
    RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);

    RECT rt;
    m_status.GetItemRect(2, &rt);	//获取状态栏所需要区的窗口矩形
    m_progress.SetParent(&m_status);	//设置状态栏为父
    m_progress.MoveWindow(&rt);
    m_progress.ShowWindow(1);

6

//消息映射宏:     ON_WM_TIMER()
//类内声明函数:    afx_msg void OnTimer(UINT nID);
//类外实现函数:
void MyDialog::OnTimer(UINT nID)
{
    static int iPos = 0;
    iPos += 5;
    if (iPos > 100)     iPos = 0;
    m_progress.SetPos(iPos);
    return CDialog::OnTimer(nID);
}

7. 不要忘记调用SetTimer触发定时器

SetTimer(1,100,NULL);







  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值