我正在構建一個應用程序,它需要始終顯示特定窗體(這是客戶請求),到目前爲止我使用的是SetWindowPos函數與HWND_TOPMOST值,並且工作正常,但是當Windows 7 Flip 3D功能被激活時,我的應用不會保持在最前。即使Windows 7 Flip 3D被激活,如何使窗體始終位於頂層
Windows 7的翻轉3D
的問題是,如何我的形式可以留在所有其他窗口的頂部,即使在Windows 7翻轉3D被激活?
我正在構建一個應用程序,它需要始終顯示特定窗體(這是客戶請求),到目前爲止我使用的是SetWindowPos函數與HWND_TOPMOST值,並且工作正常,但是當Windows 7 Flip 3D功能被激活時,我的應用不會保持在最前。即使Windows 7 Flip 3D被激活,如何使窗體始終位於頂層
Windows 7的翻轉3D
的問題是,如何我的形式可以留在所有其他窗口的頂部,即使在Windows 7翻轉3D被激活?
我做到這一點,前一段時間使用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;
這是結果
非常感謝。 – Salvador 2012-02-06 23:46:26
雷蒙德會恨你。
+1,真棒作品。 – NeverHopeless 2013-06-03 13:34:19
任何破解你這樣做無疑會最終在[oldnewthing](http://blogs.msdn.com/b/oldnewthing /)作爲不做的一個例子。 – Neil 2012-02-06 23:29:41
你爲什麼想這樣做?你想確保你的用戶測試你的卸載程序嗎? – 2012-02-06 23:34:52
@DavidHeffernan這是一個客戶請求,因爲應用程序顯示工業系統的實時數據,必須始終保持用戶可見。 – Salvador 2012-02-06 23:37:49