combobox focus event

I want to capture the shift+tab event when my combo got  focus, it is ok when I set the combobox DROPDOWNLIST, but when the combobox set to DROPDOWN, I can not capture the event if the focus is hold by the combobox, code like this:

BOOL CMyDlg::PreTranslateMessage(MSG* pMsg)
{
      if( pMsg->message == WM_KEYDOWN )
      {
            if( (pMsg->hwnd == GetDlgItem(IDC_COMBO_FIND)->m_hWnd)
            {
                  AfxMessageBox("IDC_COMBO_FIND-mhWnd");
                  return TRUE;
            }
            else if(GetFocus()==GetDlgItem(IDC_COMBO_FIND) )
            {
                  AfxMessageBox("IDC_COMBO_FIND-getfocus");
            }
            else if(pMsg->hwnd == GetDlgItem(IDC_COMBO_FIND)->GetSafeHwnd())
            {
                  AfxMessageBox("IDC_COMBO_FIND-GetSafeHwnd");
            }
            else
            {
                  //AfxMessageBox("not hit");
            }
      }
      return CDialog::PreTranslateMessage(pMsg);
}
csdnchenAsked:
Who is Participating?
 
AlexFMConnect With a Mentor Commented:
Combobox with Dropdown style has child edit box, this is a reason your code doesn't work. You can see this in Spy++.
Find this child edit box using GetWindow or EnumChildWindows, and test for it's HWND in PreTranslateMessage.
You can use also IsChild function to test whether pMsg->hwnd is child of combobox.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.