在状态栏中显示滚动文本
2010-04-02 13:11
246 查看
在状态栏中显示滚动文本
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);
}
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);
}
相关文章推荐
- ToolStripStatusRollingLabel——滚动显示状态栏标签
- 长文本单行滚动显示
- 专门显示金钱文本 滚动显示
- Android 文本内容滚动显示
- 在Symbian中显示一段文本内容(需要有滚动支持)- -
- JavaScript--在状态栏显示滚动文字
- 自定义UI-TextView实现文本自动滚动显示
- 需要做PhotoShop风格的进度条(以文本的背景显示进度,并且能放到状态栏上),哪位给点建议或链接?
- iOS走马灯上下滚动显示文本
- 自定义文字滚动控件,用于单行文本的显示,当文字过长的时候,就会自动的向左滚动
- swift——collectionview文本的横向滚动显示
- TextView 中长文本滚动显示(跑马灯效果)
- TextView文本显示图片和文字,竖直滚动显示
- 多行多列,无限滚动文本显示控件
- 只 一行显示可左右滚动的文本(UITextField中文限制)
- Android中TextView文本过长滚动显示实现
- js 滚动显示文本
- JavaScript状态栏显示滚动文字
- wp7超大文本显示控件 垂直滚动
- 仿猫扑网页下方状态栏效果代码 网页状态栏显示滚动文字