BOOL MyDlg::PreTranslateMessage( MSG* pMsg ) 
{    
   CEdit * pEdit = GetDlgItem(ID_MYEDIT);  
   if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_RETURN) 
   {      
      pEdit ->SendMessage(...);   
      return FALSE     
   } 
 ...  }  在上述的程序中,可以从CEdit中派生一个CMyEdit,加入自己的消息处理程序,  
  然后用Subclass的方法替换pEdit的窗口过程
BOOL CXXXDlg::PreTranslateMessage(MSG* pMsg)
{
  if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_RETURN)
      return TRUE;
  
  return CDialog::PreTranslateMessage(pMsg);
}

解决方案 »

  1.   

    先要到CLASS WAZARD里加入处理此消息的函数,CLASS WAZARD会自动帮你生成一个空的PreTranslateMessage。 
    之后在这空函数里处理就可以了。 
    BOOL CSampleDlg::PreTranslateMessage(MSG* pMsg) 

        if(pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_ESCAPE) 
        {// 表示是ESCAPE键 
          OnExit(); // 这是具体退出处理的程序。 
          return TRUE; // 表示这消息已经处理过了 
        } 
        return FALSE; // 表示消息没有处理过了