AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > VC编程

通过例程分析状态条用法

51自学网 2015-08-30 http://www.wanshiok.com

  第三步:

  在这一步,我们实现在状态条实现滚动文字。

  < 1 > 在MainFrm.cpp中,我们可以发现如下的定义

  


  static UINT indicators[] =
   {
    ID_SEPARATOR,
    ID_INDICATOR_CAPS,
    ID_INDICATOR_NUM,
    ID_INDICATOR_SCRL,
   };

  我们将其改为

  static UINT indicators[] =
   {
    ID_SEPARATOR,
    ID_STATUS1,
    ID_STATUS2,
    ID_STATUS3,
    ID_INDICATOR_CAPS,
    ID_INDICATOR_NUM,
    ID_INDICATOR_SCRL,
   };


  <2>在菜单VIEW中选择Resource Symbols , 在对话框中选择NEW, 在NAME中输入ID_STATUS1,VALUE中取默认值,同样方法定义ID_STATUS2,ID_STATUS3。

  <3>定义字符串资源,在ResouceView中选择String Table,在其中为ID_STATUS1定义字符串资源为"me",同样方法定义ID_STATUS2,ID_STATUS3。

  <4>在MainFrm.h中定义如下变量:

  public:

   CString str,str1;

  <5>在MainFrm.cpp中修改OnCreate函数如下:

  int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
   {
    if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
     return -1;
    if(!m_wndStatusBar.Create    (this,WS_CHILD|WS_VISIBLE|CBRS_TOP,AFX_IDW_STATUS_BAR) ||     !m_wndStatusBar.SetIndicators(indicators,sizeof(indicators)/sizeof(UINT)))
    {
     TRACE0("Failed to create status bar/n");
      return -1; // fail to create
     }
    m_wndStatusBar.SetPaneInfo(1,ID_STATUS1,SBPS_POPOUT,320);
    m_wndStatusBar.SetPaneInfo(2,ID_STATUS2,SBPS_POPOUT,100);
    m_wndStatusBar.SetPaneInfo(3,ID_STATUS3,SBPS_POPOUT,100);
    str1=str="你好,欢迎使用本程序,祝你合家幸福,事业有成!";
    SetTimer(1,200,NULL);
    SetTimer(2,10,NULL);
    return 0;
   }

  <6>在类CmainFrame中重载函数OnTimer(),并添加如下代码:

  void CMainFrame::OnTimer(UINT nIDEvent)
   {
    file:// TODO: Add your message handler code here and/or call default
    if(nIDEvent==1){
     if(str.IsEmpty()) str=str1;
      str=str.Right(str.GetLength()-2);
      m_wndStatusBar.SetPaneText(1,str);
    }
    if(nIDEvent==2){
     SYSTEMTIME t;
     ::GetLocalTime(&t);
     CString str2;
     str2.Format("%d:%d:%d:%d",t.wHour,t.wMinute,t.wSecond,t.wMilliseconds);
     m_wndStatusBar.SetPaneText(3,str2);
   }
   CFrameWnd::OnTimer(nIDEvent);
  }

  <7>将MainFrm.h中,定义m_wndStatusBar之前的 protected: 改为public:

  <8>通过类向导在类CmystatusView中重载WM_MOUSEMOVE,并在实现函数中添加如下代码:

  void CMystatusView::OnMouseMove(UINT nFlags, CPoint point)
  {
   // TODO: Add your message handler code here and/or call default
   CString str3;
   str3.Format("X:%d,Y:%d",point.x,point.y);
   ((CMainFrame*)AfxGetMainWnd())->m_wndStatusBar.SetPaneText(2,str3);
    CView::OnMouseMove(nFlags, point);
  }

好了,到这里我们所有的功能就都实现了,快编译运行一下吧!怎么样?还满意吗?

 
 
说明
:本教程来源互联网或网友上传或出版商,仅为学习研究或媒体推广,wanshiok.com不保证资料的完整性。

上一篇:MFC简单打印方法  下一篇:基于VC++的OpenGL编程讲座之坐标变换