VC++对话框的KeyDown问题

在VC++的CMsgKeyDownDlg类中,PreTranslateMessage函数处理WM_KEYDOWN消息时遇到问题。当按下数字键1,对话框 IDC_EDIT1 显示的ASCII值是97,对应字符'a'。相反,按下字母'A'时,显示正确为65。作者意在阻止除A-Z、a-z、0-9及Backspace外的所有字符输入。
摘要由CSDN通过智能技术生成
我的问题在注释处,谢谢大家
BOOL CMsgKeyDownDlg::PreTranslateMessage(MSG* pMsg) 
{ HWND   hwnd;   
GetDlgItem(IDC_EDIT1,&hwnd);      
if(   pMsg->message   ==   WM_KEYDOWN   &&   pMsg->hwnd   ==   hwnd)   
{   
CString strText;
strText.Format("%d", pMsg->wParam);
AfxMessageBox(strText);
                   /*问题: 为什么我按的是右边的数字键1,而显示的却是97,而97是Ascii的字符"a"才对啊,
                  但是在IDC_EDIT1中显示的依然是数字1,还有其它的,例我用按键按下的是A,显示为65,这是正确的,但是我按下a时,显示的依然是65,这是什么原因?
                  我的目的是,想在这里屏蔽除了A-Z、a-z、0-9以及Backspace之外的所有字符,在这里应该怎么做呢?*/

                                                   
}   
   return CDialog::PreTranslateMessage(pMsg);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值