一个关于vc文本编程方面的 问题 5

我是刚接触VC编程。我看的是孙鑫老师的VC视频第5讲。如下程序中的0x08==nChar即为当我们按入backspace键时程序将首先设置字体颜色为背景色。然后输出字体。... 我是刚接触VC编程。我看的是孙鑫老师的VC视频第5讲。如下程序中的0x08==nChar即为当我们按入backspace键时
程序将首先设置字体颜色为背景色。然后输出字体。再将存有字符的字符串strLine中的最后一个字符删去,再设置回背景色。
这里如果将1,2句进行交换,则不能正常运作,恳请高手指点指点啊。

void CTextView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
CClientDC dc(this);
TEXTMETRIC tm;
dc.GetTextMetrics(&tm);
if(0x0d==nChar)
{m_strLine.Empty();
m_ptOrigin.y+=tm.tmHeight;
}
else if(0x08==nChar)
{COLORREF clr=dc.SetTextColor(dc.GetBkColor());

dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine);//1
m_strLine=m_strLine.Left(m_strLine.GetLength()-1);//2。。这里如果将1,2句进行交换,则不能正常运作
dc.SetTextColor(clr);
}
else
{m_strLine+=nChar;}
dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine);
CView::OnChar(nChar, nRepCnt, nFlags);
}
展开
 我来答
百度网友ecba46aab
2009-10-17 · TA获得超过2303个赞
知道大有可为答主
回答量:2477
采纳率:100%
帮助的人:1978万
展开全部
m_strLine=m_strLine.Left(m_strLine.GetLength()-1);
改变了m_strLine的值
STXH0001
2009-10-17 · TA获得超过541个赞
知道答主
回答量:127
采纳率:0%
帮助的人:0
展开全部
如果 m_strLine=""
则在执行2后,m_strLine非法
因此再执行1,必定导致错误
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式