2012-02-06 14 views
5

Her zaman en üstte belirli bir formu görüntülemesi gereken bir uygulama yapıyorum (bu bir müşteri talebi), şu ana kadar SetWindowPos kullanıyorum HWND_TOPMOST değeriyle çalışır ve bu iyi çalışır, ancak Windows 7 Flip 3D özelliği etkinleştirildiğinde, uygulamam en üste kalmaz.Windows 7 Flip 3D etkin olsa bile bir form her zaman en üstte nasıl oluşturulur

Windows 7 3B Hızlı Uygulama Geçişi

enter image description here

soru, benim form diğerleri pencerelerin üstünde kalabilirler nasıl Windows 7 3B Hızlı Uygulama Geçişi etkinleştirildiğinde bile?

+3

olduğunu/b/oldnewthing /) ne yapmamanın bir örneği. – Neil

+0

Bunu neden yapmak istiyorsun? Kullanıcılarınızın kaldırma programınızı test ettiğinden emin olmak ister misiniz? –

+1

@DavidHeffernan Bu bir müşteri talebi çünkü uygulama, her zaman kullanıcılar tarafından görülmesi gereken bir endüstriyel sistemin gerçek zamanlı verilerini gösterir. – Salvador

cevap

19

Bir süre önce DWMFLIP3D_EXCLUDEABOVE değerle DWMWA_FLIP3D_POLICY özelliğini modyfing DwmSetWindowAttribute işlevini kullanarak bunu.

Bu kodu

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; 

deneyin Ve bu hiç şüphesiz http://blogs.msdn.com ([oldnewthing] üzerine sona erecek yapmak Herhangi kesmek sonuç

enter image description here

+0

Çok teşekkürler. – Salvador

+3

Raymond Chen senden nefret edecek. EMBarbosa

+0

+1, harika bir çalışma. – NeverHopeless

İlgili konular