我正在构建一个需要始终在顶部显示特定表单的应用程序(这是客户请求),到目前为止,我使用带有HWND_TOPMOST值的SetWindowPos函数,并且工作正常,但是当Windows 7 Flip 3D功能被激活时,我的应用程序并不能保持最佳状态。
Windows 7翻转3D
问题是,即使Windows 7 Flip 3D被激活,我的表单如何能够保持在所有其他窗口之上?
答案 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;
这是结果