Вопрос

В моем приложении у меня есть окно, в котором я всплываю с небольшими сообщениями в нем (думаю, похожими на всплывающую подсказку).Это окно использует атрибуты layered для рисования альфа-фона и т.д.

Если у меня открыто сразу несколько таких окон, и я щелкаю мышью по одному из них, когда они исчезают, это приводит к тому, что мое приложение теряет фокус (оно переключает фокус на приложение, стоящее за текущим).

Как мне остановить любое взаимодействие в моем окне?

Это было полезно?

Решение 2

После игры с WM_NCACTIVATE сообщение не увенчалось успехом, я отклонил запрос WM_SETFOCUS Сообщение:

void CMyWindow::OnSetFocus(CWnd* pOldWnd)
{
    if (pOldWnd != NULL)
    {
        pOldWnd->SetFocus();
    }
}

Кажется, это делает свое дело.Хотя понятия не имею, почему это работает!Приветствуются комментарии по этому вопросу.

Другие советы

Это работает, потому что OnSetFocus (как и многие методы On *) дает вам шанс упредить действие до того, как оно действительно произойдет.Фокус на самом деле никогда не переключается на ваше неинтерактивное окно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top