MFC OnMouseActivate: где фокус, если вы съели событие мыши? - PullRequest
1 голос
/ 12 февраля 2011

Где остается фокус? Фокус оставлен на окне, которое ранее удерживало фокус, или фокус в подвешенном состоянии, на окне нет?

Я заметил, что когда я ем сообщение, оно выглядит так, как будто ничто не фокусируется.

Я возвращаю MA_NOACTIVATEANDEAT

1 Ответ

2 голосов
/ 15 февраля 2011

Фокус не может быть в подвешенном состоянии.У чего-то всегда должен быть фокус, поэтому это будет либо окно, в котором ранее удерживал фокус, либо новое окно, которое активируется событием мыши.

Документация для CWnd::OnMouseActivate сообщает нам, что произойдет, в зависимости от значения, которое вы возвращаете из функции:

<b>MA_ACTIVATE</b>           Activate CWnd object
<b>MA_NOACTIVATE</b>         Do not activate CWnd object
<b>MA_ACTIVATEANDEAT</b>    Activate CWnd object and discard the mouse event
<b>MA_NOACTIVATEANDEAT</b>  Do not activate CWnd object and discard the mouse event

Поскольку вы возвращаете MA_NOACTIVATEANDEAT, ранее сфокусированный объект сохранит фокуси событие мыши будет отброшено.

...