{
COLORREF clr=dc.SetTextColor(dc.GetBkColor());
dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine);
m_strLine=m_strLine.Left(m_strLine.GetLength()-1);
dc.SetTextColor(clr);
}、、、、
和代码
、、、、 if(0x08==nChar)
{
COLORREF clr=dc.SetTextColor(dc.GetBkColor());
m_strLine=m_strLine.Left(m_strLine.GetLength()-1);
dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine);
dc.SetTextColor(clr);
}、、、
在我认为他们的结果应该是一样的,因为第一个是先输出然后再减去一个字符,第二个是先减去然后再输出,而且都是对str作用的,对最终的结果应该是一样的,实际运行是不一样的,不知道我的理解在那里出现了错误、、、
7 个解决方案
#1
你的意思是,这两段代码,最后得到的 m_strLine 的结果是不一样的,而你认为应该是一样的,是吧?
#2
怎么会一样。
一个减了一个字符,一个没减。
一个减了一个字符,一个没减。
#3
哦。我懂了,你意思是m_strLine没变。你Left就变了
#4
我觉得,这两段代码,最后得到的 m_strLine 的值是一样的。但是,你通过TextOut()绘制出来的字符,应该是不一样的,
因为,第一个函数,你是先用TextOut()显示了完整的 m_strLine 的内容,然后,把m_strLine 最右边的一个字符去掉。
第二个函数,你是先去掉了m_strLine 的最右边的一个字符,再调用TextOut()来显示出来,而这时候,因为m_strLine 已经被截掉了最右边的那个字符,这和完整的m_strLine 是不一样的,
所以,两次通过 TextOut() 显示的内容应该是不一样的,
但是,两次操作,最后都把m_strLine 的最后一个字符去掉了,所以两次的对m_strLine 的操作结果应该是一样的。
因为,第一个函数,你是先用TextOut()显示了完整的 m_strLine 的内容,然后,把m_strLine 最右边的一个字符去掉。
第二个函数,你是先去掉了m_strLine 的最右边的一个字符,再调用TextOut()来显示出来,而这时候,因为m_strLine 已经被截掉了最右边的那个字符,这和完整的m_strLine 是不一样的,
所以,两次通过 TextOut() 显示的内容应该是不一样的,
但是,两次操作,最后都把m_strLine 的最后一个字符去掉了,所以两次的对m_strLine 的操作结果应该是一样的。
#5
在我认为他们的结果应该是一样的,因为第一个是先输出然后再减去一个字符,第二个是先减去然后再输出,而且都是对str作用的,对最终的结果应该是一样的,实际运行是不一样的,不知道我的理解在那里出现了错误、、、
=======
我怎么看都是不一样的啊
第一段:
COLORREF clr=dc.SetTextColor(dc.GetBkColor());//设置DC的字符颜色
dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine);//输出m_strLine中的字符
m_strLine=m_strLine.Left(m_strLine.GetLength()-1);//改变m_strLine中的字符串
dc.SetTextColor(clr);恢复原来的颜色
很明显,你是先输出m_strLine中的内容之后再修改m_strLine的。显示出的结果是修改之前的m_strLine
第二段相反,先修改m_strLine,然后输出,显示的是修改之后的m_strLine。结果当然不一样了。
=======
我怎么看都是不一样的啊
第一段:
COLORREF clr=dc.SetTextColor(dc.GetBkColor());//设置DC的字符颜色
dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine);//输出m_strLine中的字符
m_strLine=m_strLine.Left(m_strLine.GetLength()-1);//改变m_strLine中的字符串
dc.SetTextColor(clr);恢复原来的颜色
很明显,你是先输出m_strLine中的内容之后再修改m_strLine的。显示出的结果是修改之前的m_strLine
第二段相反,先修改m_strLine,然后输出,显示的是修改之后的m_strLine。结果当然不一样了。
#6
当然上面的同学说得也对,最终m_strLine中的内容是一样的,但是显示出的结果是不一样的。
#7
回五楼:
首先非常感谢你的帮助。其次,我对这个的理解是先把Text变为了背景色,变了之后无论是先输出再减还是先减再输出,最后都是把Text变回了原来的颜色,也就是说,当退格时,我先输出str然后对str减一,或者先对
str减一然后输出,结果是一样的,这是我的理解,不知道是我是走到了那个误区,非常恳切的请您指导。
首先非常感谢你的帮助。其次,我对这个的理解是先把Text变为了背景色,变了之后无论是先输出再减还是先减再输出,最后都是把Text变回了原来的颜色,也就是说,当退格时,我先输出str然后对str减一,或者先对
str减一然后输出,结果是一样的,这是我的理解,不知道是我是走到了那个误区,非常恳切的请您指导。
#1
你的意思是,这两段代码,最后得到的 m_strLine 的结果是不一样的,而你认为应该是一样的,是吧?
#2
怎么会一样。
一个减了一个字符,一个没减。
一个减了一个字符,一个没减。
#3
哦。我懂了,你意思是m_strLine没变。你Left就变了
#4
我觉得,这两段代码,最后得到的 m_strLine 的值是一样的。但是,你通过TextOut()绘制出来的字符,应该是不一样的,
因为,第一个函数,你是先用TextOut()显示了完整的 m_strLine 的内容,然后,把m_strLine 最右边的一个字符去掉。
第二个函数,你是先去掉了m_strLine 的最右边的一个字符,再调用TextOut()来显示出来,而这时候,因为m_strLine 已经被截掉了最右边的那个字符,这和完整的m_strLine 是不一样的,
所以,两次通过 TextOut() 显示的内容应该是不一样的,
但是,两次操作,最后都把m_strLine 的最后一个字符去掉了,所以两次的对m_strLine 的操作结果应该是一样的。
因为,第一个函数,你是先用TextOut()显示了完整的 m_strLine 的内容,然后,把m_strLine 最右边的一个字符去掉。
第二个函数,你是先去掉了m_strLine 的最右边的一个字符,再调用TextOut()来显示出来,而这时候,因为m_strLine 已经被截掉了最右边的那个字符,这和完整的m_strLine 是不一样的,
所以,两次通过 TextOut() 显示的内容应该是不一样的,
但是,两次操作,最后都把m_strLine 的最后一个字符去掉了,所以两次的对m_strLine 的操作结果应该是一样的。
#5
在我认为他们的结果应该是一样的,因为第一个是先输出然后再减去一个字符,第二个是先减去然后再输出,而且都是对str作用的,对最终的结果应该是一样的,实际运行是不一样的,不知道我的理解在那里出现了错误、、、
=======
我怎么看都是不一样的啊
第一段:
COLORREF clr=dc.SetTextColor(dc.GetBkColor());//设置DC的字符颜色
dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine);//输出m_strLine中的字符
m_strLine=m_strLine.Left(m_strLine.GetLength()-1);//改变m_strLine中的字符串
dc.SetTextColor(clr);恢复原来的颜色
很明显,你是先输出m_strLine中的内容之后再修改m_strLine的。显示出的结果是修改之前的m_strLine
第二段相反,先修改m_strLine,然后输出,显示的是修改之后的m_strLine。结果当然不一样了。
=======
我怎么看都是不一样的啊
第一段:
COLORREF clr=dc.SetTextColor(dc.GetBkColor());//设置DC的字符颜色
dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine);//输出m_strLine中的字符
m_strLine=m_strLine.Left(m_strLine.GetLength()-1);//改变m_strLine中的字符串
dc.SetTextColor(clr);恢复原来的颜色
很明显,你是先输出m_strLine中的内容之后再修改m_strLine的。显示出的结果是修改之前的m_strLine
第二段相反,先修改m_strLine,然后输出,显示的是修改之后的m_strLine。结果当然不一样了。
#6
当然上面的同学说得也对,最终m_strLine中的内容是一样的,但是显示出的结果是不一样的。
#7
回五楼:
首先非常感谢你的帮助。其次,我对这个的理解是先把Text变为了背景色,变了之后无论是先输出再减还是先减再输出,最后都是把Text变回了原来的颜色,也就是说,当退格时,我先输出str然后对str减一,或者先对
str减一然后输出,结果是一样的,这是我的理解,不知道是我是走到了那个误区,非常恳切的请您指导。
首先非常感谢你的帮助。其次,我对这个的理解是先把Text变为了背景色,变了之后无论是先输出再减还是先减再输出,最后都是把Text变回了原来的颜色,也就是说,当退格时,我先输出str然后对str减一,或者先对
str减一然后输出,结果是一样的,这是我的理解,不知道是我是走到了那个误区,非常恳切的请您指导。