2012-02-06 44 views
5

我正在構建一個應用程序,它需要始終顯示特定窗體(這是客戶請求),到目前爲止我使用的是SetWindowPos函數與HWND_TOPMOST值,並且工作正常,但是當Windows 7 Flip 3D功能被激活時,我的應用不會保持在最前。即使Windows 7 Flip 3D被激活,如何使窗體始終位於頂層

Windows 7的翻轉3D

enter image description here

的問題是,如何我的形式可以留在所有其他窗口的頂部,即使在Windows 7翻轉3D被激活?

+3

任何破解你這樣做無疑會最終在[oldnewthing](http://blogs.msdn.com/b/oldnewthing /)作爲不做的一個例子。 – Neil 2012-02-06 23:29:41

+0

你爲什麼想這樣做?你想確保你的用戶測試你的卸載程序嗎? – 2012-02-06 23:34:52

+1

@DavidHeffernan這是一個客戶請求,因爲應用程序顯示工業系統的實時數據,必須始終保持用戶可見。 – Salvador 2012-02-06 23:37:49

回答

19

我做到這一點,前一段時間使用DwmSetWindowAttribute功能modyfing的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

+0

非常感謝。 – Salvador 2012-02-06 23:46:26

+3

雷蒙德會恨你。 EMBarbosa 2012-02-07 20:02:57

+0

+1,真棒作品。 – NeverHopeless 2013-06-03 13:34:19

相關問題