函数参考


_WinAPI_DwmEnableBlurBehindWindow

Enables the blur effect on a specified window.

#Include <WinAPIEx.au3>
_WinAPI_DwmEnableBlurBehindWindow ( $hWnd [, $fEnable [, $fTransition [, $hRgn]]] )

参数

$hWnd 窗口句柄.
$fEnable [可选参数] 指定 DWM 模糊后是否注册或注销窗口句柄.有效值:
1 - 注册.
0 - 不注册.
$fTransition [可选参数] 指定匹配色是否过渡到最大化窗口.有效值:
1 - 窗口应该是彩色.
0 - 不要.
$hRgn [可选参数] 应用到客户端模糊区域的后面.
0 值将应用模糊到整个客户区.

返回值

成功: 返回 1.
失败: 返回 0,设置 @error 标志为非 0 值, @extended 标志可能包含一个系统错误代码.

注意/说明

窗口提供 alpha 值,且顶部模糊也将使用这些 alpha 值
 应用程序负责确保窗口中所有像素的 alpha 值的正确性
 必须注意某些 Windows GDI 操作不保留 alpha 值,
 因为子窗口提供的 alpha 值是不可预知的.
 每当桌面窗口管理器(DWM)切换时,必须调用这个函数.
 WM_DWMCOMPOSITIONCHANGED 消息通知切换的变化信息.
 本函数需要 Windows Vista 或更高版本系统.

本函数需要 Windows Vista 或更高版本系统.

相关

详情参考

在MSDN中搜索


示例/演示


#Include <WinAPIEx.au3>

Opt('MustDeclareVars', 1)

If Not _WinAPI_DwmIsCompositionEnabled() Then
    MsgBox(16, 'Error', 'Require Windows Vista or later with enabled Aero theme.')
    Exit
EndIf

Global $hForm, $hRgn

; 创建 GUI
$hForm = GUICreate('MyGUI', 400, 400)

GUISetBkColor(0)

; 给指定区域创建 "玻璃片" 效果. 无论 DWM (桌面窗口管理器) 组件是否切换您必须调用此函数.
_WinAPI_DwmGetColorizationColor()
If Not @extended Then
    $hRgn = _WinAPI_CreateEllipticRgn(_WinAPI_CreateRectEx(50, 50, 300, 300))
Else
    $hRgn = 0
EndIf
_WinAPI_DwmEnableBlurBehindWindow($hForm, 1, 0, $hRgn)
If $hRgn Then
    _WinAPI_DeleteObject($hRgn)
EndIf

GUISetState()

Do
Until GUIGetMsg() = -3