1)添加个C++类 eg. class Dot:public CEdit
2)给这个类添加onChar()消息
afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
3)*.cpp中
void Dot::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
}
4)在*Dlg.h加上
----》#include"Dot.h"
----》Dot
5)在*Dlg.cpp加上
-----》DDX_Control(pDX, IDC_EDIT1, m_s);
或者
BOOL CWeiXinQ::PreTranslateMessage(MSG* pMsg)
{
// TODO: 在此添加专用代码和/或调用基类
//指定对话框只接受数字按键输入,其他符号输入无效
//获取控件窗口指针
CEdit* pEdit1 = (CEdit*)GetDlgItem(IDC_EDIT1_Q_MONEY);
CEdit* pEdit2 = (CEdit*)GetDlgItem(IDC_EDIT2_Q_CODE);
if( (GetFocus() == pEdit1 ||GetFocus() == pEdit2) && (pMsg->message == WM_CHAR) )
{
//只允许输入数字和小数点“.”
if((pMsg->wParam <= '9' && pMsg->wParam >= '0') || pMsg->wParam == '.')
{
//金额输入框只允许输入一个小数点
if(pMsg->wParam == '.')
{
CString str;
int nPos = 0;
GetDlgItemText(IDC_EDIT1_Q_MONEY, str); // 获取edit中文本
nPos = str.Find('.'); // 查找.的位置
if(nPos >= 0)
{
return 1;
}
}
return 0;
}
else if(pMsg->wParam == 0x08 || pMsg->wParam == 0x10) //接受Backspace和delete键
{
return 0;
}
else
{
//响应标签页切换的快捷键
switch(pMsg->wParam)
{
case 'q':
case 'Q':
case 'w':
case 'W':
case 'e':
case 'E':
case 'r':
case 'R':
case 't':
case 'T':
case 'y':
case 'Y':
case 'u':
case 'U':
case 'i':
case 'I':
case 'o':
case 'O':
CWnd *pParent = GetParent();
pParent->SetFocus();
}
return 1;
}
}
return CDialogEx::PreTranslateMessage(pMsg);
}