当前位置: 代码迷 >> 综合 >> 孙鑫VC++深入详解:Lesson5 Part4 屏幕字符串滚动输出,DrawText,SetTimer,WM_Timer消息
  详细解决方案

孙鑫VC++深入详解:Lesson5 Part4 屏幕字符串滚动输出,DrawText,SetTimer,WM_Timer消息

热度:92   发布时间:2024-01-19 15:19:56.0


滚动字母,修改输出字幕颜色,定时器

在onCreate中添加一个定时器,即SetTimer(1,100,NULL)
再在类CDrawView中添加消息WM_TIMER的响应函数OnTimer
每间隔100毫秒调用OnTime()
在OnTime()中用DrawText输出字符串,DrawText的输出矩形宽度每次按照5像素宽度增加,
随着矩形宽度增加,那么显示出来的字符串就逐步增加,效果看起来就是滚动输出.

dc.DrawText(cs,rect,DT_LEFT); 

//文本左对齐,就是字符串cs的左边的字符是对齐的,字符串右边的字符不断滚动出来,左边固定不动,字幕向右边扩展,逐步显示出字符串右边的字符.

dc.DrawText(cs,rect,DT_RIGHT); 
//文本右对齐,就是字符串cs的右边的字符是对齐的,整体字符是从左向右边整体移动,字符串左边的字符不断滚动出来,



GetTextMetrics:这是获得设备环境Device Context中当前的字体信息

GetTextExtent:这是获得显示在屏幕中的字符串的宽度和高度



1. DrawText用法:
CDC::DrawText   2个重载函数

即使字符串的宽度大于设定的矩形宽度,只输出矩形中的字符串,

virtual int DrawText( LPCTSTR lpszString, int nCount, LPRECT lpRect, UINT nFormat );
int DrawText( const CString& str, LPRECT lpRect, UINT nFormat );


2. SetTime用法:
CWnd::SetTimer
UINT SetTimer( UINT nIDEvent, UINT nElapse, void (CALLBACK EXPORT* lpfnTimer)(HWND, UINT, UINT, DWORD) );

Return Value
The timer identifier of the new timer if the function is successful. An application passes this value to the KillTimer member function to kill the timer. Nonzero if successful; otherwise 0.

Parameters

nIDEvent: Specifies a nonzero timer identifier.设定定时器ID,这个ID会作为返回值

nElapse: Specifies the time-out value, in milliseconds.间隔时间,毫秒
lpfnTimer:
     指定一个处理WM_TIME消息的回调函数的名称,用自己编写回调函数处理TIMER消息
     填NULL则是交给Cwnd处理WM_TIMER消息,CWnd对象会把消息放入到应用程序的消息列队中

Specifi

  相关解决方案