backspace之后再输入字符就会把前面应该删掉却没掉的字符覆盖
void CKeyboardDemoView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
if (('Z'>=nChar&&nChar>='A')||('z'>=char(nChar))&&(nChar>='a'))
MyString += char(nChar);
else
{
switch (nChar)
{
case 0x08:
// Process a backspace.
MyString.Delete(MyString.GetLength()-1,1);
break;
case 0x0A:
// Process a linefeed.
break;
case 0x1B:
// Process an escape.
break;
case 0x09:
// Process a tab.
break;
case 0x0D:
// Process a carriage return.
break;
default:
// Process displayable characters.
break;
}
}
void CKeyboardDemoView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
if (('Z'>=nChar&&nChar>='A')||('z'>=char(nChar))&&(nChar>='a'))
MyString += char(nChar);
else
{
switch (nChar)
{
case 0x08:
// Process a backspace.
MyString.Delete(MyString.GetLength()-1,1);
break;
case 0x0A:
// Process a linefeed.
break;
case 0x1B:
// Process an escape.
break;
case 0x09:
// Process a tab.
break;
case 0x0D:
// Process a carriage return.
break;
default:
// Process displayable characters.
break;
}
}
pDC->TextOutW(0,0,MyString);
CKeyboardDemoDoc *pDoc = GetDocument();
pDoc->AddWord(char(nChar));
pDoc->SetModifiedFlag();
CView::OnChar(nChar, nRepCnt, nFlags);
}
这段刚才忘写了谢谢啦
UpdateData(FALSE);
一下?
看意思应该是这样。
可是加上updatedata那句也没行啊...
另外把switch那段放onkeydown也不行
把UpdateData(FALSE)改成Invalidate()就好了:)