VC++6.0 CEdit 响应键盘输入事件

本文介绍了如何在VC++6.0的MFC项目中响应CEdit控件的键盘输入事件,特别是在对话框中通过重写PreTranslateMessage方法来处理WM_KEYDOWN消息,实现对特定按键如F1、F2的逻辑操作,并限制CEdit只接受数字输入。
摘要由CSDN通过智能技术生成

 

摘自:http://blog.csdn.net/howard_liu1314/article/details/8222357

项目中要对对话框的键盘按键做出相应,实现逻辑如下:

VS2005开发MFC的wince项目;在对话框中‘重写’ PreTranslateMessage方法;

1.头文件中添加:virtual BOOL PreTranslateMessage(MSG* pMsg);

2.cpp文件的实现代码:

 

BOOL CSystemSetupDlg::PreTranslateMessage(MSG* pMsg) 
{
 if(pMsg->message==WM_KEYDOWN) 
 { 
  UINT iKey=(UINT)pMsg->wParam;
  switch(iKey)

  {
  case VK_F1:

//可以用GetKeyState()检测按键状态
   if(GetKeyState(VK_CONTROL)<0)
   {

    //CTRL+F1的处理逻辑

   }

  break;
  case VK_F2:
   if(GetKeyState(VK_CONTROL)<0)
   {

    //CTRL+F2的处理逻辑
   }

   break;
  }
 }

 return CDialog::PreTranslateMessage(pMsg);
}

这样对话框就能相应键盘按键消息了。

3.CEDIT控件只允许输入数字

 

BOOL CXXDlg::PreTranslateMessage(MSG* pMsg)

{

    // TODO:Add your specialized code here and/or call the base class

    CEdit*pEdit = (CEdit*)GetDlgItem(IDC_EDIT1);

   ASSERT(pEdit &&pEdit->GetSafeHwnd());

  //可以使用pEdit->m_hwnd替代GetSafeHwnd

   if((WM_KEYDOWN == pMsg->message)&&(pEdit->GetSafeHwnd() ==pMsg->hwnd))

    {

       if((pMsg->wParam >= _T('0')&& pMsg->wParam<=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值