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

Sal*_*dor 5 delphi aero dwm delphi-xe2 flip3d

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

Windows 7翻转3D

在此输入图像描述

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

RRU*_*RUZ 19

我之前使用DWMWAIP3D_EXCLUDEABOVEDwmSetWindowAttributeDWMWA_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;
Run Code Online (Sandbox Code Playgroud)

这就是结果

在此输入图像描述

  • 雷蒙德陈会恨你.<G> (3认同)