Как получить уведомление левой кнопкой мыши на элемент управления редактирования?

Я хочу отслеживать событие одиночного щелчка левой кнопкой мыши на элементе управления редактирования.
Я переопределяю 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;
}
}

Проблема в том, что когда я нажимаю на элемент управления редактирования, все остальные элементы управления становятся отключенными (например, кнопки не реагируют на нажатия и т. Д.)

Как я могу исправить эту проблему? Или как я могу отслеживать уведомления о кликахN в окне редактирования?

2

Решение

Ты нуждаешься в этом:

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
}
5

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector