Delphi的Frame在Vista和Xp的默认主题下是背景透明的,可是切换到经典主题(或Windows2000)后就不透明了,不知道怎样实现透明(Delphi2007&2009均有此问题)
谢谢!

解决方案 »

  1.   

    楼主好大方啊。const
      WS_EX_LAYERED = $80000;
      WS_EX_TRANSPARENT = $20;
      LWA_ALPHA = $2;procedure TForm1.Button1Click(Sender: TObject);
    var
      OldStyle: Integer;
    begin
      OldStyle := GetWindowLong(Handle, GWL_EXSTYLE);
      SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_LAYERED);
      SetLayeredWindowAttributes(Handle, 0, 150, LWA_ALPHA);
      SetWindowLong(Handle, GWL_EXSTYLE, OldStyle Or WS_EX_LAYERED Or WS_EX_TRANSPARENT);
    end;
    end.