nChar参数能不能判断回车和退格:就像这样:(m_strInputLine是一个CString对象,m_ptOrigin是一个CPoint对象,定义在别处)
void CTextSimpleEditView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
//定义一个设备描述表
CClientDC dc(this);
//定义一个字体信息结构体
TEXTMETRIC tm;
//获得当前设备描述表中的字体信息
dc.GetTextMetrics(&tm);
//对m_strInputLine进行编辑
/*当输入为回车符时,应将m_strInputLine清空(看成新的一行要开始输入),
并根据字体高度下移m_ptOrigin位置,作为新的起始位置*/
if(0x0D == nChar)
{
m_strInputLine.Empty();
m_ptOrigin.y = m_ptOrigin.y + 10;
}
/*当输入为退格时,将m_strInputLine中的字符先置成背景色,输出一次(效果即为消失了),
然后把m_strInputLine中的最后一个字符去掉,最后再把这个字符串设置成原来的颜色(效果即为最后一个字符不见了)*/
else if(0x08 == nChar)
{
//字符先置成背景色,并保存原来的颜色
COLORREF clr = dc.SetTextColor(dc.GetBkColor());
//输出这个同背景色的字符串
dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strInputLine);
//把m_strInputLine中的最后一个字符去掉
m_strInputLine.Left(m_strInputLine.GetLength() - 1);
//把字符串设置成原来的颜色
dc.SetTextColor(clr);
}
/*输入一般的字符时,将其添加到m_strInputLine中即可(使用重载的“+”)*/
else
{
m_strInputLine += (char)nChar;
} //把编辑好的m_strInputLine输出
dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strInputLine); CView::OnChar(nChar, nRepCnt, nFlags);但运行的时候无法响应回车和退格,感觉if(0x0D == nChar)和else if(0x08 == nChar)没有作用,怎么回事啊?
}
void CTextSimpleEditView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
//定义一个设备描述表
CClientDC dc(this);
//定义一个字体信息结构体
TEXTMETRIC tm;
//获得当前设备描述表中的字体信息
dc.GetTextMetrics(&tm);
//对m_strInputLine进行编辑
/*当输入为回车符时,应将m_strInputLine清空(看成新的一行要开始输入),
并根据字体高度下移m_ptOrigin位置,作为新的起始位置*/
if(0x0D == nChar)
{
m_strInputLine.Empty();
m_ptOrigin.y = m_ptOrigin.y + 10;
}
/*当输入为退格时,将m_strInputLine中的字符先置成背景色,输出一次(效果即为消失了),
然后把m_strInputLine中的最后一个字符去掉,最后再把这个字符串设置成原来的颜色(效果即为最后一个字符不见了)*/
else if(0x08 == nChar)
{
//字符先置成背景色,并保存原来的颜色
COLORREF clr = dc.SetTextColor(dc.GetBkColor());
//输出这个同背景色的字符串
dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strInputLine);
//把m_strInputLine中的最后一个字符去掉
m_strInputLine.Left(m_strInputLine.GetLength() - 1);
//把字符串设置成原来的颜色
dc.SetTextColor(clr);
}
/*输入一般的字符时,将其添加到m_strInputLine中即可(使用重载的“+”)*/
else
{
m_strInputLine += (char)nChar;
} //把编辑好的m_strInputLine输出
dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strInputLine); CView::OnChar(nChar, nRepCnt, nFlags);但运行的时候无法响应回车和退格,感觉if(0x0D == nChar)和else if(0x08 == nChar)没有作用,怎么回事啊?
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货