MFC中卡拉OK字体的定时器实现,使用DC的DrawText函数实现

时间:2022-08-24 00:26:21
 1 void CTextView::OnTimer(UINT_PTR nIDEvent)
2 {
3 m_nWidth += 5; // 在构造函数中初始化为 0;
4
5 CClientDC dc( this );
6 TEXTMETRIC tm;
7 dc.GetTextMetrics( &tm );
8 CRect rect;
9 rect.left = 0;
10 rect.top = 200;
11 rect.right = m_nWidth;
12 rect.bottom = rect.top + tm.tmHeight;
13 dc.SetTextColor( RGB(255, 0, 0) ); // 字体设置成红色
14 CString str;
15 str.LoadStringW( IDS_STRINGVC );
16 dc.DrawText( str, rect, DT_LEFT); // 效果实现的核心函数,用来控制显示的矩形大小来控制效果
17
18 CSize sz = dc.GetTextExtent( str );
19 if( m_nWidth > sz.cx ) // 超过字体长度时候从头显示
20 {
21 m_nWidth = 0;
22 dc.SetTextColor( RGB(0, 255, 0) );
23 dc.TextOutW( 0, 200, str );
24 }
25
26 CView::OnTimer(nIDEvent);
27 }

效果如下所示:

MFC中卡拉OK字体的定时器实现,使用DC的DrawText函数实现