如题。
我在代码里可以用SetLayeredWindowAttributes设置窗口的透明度,但是想用GetLayeredWindowAttributes来取窗口的透明度时,提示我这个函数没定义。
需要引入什么单元吗?
我就是想先取出一个目标窗口的透明度,然后设置一下透明度比如半透明或者全透明,然后再恢复该窗口原来的透明度。

解决方案 »

  1.   

    var originStyle : longint;
      targetStyle : longint;
      originStyle:=getWindowLong(Hwnd, GWL_EXSTYLE);
      targetStyle := originStyle Or $80000;
      SetWindowLong (Hwnd, GWL_EXSTYLE, targetStyle);
      //透明度在0~255之间
      SetLayeredWindowAttributes(Hwnd, 0, 180, 2);
      sleep(5000);
      //恢复
      SetWindowLong (Hwnd, GWL_EXSTYLE, originStyle); 以上代码实现了透明度和恢复。
    但还是不知道怎么取原来的透明度,originStyle肯定不是,因为他不是0-255的一个值。
    另外还不知道到底Delphi里有没有GetLayeredWindowAttributes函数,以及怎么引入
      

  2.   

    SetLayeredWindowAttributes delphi和MSDN中没有这个函数,是不是别人自己写的函数
      

  3.   

    Delphi中有SetLayeredWindowAttributes但是没有GetLayeredWindowAttributes函数,可以自己声明一个:function GetLayeredWindowAttributes(Handle: HWND; var crKey: COLORREF;
          var Alpha: Byte; var Flags: LongInt): BOOL; stdcall; external 'user32.dll';procedure TForm1.Button1Click(Sender: TObject);
    var
      c: COLORREF;
      a: Byte;
      f: LongInt;
    begin
      GetLayeredWindowAttributes(Handle, c, a, f);
    end; 
      

  4.   

    要实现Delphi的Form透明窗口,可以直接设置Form的属性:  AlphaBlendValue := 128;
      AlphaBlend := True;
      

  5.   

    就是看到C里面有GetLayeredWindowAttributes,而且Delphi里有SetLayeredWindowAttributes,所以觉得Delphi里也应该会有GetLayeredWindowAttributes。
    谢谢大家的回答。
      

  6.   

    use32.dllOnly support NT System.