好像没说清楚我的意思是说 用户把字符输入到edit box的时候 一旦用户按下了空格键 显示出来的就是我想要代替的字符

解决方案 »

  1.   

    试试:重载主窗口的PreTranslateMessage函数,判断WM_CHAR消息并且wParam==0x20,将wParam改成要替代的字符,最后再调用基类的PreTranslateMessage函数。
      

  2.   

    //这样可以吗?BOOL CMyEdit::PreTranslateMessage(MSG* pMsg)    
    {  
      if(pMsg->message==WM_KEYDOWN) 
      { 
        if (pMsg->wParam == VK_SPACE) //空格键。 
        { 
            pMsg->wParam = 替换的字符。
        } 
      } 
      return CEdit::PreTranslateMessage(pMsg);  

      

  3.   

    处理这个EditBox的EN_CHANGE映射函數, 只要有輸入都會響應它,這就很好辦了,
    CString str;
    GetDlgItemText(IDC_EDITID,str);
    str.Replace(" " ,"你的字符");
    SetItemText(IDC_EDITID,str);當然,你也可以給它綁定一個變量,只要更新變量就行了,不用獲取,更改,再設定
      

  4.   

    添加一个类如CMyEdit,从CEdit继承, 将Edit控件绑定到自己继承的类上。然后再重载WM_CHAR消息,在此就可以对输入的字符进行处理了
      

  5.   

    处理这个EditBox的EN_CHANGE映射函數, 只要有輸入都会响应它,這就很好办了,
    CString str;
    GetDlgItemText(IDC_EDITID,str);
    str.Replace(" " ,"你的字符");
    SetItemText(IDC_EDITID,str);當然,你也可以給它綁定一个变量,只要更新变量就行了,不用获取,更改,再設定
      

  6.   

    不需要捕捉键盘的消息,不需要在PreTranslateMessage中处理,那样麻烦.
      

  7.   

    BOOL CXxxDlg::PreTranslateMessage(MSG* pMsg)
    {
    if (pMsg->message == WM_CHAR && pMsg->wParam == ' ')
    pMsg->wParam = 'A'; // 替换为A return CDialog::PreTranslateMessage(pMsg);
    }