记录学习的点点滴滴,这次主要是写的MFC中实现在状态栏中实现滚动的字幕,实现很简
单,和大家分享一下我的代码。
建立一个对话框程序,在OnInitDialog函数添加如下代码,同时在类中添加一个CStatusBar
状态栏的对象。
// TODO: 在此添加额外的初始化代码 SetWindowText("状态栏显示滚动字幕"); UINT Array[3]; for (int i = 0; i < 3; ++i) { Array[i] = 100 + i; //状态栏面板ID } m_statusBar.Create(this); //创建面板 m_statusBar.SetIndicators(Array, sizeof(Array) / sizeof(UINT)); //添加面板 for (int n = 0; n < 3; ++n) { m_statusBar.SetPaneInfo(n, Array[n], 0, 130); //设置面板宽度 } m_statusBar.SetPaneInfo(2, Array[2], 0, 800); //设置面板文本 m_statusBar.SetPaneText(0, "当前用户"); m_statusBar.SetPaneText(1, "GuoDong Young"); m_statusBar.SetPaneText(2, " 满目山河空念远"); RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0); SetTimer(1, 1000, NULL); //设置定时器
然后再添加定时器函数。
void CCStatusBar_2Dlg::OnTimer(UINT_PTR nIDEvent) { // TODO: 在此添加消息处理程序代码和/或调用默认值 CString sText; int len; m_statusBar.GetPaneText(2, sText); len = sText.GetLength(); sText = sText.Right(len - 2); m_statusBar.SetPaneText(2, sText); //设置显示字符 if (len <= 0) { m_statusBar.SetPaneText(2," 满目山河空念远"); } CDialog::OnTimer(nIDEvent); }
好了,就是这样了,很简单吧啊。这就是在状态栏中实现滚动的字幕。