以下代码片断是在定时器响应函数中实现字模平滑变色效果,
void CTextView::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
m_nWidth+=5;
CClientDC dc(this);
dc.TextOut(300,300,"打死那只猴子!!");
TEXTMETRIC tm;
dc.GetTextMetrics(&tm);
CRect rect;
rect.left=300;
rect.top=300;
rect.right=m_nWidth;
rect.bottom=rect.top+tm.tmHeight;
dc.SetTextColor(RGB(255,0,0));
dc.DrawText("打死那只猴子!!",rect,DT_RIGHT);
CView::OnTimer(nIDEvent);
}
倒数第2行的dc.DrawText的最后一个参数如果设为DT_RIGHT的话(即从右边输出),输出结果为"...打打打打打打打打打打死那只猴子!!",而且不断的向后移动.如果改为DT_LEFT就输出正常的颜色过度结果:"打死那只猴子!!".
请问:什么使用DT_LEFT从左输出就正常,不会超出范围.而用DT_RIGHT的话(即从右边输出),结果会超出范围呢?
[此贴子已经被作者于2007-6-24 23:54:51编辑过]