即使Windows 7 Flip 3D被激活,如何使表单始终位于顶部

时间:2012-02-06 23:19:47

标签: delphi delphi-xe2 aero dwm flip3d

我正在构建一个需要始终在顶部显示特定表单的应用程序(这是客户请求),到目前为止,我使用带有HWND_TOPMOST值的SetWindowPos函数,并且工作正常,但是当Windows 7 Flip 3D功能被激活时,我的应用程序并不能保持最佳状态。

Windows 7翻转3D

enter image description here

问题是,即使Windows 7 Flip 3D被激活,我的表单如何能够保持在所有其他窗口之上?

1 个答案:

答案 0 :(得分:19)

前一段时间我使用DwmSetWindowAttribute函数执行此操作,使用 DWMFLIP3D_EXCLUDEABOVE 值来设置DWMWA_FLIP3D_POLICY属性。

试试此代码

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