5

特定のフォームを常に一番上に表示する必要があるアプリを構築しています (これは顧客の要求です)。これまでのところ、HWND_TOPMOST 値を指定してSetWindowPos関数を使用しており、正常に動作しますが、Windows 7 の Flip 3D 機能がアクティブ化されたアプリがトップに留まりません。

Windows 7 フリップ 3D

ここに画像の説明を入力

問題は、Windows 7 フリップ 3D が有効になっている場合でも、フォームを他のすべてのウィンドウの上に表示するにはどうすればよいかということです。

4

1 に答える 1

19

これは、 DWMWA_FLIP3D_POLICY属性をDWMFLIP3D_EXCLUDEABOVEDwmSetWindowAttribute値で変更する関数を使用して少し前に行いました。

このコードを試してください

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 に答える