Delphi: Balloon Form с fsStayOnTop не работает в Win7 - PullRequest
4 голосов
/ 26 октября 2011

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

Я показываю ее с этим кодом:

ShowWindow(Handle, SW_SHOWNOACTIVATE);
Visible := True;

Сегодня я понял, что если я активирую другое приложение, то всплывающее окно не появляется!Таким образом, он теряет свой стиль.

Среда: Win7 / x64 Delphi 6 Professional

Что я могу с этим сделать?

Спасибо: дд

1 Ответ

5 голосов
/ 26 октября 2011

Что сработало для меня в прошлом, когда я боролся с формами «остаться на вершине»:

Form := TMyForm.Create(Self);
Application.NormalizeTopMosts;
SetWindowPos(Form.Handle, HWND_TOPMOST, 0, 0, 0, 0,
             SWP_NOACTIVATE + SWP_NOMOVE + SWP_NOSIZE);
Form.Show;

Попробуйте вместо звонка ShowWindow.Это остается поверх всех окон (вы действительно этого хотите?).Кроме того, он выглядит как хакерский, потому что он пропускает вызов RestoreTopMosts, о котором в документации говорится, что мы должны вызывать (так что это повлияет на другие окна в вашем приложении).Так что может быть лучшее решение.

...