且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

MFC对话框增加状态栏 以及设置状态栏滚动字幕

更新时间:2022-08-13 08:14:20

对话框初始化函数 中

static UINT indicators[]=
 {
  IDS_ALL,    
  IDS_TIMER,
  IDS_STATUS
 };
 
 CRect rect;
 GetClientRect(rect);  //获得客户区域大小
    if(!m_wndStatusBar.Create(this)||
  !m_wndStatusBar.SetIndicators(indicators,sizeof(indicators)/sizeof(UINT)))
 {
  TRACE0("Can't create status bar\n");
  return false;
    }
 
 UINT  nID,nStyle;
 int nWidth1,nWidth2;  //保存IDS_TIMER,   IDS_STATUS宽度
 int index1=this->m_wndStatusBar.CommandToIndex(IDS_ALL);  //获得 索引
 int index2=this->m_wndStatusBar.CommandToIndex(IDS_TIMER); 获得索引
 int index3=this->m_wndStatusBar.CommandToIndex(IDS_STATUS);//....
 m_wndStatusBar.GetPaneInfo(index2,nID,nStyle,nWidth1); //获得索引对应的宽度
 m_wndStatusBar.GetPaneInfo(index3,nID,nStyle,nWidth2);//.....
 this->m_wndStatusBar.SetPaneInfo(index1,nID,nStyle,rect.Width()-nWidth1-nWidth2-25) ; //设置 第一格的长度
 RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0); //重新摆放控件 因为增加状态栏之后 控件相对位置发生变化  重新摆放才能显示出来
     str=_T("                        欢迎使用使用本软件...........");    //使用 UNICODE  设置字幕文本 可以做成一个函数动态的改变 滚动字幕的文本 
 m_wndStatusBar.SetPaneText(0,str);   //设置文本 index=0处的
    SetTimer(111,500,NULL); //设置定时器 

 

下面进入 WM_TIMER消息响应函数

 


void CMyDlg::OnTimer(UINT nIDEvent)
{
 
 static  int index=0;   //一个用于标示字体长度
 if(index<0)
  index=str.GetLength();  //如果index<0那么 我们将index设置为字体长度
    m_wndStatusBar.SetPaneText(0,str.Right(index));  
 index-=2; //index-2
 
 CDialog::OnTimer(nIDEvent);
}