在状态栏中显示滚动文本

在状态栏中显示滚动文本


CStatusBar的使用方法:
1、创建CStatusBar对象
2、使用CStatusBar::Create(),将CStatusBar对象和窗口对象捆绑;
3、使用CStatusBar::SetIndicators(),将每一个Indicators与字符串ID相对应。

改变CStatusBar pane有三种方法:
1、调用CWnd::SetWindowText()改变PANE 0;
2、在ON_UPDATE_COMMAND_UI handler中调用方法 CCmdUI::SetText()函数;
3、调用 SetPaneText()改变任何PANE

BOOL SetPaneText(
int nIndex,
LPCTSTR lpszNewText,
BOOL bUpdate = TRUE
);
nIndex设置字符串的索引号,lpszNewText是新的要显示的字符串指针,如bUpdate为TRUE,文本设置后窗口被重绘。

另外一个用到的函数是:
CStatusBar::CommandToIndex
int CommandToIndex(
UINT nIDFind
) const;
nIDFind是字符串资源ID,该函数的返回值为该字符串ID对应的indicator[]数组的索引;


下面是程序的具体实现:
1、使用CLASSVIEW生成一个以CStatusBar为基类的新类CSrollStatus
2、在修改MainFrm.h修改如下的代码:
//CStatusBar m_wndStatusBar;
CSrollStatus m_wndStatusBar;
3、修改MainFrm.cpp的indicators[]数组,IDS_SCROLL_PANE显示滚动文本对应的字符串资源ID。
static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
IDS_SCROLL_PANE,
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
};
4、修改CMainFrame的OnCreate函数
{
....

if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status bar/n");
return -1; // fail to create
}
m_wndStatusBar.SetDisplayString(" Hello World ");
m_wndStatusBar.StartDisplay();
...
}

5、修改CSrollStatus类
void CSrollStatus::SetDisplayString(LPCTSTR str)
{
m_strSCrollText=str;
m_strSCrollText+=m_strSCrollText;//显示方便

}

void CSrollStatus::StartDisplay()
{
KillTimer(1);
SetTimer(1,200,NULL);


}

void CSrollStatus::OnDestroy()
{
CStatusBar::OnDestroy();
KillTimer(1);

}

void CSrollStatus::OnTimer(UINT nIDEvent)
{

if(m_strSCrollText,IsEmpty())
{
KillTimer(1);
SetPaneText(CommandToIndex(IDS_SCROLL_PANE),"");
return ;
}

static UINT index=0;
if(index>=(UINT)m_strSCrollText.GetLength()/2)-1)
index=0;
SetPaneText(CommandToIndex(IDS_SCROLL_PANE),((LPCSTR)m_strSCrollText)+index);
index++;
CStatusBar::OnTimer(nIDEvent);
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值