окно поверх других приложений когда и почему
От: Шебеко Евгений  
Дата: 19.09.11 08:19
Оценка:
Заказчику нужно было окно, которое появляется поверх других приложений.
Мотивация такая: "Когда диспетчер смотрит фильм, необходимо чтобы тревога выскакивала у него поверх всего".
К счастью код на скрипте так и заработал.



Скрипт использует VCL от Builder6 для создания окон.
Код окна такой:
  fm.pConstructor(mainForm);
  fm.Caption="Тревога";
  fm.Width=248;
  fm.Height=159;
  fm.BorderStyle=bsSizeToolWin;
  fm.AutoScroll=false;
  fm.FormStyle=fsStayOnTop;
  fm.Visible=false;
  fm.Left=200;
  fm.Top=200;
  fm.Visible=false;
  fm.setEventHandler("OnClose","fmAlertClose");
  fm.ShowHint=true;
  fm.Color=clRed;

За стили отвечают выделенные фрагменты.
Не скажу точно, как оно ложится на WIN API.
Если надо, могу посмотреть Spy++.


Вопрос в том, почему это работает?
Бывает пытаешься создать такое окно, а оно не выходит.
Помигает твоё приложение в taskbar и всё. Мол пользователь сам княпнуть должен, чтобы сделать приложение
(главное окно приложения) активным.
Читал, что по дизайну это некошерно, когда выскакивают окна неактивных приложений.
Поэтому, код, который это делает, теперь только мигает в taskbar'e.
А тут само появилось. При определённых условиях вообще от него фиг избавишься.
Окно выскакивает и в XP, и в Win7.
Или некошерно только для модальных окон?

В общем кто может авторитетно просветить по этому вопросу?

ЗЫ. Такое страшное окно захотел заказчик
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.