Как создать неинтерактивное окно в MFC
-
09-06-2019 - |
Вопрос
В моем приложении у меня есть окно, в котором я всплываю с небольшими сообщениями в нем (думаю, похожими на всплывающую подсказку).Это окно использует атрибуты layered для рисования альфа-фона и т.д.
Если у меня открыто сразу несколько таких окон, и я щелкаю мышью по одному из них, когда они исчезают, это приводит к тому, что мое приложение теряет фокус (оно переключает фокус на приложение, стоящее за текущим).
Как мне остановить любое взаимодействие в моем окне?
Решение 2
После игры с WM_NCACTIVATE
сообщение не увенчалось успехом, я отклонил запрос WM_SETFOCUS
Сообщение:
void CMyWindow::OnSetFocus(CWnd* pOldWnd)
{
if (pOldWnd != NULL)
{
pOldWnd->SetFocus();
}
}
Кажется, это делает свое дело.Хотя понятия не имею, почему это работает!Приветствуются комментарии по этому вопросу.
Другие советы
Это работает, потому что OnSetFocus (как и многие методы On *) дает вам шанс упредить действие до того, как оно действительно произойдет.Фокус на самом деле никогда не переключается на ваше неинтерактивное окно.