在CEDIT中,OnChar()处理字符的显示,但修改nChar是无效的,MFC对OnChar是这样定义的:
_AFXWIN_INLINE void CWnd::OnChar(UINT, UINT, UINT)
{ Default(); }
显然OnChar()根本未使用所传进来的参数。修改nChar绝不能产生任何效果。
可在OnChar()中用keybd_event()重新触发一个所需要的事件,然后在下一条WM_CHAR消息中处理该事件。
void CMyedit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
  static BOOL flag=FALSE;
  if(!flag)
  {
   keybd_event( 99,0,KEYEVENTF_EXTENDEDKEY | 0,0 );
   flag=TRUE;
  }
  else
  {
flag=FALSE;
         CEdit::OnChar(nChar,nRepCnt,nFlags);
  }
上面的代码可把所有的输入替换成3。