MFC在状态栏的窗格上显示进度栏

来源:互联网 发布:mac超清桌面壁纸 编辑:程序博客网 时间:2024/05/02 03:00

1、进度栏对象: CProgressCtrl  。继承于CWnd窗口类,所以它也是一个窗口。

2、在窗口进行重绘的时候,通过每次获取状态栏被停放区域的地址,创建进度条。

3、获得在状态栏上显示的区域。

4、因窗口的重绘移动进度条。

5、设置进度条的步长以及递增。


CProgressCtrl progress;void CMainFrame::OnPaint() {CPaintDC dc(this); // device context for painting// TODO: Add your message handler code hereCRect rect;int index = m_wndStatusBar.CommandToIndex(IDC_PROGRESS);//获取状态栏中某个状态窗口的索引m_wndStatusBar.GetItemRect(index, &rect);//获取状态栏中index值状态窗口的大小if (!progress.m_hWnd)//通过句柄判断状态栏是否被创建{progress.Create(WS_CHILD|WS_VISIBLE, rect, &m_wndStatusBar, 123);//在rect区域创建状态进度条}else{progress.MoveWindow(rect);//把进度条移动到rect区域}progress.SetPos(50);//设置进度条的进度位置SetTimer(0, 500, NULL);//实现进度条递增// Do not call CFrameWnd::OnPaint() for painting messages}void CMainFrame::OnTimer(UINT nIDEvent) {// TODO: Add your message handler code here and/or call defaultprogress.SetStep(10); //设置进度条的步长progress.StepIt();//设置进度条按照步长增加CFrameWnd::OnTimer(nIDEvent);}


原创粉丝点击