• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Как скрыть окно при потере фокуса?

  • Автор темы exileX
  • Дата начала
Статус
Закрыто для дальнейших ответов.
E

exileX

Делаю так:

case WM_KILLFOCUS:
ShowWindow(hwnd, SW_HIDE);
break;

В итоге окно прячется, когда потеряет фокус, приобретёт и снова потеряет.
Помогите, а то замучался уже.
 
K

Kernel

В смысле? Опиасанный выше код должен работать нормально -- спрятал окно и всё (по крайней мере у меня так работает )... так что ошибка (я кстатии так и не понял в чём она заключается) явно не в нём ...
 
?

????

МОжет Kernel и прав, но мне кажется что этот код не совсем правильный, т.к. WM_KILLFOCUS посылается до потери фокуса, т.е. фокус еще остается на окне, а ты вызываешь ShowWindow(hwnd, SW_HIDE). Т.е. должено посылаться второе сообщение WM_KILLFOCUS... Так можно и повесить прогу.
Попробуй юзать SetWindowLong, а в качестве параментры выбирай нужный тебе стиль окна.
 
K

Kernel

Не, сообщение второй раз не посылается - проверял :D
окно прячется, когда потеряет фокус, приобретёт и снова потеряет.
Единственное что я могу предположить по этому поводу, это то, что активное окно не всегда имеет фокус ... Попробуй сделать ему SetFocus ... может поможет :D
 
A

admin

Я конечно не спец в C++, но один знакомый подсказал что можно сделать так
Код:
case WM_ACTIVATE: 
if(LOWORD(wParam)==WA_INACTIVE)ShowWindow(hwnd,SW_HIDE); 
break;
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!