BOOL CMyDlg::PreTranslateMessage(MSG* pMsg) 
{ if ((pMsg->message==WM_CHAR)
&&(pMsg->hwnd==this->GetDlgItem(IDC_EDIT2)->m_hWnd))
{
if ( ((UINT)pMsg->wParam >57)||((UINT)pMsg->wParam <46))

{switch ((UINT)pMsg->wParam)
{
case 8:
break;
default:
pMsg->wParam=0;

}


}}
return CDialog::PreTranslateMessage(pMsg);
}
这是一个只能输入数字的例子。不过数字EDIT本身就可以限制了...

解决方案 »

  1.   

    可以从网络上下载CEdit的扩展类进行编程
      

  2.   

    看看这段代码,期望对你会有启发
    CEditHex::public CEdit
    处理WM_CHAR消息
    void CEditHex::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) 
    {
    // TODO: Add your message handler code here and/or call default
    if(nChar==VK_BACK||(nChar>='0'&&nChar<='9')||(nChar>='a'&&nChar<='f')||(nChar>='A'&&nChar<='F'))
    {
      CEdit::OnChar(nChar, nRepCnt, nFlags);
    }
    else
    {
    ::Beep(1500,50);
    ::AfxMessageBox("请输入字符'0'~'9','A'~'F'!");
    return;
    }
    }
    在这个控件里,只能输入符'0'~'9','A'~'F'的十六进制符