编辑框限制16进制输入

  1. 在对应.h文件中加入 virtual BOOL PreTranslateMessage(MSG* pMsg) ;声明。
  2. 在对应.cpp文件中从新定义成员函数
    BOOL CSR9800AppDlg::PreTranslateMessage(MSG* pMsg) 
    { 
    	if((WM_CHAR == pMsg->message) && (::GetDlgCtrlID(pMsg->hwnd) == IDC_EDIT1)) 
    	{ 
    		if(pMsg->wParam == VK_BACK)//相应back键
    			return CDialog::PreTranslateMessage(pMsg); 
    
    		TCHAR ch = (TCHAR)pMsg->wParam; 
    		if((ch >= '0' && ch <= '9')) 
    			return CDialog::PreTranslateMessage(pMsg); 
    		if((ch >= 'a' && ch <= 'f')) 
    			return CDialog::PreTranslateMessage(pMsg); 
    		if((ch >= 'A' && ch <= 'F')) 
    			return CDialog::PreTranslateMessage(pMsg);
    
    		return TRUE; 
    	} 
    
    	return CDialog::PreTranslateMessage(pMsg); 
    }
    通过重载PreTranslateMessage函数,就可实现在IDC_EDIT编辑栏中只有输入0-9、a-f和A-F的时候才有效,其他输入均直接忽略掉。


你可能感兴趣的:(MFC)