Как сделать форму всегда на высоте, даже если активирована Windows 7 Flip 3D - PullRequest
5 голосов
/ 07 февраля 2012

Я создаю приложение, которое должно отображать определенную форму всегда сверху (это запрос клиента), пока что я использую функцию SetWindowPos со значением HWND_TOPMOST, и это прекрасно работает, но когда активирована функция Windows 7 Flip 3D, мое приложение не остается в топе.

Windows 7 Flip 3D

enter image description here

Вопрос в том, как моя форма может оставаться поверх всех остальных окон, даже если активирована Windows 7 Flip 3D?

1 Ответ

19 голосов
/ 07 февраля 2012

Я делаю это некоторое время назад, используя функцию DwmSetWindowAttribute, модифицирующую атрибут DWMWA_FLIP3D_POLICY со значением DWMFLIP3D_EXCLUDEABOVE .

Попробуйте этокод

uses
  Winapi.DwmApi;

procedure TForm40.FormCreate(Sender: TObject);
var
  pvAttribute: Integer;
begin
  pvAttribute:= DWMFLIP3D_EXCLUDEABOVE;
  if DwmCompositionEnabled then
   DwmSetWindowAttribute(Handle, DWMWA_FLIP3D_POLICY, @pvAttribute, Sizeof(Integer));
end;

И это результат

enter image description here

...