MFC关于退格键的实现解决方法

MFC关于退格键的实现
if(nChar==0x08)
{
COLORREF clr=dc.SetTextColor(dc.GetBkColor());
dc.TextOutW(m_point.x,m_point.y,m_str);  
m_str=m_str.Left(m_str.GetLength()-1);
dc.SetTextColor(clr);
}

为什么要先 dc.TextOutW(m_point.x,m_point.y,m_str); 然后m_str=m_str.Left(m_str.GetLength()-1);

这样不是先输出了原样的m_str(没有减少的字符串), 然后减少一个字符,这时不是已经输出到页面上,这样的减少会影响到已经输出到页面上的字符吗?

------解决方案--------------------
SetTextColor(dc.GetBkColor()).会设置字体的颜色为背景颜色,clr为旧的背景颜色用于还原,而dc.TextOutW(m_point.x,m_point.y,m_str);则是将你上次输入的东西覆盖为背景颜色,这样相当于清空掉啦.后而在设回dc.SetTextColor(clr);正常字体颜色,可以正常输出
------解决方案--------------------
孙鑫的视频+vs2010 ??
dc.TextOutW(m_point.x,m_point.y,m_str);在先=都重画了。
dc.TextOutW(m_point.x,m_point.y,m_str);在后=重画了m_str=m_str.Left(m_str.GetLength()-1)。最后一个字符没重画。
应该下边还有一个TextOut的函数又把m_str=m_str.Left(m_str.GetLength()-1)。给输出了,所以总效果=没效果。。。。。