5

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

Windows 7 翻转 3D

在此处输入图像描述

问题是,即使激活了 Windows 7 Flip 3D,我的表单如何保持在所有其他窗口的顶部?

4

1 回答 1

19

前段时间,我使用修改DWMWA_FLIP3D_POLICY属性和DWMFLIP3D_EXCLUDEABOVE值的DwmSetWindowAttribute函数来执行此操作。

试试这个代码

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;

这就是结果

在此处输入图像描述

于 2012-02-06T23:33:15.130 回答