• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы 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;
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

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