创建进度栏的步骤

注意:其实只需要1、8两步就可以完成操作,其他的步骤没有起作用,写出来只是让大家明白创建的具体思路;

 

 1、在CMainFrame的头文件中新建一个CProgressCtrl 的对象m_progress;

2、在CMainFrame的头文件中定义一个消息:

#define UM_PROGRESS     WM_USER+1

3、在注释宏下声明消息响应函数原型:

afx_msg void OnProgress();

4、消息映射:

ON_MESSAGE(UM_PROGRESS,OnProgress)

5、消息响应函数的实现部分:

void CMainFrame::OnProgress()
{
 CRect rect;//创建一个矩形区域
 m_wndStatusBar.GetItemRect(2,&rect);//获取状态栏所设定状态栏所占的矩形区域
    m_progress.Create(WS_CHILD|WS_VISIBLE|PBS_VERTICAL,rect,&m_wndStatusBar,123);//创建状态栏
    m_progress.SetPos(50);//设定状态栏当前位置为50%
}

6、在oncreate中添加:

PostMessage(UM_PROGRESS);

7、当窗口尺寸变化的时候,进度栏的位置就回变化,所以只用以上的步骤还是没有完成进度栏的创建:

8、在CMainFrame中增加消息处理,WM_PAINT增加处理器并编辑,代码如下:

void CMainFrame::OnPaint()
{
 CPaintDC dc(this); // device context for painting
 
 // TODO: Add your message handler code here
 CRect rect;
 m_wndStatusBar.GetItemRect(2,&rect);
 if(!m_progress.m_hWnd)
  m_progress.Create(WS_CHILD | WS_VISIBLE,rect,&m_wndStatusBar,123);
  else
   m_progress.MoveWindow(rect);  //将进度栏移动到矩形区域中
 m_progress.SetPos(50);
 // Do not call CFrameWnd::OnPaint() for painting messages
}

注意:其实只需要1、8两步就可以完成操作,其他的步骤没有起作用,写出来只是让大家明白创建的具体思路;

8、让进度栏“动起来”

在OnTimer中添加代码:

 m_wndStatusBar.SetPaneInfo(1,IDS_TIMER,SBPS_NORMAL,sz.cx);
 m_wndStatusBar.SetPaneText(m_wndStatusBar.CommandToIndex(IDS_TIMER),str);//在状态栏面板上显示时间
 m_progress.StepIt();

运行即可;

9、完成一个功能,当移动鼠标时,在第一个状态栏中显示鼠标的坐标值:

在view类中天剑WM_MOUSEMOVE,在OnMouseMove中添加代码如下:

void CStytleView::OnMouseMove(UINT nFlags, CPoint point)
{
 // TODO: Add your message handler code here and/or call default
 CString str;
 str.Format("x = %d,y = %d",point.x,point.y);//格式化鼠标的坐标
 //((CMainFrame*)GetParent())->m_wndStatusBar.SetWindowText(str);//在最长的状态栏中显示str,方法一
    //((CMainFrame*)GetParent())->SetMessageText(str);  方法二
 //((CMainFrame*)GetParent())->GetMessageBar()->SetWindowText(str);  方法三
 GetParent()->GetDescendantWindow(AFX_IDW_STATUS_BAR)->SetWindowText(str);  //方法四
 CView::OnMouseMove(nFlags, point);
}

10、添加启动画面

在工程-添加到工程-组建和控件-Visual C++ Components-splash screen-insert -确定-(可以修改类型或ID)-ok-编译-运行

在系统自动添加的类CSplashWnd中更改oncreate函数中的SetTimer(1, 3000, NULL)既可以改变启动画面显示的时间;

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值