状态栏字幕滚动效果
功能展示
在我们现实生产中,常在汽车站,火车站等公共场所,看见大屏幕上,广告文字以滚动形式,引起人们目光的注意,这里我们来实现滚动字幕, 更好引起程序用户的注意。效果如图
17.上位机VC MFC实现状态栏字幕滚动效果
要点提示 我们当前功能,仅利用了一个小技巧,就是定义一个CString m_StatusText做为状态栏滚动文字。起动一定时器,用定时器更改m_StatusText的内容后再设置状态栏文字便可,关键一点是如何更改m_StatusText的内容而已,下面我们来看下具体的实现过程 实现功能
•1.新建一个对话框应用程序
•2.在对话框资源中添加CStatusBar m_StatusBar; //状态栏
• CString m_StatusText; //状态栏滚动文字
• BOOL m_bDirect; //滚动文字左右方向标识
•3.在对话框OnInitDialog()中对这三变量初始化,及启动一个定时器
•//状态栏初始化
• m_StatusText.Format("%s","gkbc8.com");//状态栏显示用文字初始化;
• m_StatusBar.Create(this);//创建状态栏
• UINT Indicates[4];
• for(int i = 0; i<4;i++)
• {Indicates= 50+i;
• }
• m_StatusBar.SetIndicators(Indicates,4);//添加状态栏面板
• CRect rect;
• GetClientRect(rect);
• UINTPaneWidth = rect.Width()/6;
• for(intn = 0;n<3;n++)
• {
• m_StatusBar.SetPaneInfo(n,50+n*10,SBPS_NORMAL,PaneWidth);//设置面板宽度
• }
• //设置状态栏面板文本
• m_StatusBar.SetPaneInfo(3,111,SBPS_NORMAL,600);
• m_StatusBar.SetPaneText(0,"滚动字幕功能");
• m_StatusBar.SetPaneText(1,"工控编程吧");
• m_StatusBar.SetPaneText(2,"网址:");
• m_StatusBar.SetPaneText(3,m_StatusText);
• m_StatusBar.GetStatusBarCtrl().SetMinHeight(40);//设置状态栏高度
• RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);
•4.添加定时器的消息处理OnTimer(UINT nIDEvent)
•
•void CGkbc8Dlg::OnTimer(UINTnIDEvent)
•{
• CRectrect;
• CStringsText;
• CDC*pDC;
• CSizesz,sz1;
• pDC= m_StatusBar.GetDC();
• m_StatusBar.GetPaneText(3,sText);
•
• sz=pDC->GetTextExtent(sText);
• sz1=pDC->GetTextExtent(m_StatusText);
• m_StatusBar.GetStatusBarCtrl().GetRect(3,rect);
• if(m_bDirect)//执行向右移
• {
• if(sz.cx<=rect.Width())
• {sText.Insert(0," "); }
• elsem_bDirect = FALSE;//
• }
• else
• {
• if(sz.cx>sz1.cx) sText=sText.Right((sText.GetLength()-2));
• else m_bDirect = TRUE;
• }
• m_StatusBar.SetPaneText(3,sText);
• CDialog::OnTimer(nIDEvent);
•}
• m_bDirect= TRUE;
• SetTimer(1,200,NULL);
演示功能实现的整个过程
源码及视频下载
|