2012-02-06 9 views
5

Buduję aplikację, która wymaga wyświetlenia konkretnego formularza zawsze na górze (jest to żądanie klienta), do tej pory używam SetWindowPos funkcja z wartością HWND_TOPMOST i działa dobrze, ale gdy aktywowana jest funkcja Windows 7 Flip 3D, moja aplikacja nie pozostaje na wierzchu.Jak zrobić formularz zawsze na wierzchu, nawet jeśli Windows 7 Flip 3D jest aktywowany

Windows 7 Flip 3D

enter image description here

Pytanie brzmi, jak moja postać może pozostać na szczycie wszystkich innych okien, nawet jeśli Windows 7 Flip 3D jest aktywna?

+3

Wszelkie włamać zrobić bez wątpienia skończyć na [oldnewthing] (http://blogs.msdn.com/b/oldnewthing /) jako przykład tego, czego nie robić. – Neil

+0

Dlaczego chcesz to zrobić? Czy chcesz, aby twoi użytkownicy testowali twój program odinstalowujący? –

+1

@DavidHeffernan Jest to żądanie klienta, ponieważ aplikacja wyświetla dane w czasie rzeczywistym systemu przemysłowego, który musi być zawsze widoczny dla użytkowników. – Salvador

Odpowiedz

19

zrobić to jakiś czas temu przy użyciu funkcji DwmSetWindowAttribute modyfing atrybut DWMWA_FLIP3D_POLICY z DWMFLIP3D_EXCLUDEABOVE wartości.

Spróbuj kod

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; 

I to jest wynik

enter image description here

+0

Dziękuję bardzo. – Salvador

+3

Raymond Chen cię nienawidzi. EMBarbosa

+0

+1, świetna robota. – NeverHopeless

Powiązane problemy