【第六章6.1】功能特效 -- 毛玻璃效果

贴主:admin 发贴:2024-07-28 22:34 浏量:14

效果图:

代码:

//毛玻璃效果
import win.ui;
/*DSG{{*/
var winform = win.form(text="毛玻璃效果";right=759;bottom=469)
winform.add()
/*}}*/

// 加载 Dwmapi.dll 动态链接库 
::DwmApi := raw.loadDll("Dwmapi.dll")
// 定义毛玻璃效果函数
var aero = function(hwnd){
	 // 检查是否为 Windows 10 或更高版本
	if(_WIN10_LATER){ 
		// 创建毛玻璃效果配置结构体 
		var accent = {
			int AccentState = 3; // 毛玻璃效果状态
			INT AccentFlags = 0;
			INT GradientColor = 0;
			INT AnimationId = 0;
		};
	
		// 设置窗口毛玻璃效果
		::User32.SetWindowCompositionAttribute(hwnd,{
			INT Attrib = 19; // 设置属性
			ptr pvData = raw.buffer(accent); // 毛玻璃效果配置
			INT cbData = raw.sizeof(accent); // 配置大小
		});
	}
	// 检查是否为 Windows 7 或更高版本
	elseif(_WIN7_LATER) {
		 // 创建结果结构体
		var result = {bool enabled};
		// 检查毛玻璃效果是否启用
		::DwmApi.DwmIsCompositionEnabled(result)
		if(result.enabled){
			 // 启用毛玻璃效果
			::DwmApi.DwmEnableBlurBehindWindow(hwnd,{ int flags=3;int enable=1;int rgnBlur;int transition})
		} 
	}	
}
// 调用毛玻璃效果函数
aero( winform.hwnd );

// 显示窗口
winform.show();
// 启动消息循环
win.loopMessage();


相关回复


    暂无评论!

发表回复