状态栏如何嵌入进度条
功能展示 状态栏位于主界面的底部,通常用来显示系统的当前时间,程序运行中的状态信息等等。但如果程序正在执行一个任务,状态栏如何显示执行的进度?最好的方法是在状态栏中嵌入一个进度条来实现。本实例实现了这功能, 效果如图
15.上位机VC MFC实现状态栏带进度条功能
要点提示 要想在状态栏中显示进度条,也是非常简单,只要要创建进度条时,将进度条的父窗口指定为状态便可。当然最后还得根据需要适当的设置下进度条显示的位置
实现功能 •1.新建一个对话框应用程序
•2.在对话框类中添加几个变量
• CStatusBar m_StatusBar;
• CProgressCtrl m_Progress;
•3.在对话框的OnInitDialog()中实现对这两变量的初始化。也就实现了嵌入功能;• m_StatusBar.Create(this); //创建状态栏
• UINT Indicates[6];
• for(int i = 0; i<6;i++)
• {
• Indicates= 50+i;
• }
• m_StatusBar.SetIndicators(Indicates,6);//状态栏ID设置
• CRect rect;
• GetClientRect(rect);
• UINTPaneWidth = rect.Width()/6;
• for(intn = 0;n<6;n++)//设置面板宽度
• {
• m_StatusBar.SetPaneInfo(n,50+n*10,SBPS_NORMAL,PaneWidth);
• }
• //设置状态栏面板文本
• m_StatusBar.SetPaneText(0,"工控编程吧");
• m_StatusBar.SetPaneText(1,"gkbc8.com");
• m_StatusBar.SetPaneText(2,"状态");
• m_StatusBar.SetPaneText(4,"日期");
• CStringstr = CTime::GetCurrentTime().Format("%Y-%m-%d");
• m_StatusBar.SetPaneText(5,str);
• RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);
• CRectRect;
• m_StatusBar.GetStatusBarCtrl().GetRect(3,&Rect);
• CRectProgRect(Rect.left,2,Rect.right,Rect.Height()+2);
• m_Progress.Create(PBS_SMOOTH,ProgRect,&m_StatusBar,111);//实现嵌入
• m_Progress.ShowWindow(SW_SHOW);
• m_Progress.SetRange(0,100);
• m_Progress.SetPos(50);
• this->Invalidate();//显示状态栏
下面演示一下功能实现的整个过程
源码及视频教程下载 (仅电脑上可见) |