一、创建定时器
在View处添加Create事件。
//视图创建后自动调用
int CMFC程序View::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
//无符号整型ID,时间间隔(毫秒),回调函数(为空代表使用系统默认处理函数)
SetTimer(1,2000,NULL);
return 0;
}
添加timer事件。
void CMFC程序View::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
static int i = 0;
i++;
CString str;
str.Format(TEXT("%d"), i);
MessageBox(str);
CView::OnTimer(nIDEvent);
}
二、字体渐变
设置定时器时间短一点。
而后修改timer事件。
void CMFC程序View::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
static int w = 0;
w = w + 5;
CString str = TEXT("一个人被他人所信赖,不是因为他能做到什么,而是因为他做到了什么,才被他人所信赖。");
//获取字符串宽度
CClientDC dc(this);
CSize size = dc.GetTextExtent(str);
//设置字体
CFont cfont;
cfont.CreatePointFont(200, TEXT("楷体"));
dc.SelectObject(&cfont);
//起点坐标
int x = 30;
int y = 30;
if (w == 5) {
dc.TextOutW(x,y,str);
}else if (w > size.cx) {
w = 0;//比字符串宽则重新开始
}
//长方形左上角坐标,右下角坐标
CRect rect(x, y, x + w,y+size.cy);
dc.SetTextColor(RGB(255,w%255,0));
//文本内容,绘出区域,方式(左对齐)
dc.DrawText(str, &rect, DT_LEFT);
CView::OnTimer(nIDEvent);
}