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

对话框初始化函数 中

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);
}


你可能感兴趣的:(mfc)