使用Delphi调用DWM API的问题 ( 积分: 20 )

  • 主题发起人 主题发起人 sy0116
  • 开始时间 开始时间
S

sy0116

Unregistered / Unconfirmed
GUEST, unregistred user!
我想让我的程序在Vista下实现整个界面都半透明的效果,在网上找到这篇文章:<br>http://www.cnblogs.com/dflying/archive/2007/03/20/680921.html<br>参照其中的代码写了下面的代码,但是却无法实现毛玻璃效果,整个窗口都变成白色的了,请问有谁做过类似的程序啊(D7、D2007都一样)<br>function&nbsp;EnableBlurBehindWindow(window:HWND;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enable:bool&nbsp;=&nbsp;true;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;region:HRGN&nbsp;=&nbsp;0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;transitionOnMaximized:bool&nbsp;=&nbsp;false):hresult;<br>var<br>blurBehind:DWM_BLURBEHIND;<br>begin<br>&nbsp;&nbsp;&nbsp;&nbsp;blurBehind.dwFlags:=&nbsp;DWM_BB_ENABLE&nbsp;+&nbsp;DWM_BB_TRANSITIONONMAXIMIZED;<br>&nbsp;&nbsp;&nbsp;&nbsp;blurBehind.fEnable:=&nbsp;enable;<br>&nbsp;&nbsp;&nbsp;&nbsp;blurBehind.fTransitionOnMaximized&nbsp;:=&nbsp;transitionOnMaximized;<br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(enable&nbsp;and&nbsp;(0&nbsp;&lt;&gt;&nbsp;region))&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;blurBehind.dwFlags&nbsp;:=&nbsp;blurBehind.dwFlags+DWM_BB_BLURREGION;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;blurBehind.hRgnBlur&nbsp;:=&nbsp;region;<br>&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;&nbsp;&nbsp;result:=DwmEnableBlurBehindWindow(window,blurBehind);<br>end;<br><br>procedure&nbsp;TForm1.Button1Click(Sender:&nbsp;TObject);<br>begin<br>&nbsp;&nbsp;EnableBlurBehindWindow(form1.Handle);<br>end;
 
DwmExtendFrameIntoClientArea也不行,结果一样
 
后退
顶部