Как создать неинтерактивное окно в MFC - PullRequest
2 голосов
/ 08 сентября 2008

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

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

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

Ответы [ 2 ]

1 голос
/ 09 сентября 2008

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

1 голос
/ 08 сентября 2008

После неудачной игры с сообщением WM_NCACTIVATE я отверг сообщение WM_SETFOCUS:

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

Кажется, это помогает. Не знаю, почему это работает, хотя! Комментарии приветствуются по этому вопросу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...