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

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

exileX

#1
Делаю так:

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

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

Kernel

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

????

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

Kernel

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

admin

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