多个按键或edit控件焦点事件用同一个函数处理

//按键

 virtual BOOL PreTranslateMessage(MSG* pMsg);
BOOL CTestDengDlg::PreTranslateMessage(MSG* pMsg)
{
    int buID;
    buID= GetWindowLong(pMsg->hwnd,GWL_ID);//由窗口句柄获得ID号,GetWindowLong为获得窗口的ID号。
    CString strShow = _T("");
     switch(pMsg->message)
     {
         case WM_LBUTTONDOWN:
            switch(buID)
            {
                case IDC_BUTTON1:
                    //AfxMessageBox(_T("按键1按下"));
                    break;
                case IDC_BUTTON2:
                    //AfxMessageBox(_T("按键2按下"));
                    break;

                 case 0: //点击空白处

                        GetDlgItem(IDC_STATIC)->SetFocus();

                        break;
            }
            break;
         case WM_LBUTTONUP: 
            switch(buID)
            {
                case IDC_BUTTON1:
                    AfxMessageBox(_T("按键1弹起"));
                    break;
                case IDC_BUTTON2:
                    AfxMessageBox(_T("按键2弹起"));
                    break;
            }
         break;
     }
    return CDialogEx::PreTranslateMessage(pMsg);
}

或者

BOOL CTestDengDlg::PreTranslateMessage(MSG* pMsg)
{
    CTestDengApp* pApp = (CTestDengApp*)AfxGetApp();
    // TODO:  在此添加专用代码和/或调用基类
    switch(pMsg->message)    
    {
        case WM_LBUTTONDOWN:    //按键按下
            if (pMsg->hwnd == GetDlgItem(IDC_BTNOPTCWJOG)->GetSafeHwnd())
            {
                Ival[OPTMOTRNUM] = 0;
                m_motoCtrl->JOG(MOPT_B,Ival);
            }
            else if(pMsg->hwnd == GetDlgItem(IDC_BTNPOLCWJOG)->GetSafeHwnd())
            {
                Ival[POLMOTRNUM] = 0;
                m_motoCtrl->JOG(MPOL_B,Ival);
            }
            case WM_LBUTTONUP:    //按键弹起
            
            break;
        default:
            break;
    }

    return CDialogEx::PreTranslateMessage(pMsg);
}

//焦点事件,先添加事件处理程序再修改所有的EDIT为同一函数,函数里面区别是哪个EDIT

void CTestDengDlg::OnEnSetfocustest()
{
    CWnd* pCtrl = CWnd::GetFocus();  
    int iCtrlID = pCtrl->GetDlgCtrlID();  
    if(iCtrlID == IDC_EDIT1)  
    {  
        ;
    }  
    else if(iCtrlID == IDC_EDIT2)  
    {  
        ;
    } 
}

void CTestDengDlg::OnEnKillfocustest()
{
    CWnd* pCtrl = CWnd::GetFocus();  
    int iCtrlID = pCtrl->GetDlgCtrlID();  
    if(iCtrlID == IDC_EDIT1)  
    {  
        ;
    }  
    else if(iCtrlID == IDC_EDIT2)  
    {  
        ;
    } 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值