如何在编辑控件上获得左键单击通知?

How to get left click notification on an edit control?

我想跟踪左键单击编辑控件的事件。 我重写 PretranslateMessage 函数如下:

BOOL CMyClass::PreTranslateMessage(Msg* pMsg)
    {
       switch(pMsg->message)

       case WM_LBUTTONDOWN:
       {
          CWnd* pWnd = GetFocus();
          if (pWnd->GetDlgCtrlID == MY_EDIT_CTRL_ID)
             {
                //Do some thing
             }
          break;
       }
    }

问题是当我点击编辑控件时,所有其他控件都被禁用(例如按钮不响应点击等)

我该如何解决这个问题?或者我如何跟踪编辑框上的点击通知?

你需要这个:

BOOL CMyClass::PreTranslateMessage(MSG* pMsg)
{
  switch(pMsg->message)
  {
    case WM_LBUTTONDOWN:
    {
      CWnd* pWnd = GetFocus();
      if (pWnd->GetDlgCtrlID() == MY_EDIT_CTRL_ID)  // << typo corrected here
      {
         //Do some thing
      }
      break;
    }
  } 

  return __super::PreTranslateMessage(pMsg);  //<< added
}

顺便说一句,在这里使用 switch 语句有点尴尬。下面的代码是更清晰的 IMO,除非你想添加更多的案例而不只是 WM_LBUTTONDOWN:

BOOL CMyClass::PreTranslateMessage(MSG* pMsg)
{
  if (pMsg->message == WM_LBUTTONDOWN)
  {
    CWnd* pWnd = GetFocus();

    if (pWnd->GetDlgCtrlID() == MY_EDIT_CTRL_ID)
    {
       //Do some thing
    }
  } 

  return __super::PreTranslateMessage(pMsg);  //<< added
}