#include <windows.h>
#include <dwmapi.h> // 定义一个枚举类型,表示不同的窗口组合状态
enum AccentState {
ACCENT_DISABLED = 0,
ACCENT_ENABLE_GRADIENT = 1,
ACCENT_ENABLE_TRANSPARENTGRADIENT = 2,
ACCENT_ENABLE_BLURBEHIND = 3,
ACCENT_ENABLE_ACRYLICBLURBEHIND = 4,
ACCENT_INVALID_STATE = 5
}; // 定义一个结构体,表示窗口组合策略
struct AccentPolicy {
AccentState AccentState;
int AccentFlags;
int GradientColor;
int AnimationId;
}; // 定义一个结构体,表示窗口组合属性
struct WindowCompositionAttributeData {
int Attribute;
PVOID Data;
ULONG DataSize;
}; // 定义一个函数指针类型,用于调用 SetWindowCompositionAttribute API
typedef BOOL(WINAPI*pSetWindowCompositionAttribute)(HWND, WindowCompositionAttributeData*); // 定义一个全局变量,存储函数指针
pSetWindowCompositionAttribute SetWindowCompositionAttribute = nullptr; // 定义一个函数,用于设置窗口的亚克力效果
void EnableAcrylic(HWND hwnd, COLORREF color) {
// 如果函数指针为空,就从 dwmapi.dll 中获取函数地址
if (!SetWindowCompositionAttribute) {
HMODULE hModule = LoadLibrary(TEXT("user32.dll"));
if (hModule) {
SetWindowCompositionAttribute =
(pSetWindowCompositionAttribute)GetProcAddress(hModule, "SetWindowCompositionAttribute");
}
} // 如果函数指针有效,就构造参数并调用函数
if (SetWindowCompositionAttribute) {
AccentPolicy policy = { ACCENT_ENABLE_ACRYLICBLURBEHIND, 0, color, 0 };
WindowCompositionAttributeData data = { 19, &policy, sizeof(AccentPolicy) };
SetWindowCompositionAttribute(hwnd, &data);
}
} // 定义窗口类名和标题
const char g_szClassName[] = "myWindowClass";
const char g_szTitle[] = "亚克力效果示例"; // 定义消息处理函数
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_CREATE:
// 在窗口创建时设置亚克力效果,颜色为半透明的白色(0x80FFFFFF)
EnableAcrylic(hwnd, 0x80FFFFFF);
break;
case WM_CLOSE:
DestroyWindow(hwnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
return 0;
}
//定义全局变量
HINSTANCE hInstance; //程序实例句柄
HWND hWnd; //窗口句柄
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
//初始化窗口类结构体
WNDCLASSEX wcex;
wcex.cbSize = sizeof(WNDCLASSEX); //结构体大小
wcex.style = CS_HREDRAW | CS_VREDRAW; //窗口样式
wcex.lpfnWndProc = WndProc; //窗口过程函数指针
wcex.cbClsExtra = 0; //额外的类内存
wcex.cbWndExtra = 0; //额外的窗口内存
wcex.hInstance = hInstance; //程序实例句柄
wcex.hIcon = LoadIcon(NULL, IDI_APPLICATION); //窗口图标句柄
wcex.hCursor = LoadCursor(NULL, IDC_ARROW); //窗口光标句柄
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); //窗口背景画刷句柄
wcex.lpszMenuName = NULL; //菜单资源名
wcex.lpszClassName = "win"; //窗口类名
wcex.hIconSm = LoadIcon(NULL, IDI_APPLICATION); //小图标句柄 //注册窗口类
if (!RegisterClassEx(&wcex))
{
MessageBox(NULL, "注册窗口类失败!", "错误", MB_OK | MB_ICONERROR);
return -1;
} //创建窗口
hWnd = CreateWindowEx(
WS_EX_APPWINDOW | WS_EX_LAYERED, //扩展样式,包括应用程序窗口和分层窗口
"win", //窗口类名
"C++设置窗口亚克力效果", //窗口标题
WS_OVERLAPPEDWINDOW & ~WS_THICKFRAME & ~WS_MAXIMIZEBOX, //基本样式,包括重叠式窗口,但不包括可调边框和最大化按钮
0, 0, //初始位置,默认居中
1000, 1000, //初始大小,按照宏定义的值
NULL, //父窗口句柄,无父窗口为NULL
NULL, //菜单句柄,无菜单为NULL
hInstance, //程序实例句柄
NULL); //附加数据,无附加数据为NULL if (!hWnd)
{
MessageBox(NULL, "创建窗口失败!", "错误", MB_OK | MB_ICONERROR);
return -1;
} ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
MSG msg;
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}

Windows亚克力特效代码实现(Dev c++可以编译通过)的更多相关文章

  1. 安装windows服务批处理代码

    批处理是DOS时代比较常用的方法之一,目前来说也是一种高效的方法,复制代码到文本文件中,保存并修改文件扩展名为“*.bat”. 安装windows服务批处理代码如下: @echo off set fi ...

  2. jQuery旋转木马仿3D效果的图片切换特效代码

    用jQuery实现的一款仿3D效果的图片切换特效代码,类似旋转木马一样,幻灯图片以三维视觉上下滑动切换,效果很酷炫,兼容IE8.360.FireFox.Chrome.Safari.Opera.傲游.搜 ...

  3. 一款jQuery仿海尔官网全屏焦点图特效代码

    一款jQuery仿海尔官网全屏焦点图特效代码,带有左右箭头的jQuery焦点图切换特效. 当焦点图切换时,下方的三块小图也相对应的进行切换.并且特效还兼容头疼的IE6.赶快去和谐了它吧! 适用浏览器: ...

  4. Jquery实现手机上下滑屏滑动的特效代码

    要引入两个jquery插件 可以去网上下载 <script src="jquery-1.11.1.min.js"></script><script s ...

  5. 18款js和jquery文字特效代码分享

    18款js和jquery文字特效代码分享 jQCloud标签云插件_热门城市文字标签云代码 js 3d标签云特效关键词文字球状标签云代码 原生JS鼠标悬停文字球状放大显示效果代码 原生js文字动画圆形 ...

  6. 原生js实现tab选项卡里内嵌图片滚动特效代码

    <!DOCTYPE HTML><html lang="en-US"><head><meta charset="UTF-8&quo ...

  7. HTML特效代码大全

    1)贴图:<img src="图片地址">2)加入连接:<a href="所要连接的相关地址">写上你想写的字</a>1)贴 ...

  8. 20款jquery下拉导航菜单特效代码分享

    20款jquery下拉导航菜单特效代码分享 jquery仿京东商城左侧分类导航下拉菜单代码 jQuery企业网站下拉导航菜单代码 jQuery css3黑色的多级导航菜单下拉列表代码 jquery响应 ...

  9. jquery实现多条件筛选特效代码分享

    本文实例讲述了jquery实现多条件筛选特效.分享给大家供大家参考.具体如下:jquery实现的多条件搜索表单带日期选择表格表单效果源码,是一段实现了多个条件筛选搜索的特效代码,多条件拥有时间.地点. ...

  10. [转帖]Windows DHCPServer远程代码执行漏洞分析(CVE-2019-0626)

    Windows DHCPServer远程代码执行漏洞分析(CVE-2019-0626) ADLab2019-03-15共23605人围观 ,发现 4 个不明物体安全报告漏洞 https://www.f ...

随机推荐

  1. Microsoft SQL Server,错误: 3023

    对数据库的备份.文件操作(如 ALTER DATABASE ADD FILE)以及加密更改必须序列化.请在当前备份或文件操作完成后重新发出该语句.ALTER DATABASE 语句失败. (Micro ...

  2. 使用ActiveMQ中遇到的端口占用问题

    原Linux虚拟机中安装了ActiveMQ,EMQX.后期使用中主要使用EMQX来实现消息服务,停止了ActiveMQ.但是虚拟机挂起之后,长时间未再使用.近期由于有使用ActiveMQ的需要,而临时 ...

  3. Solon2 分布式事件总线的技术价值?

    分布式事件总线在分布式开发(或微服务开发)时,是极为重要的架构手段.它可以分解响应时长,可以削峰,可以做最终一致性的分布式事务,可以做业务水平扩展. 1.分解响应时长 比如我们的一个接口处理分为四段代 ...

  4. RPA的数字化标签

    随着中国经济的飞速发展,"人口红利"也正在不断消失,在过去几十年中,我们已经看到了各种智能化.自动化技术的进步对各行各业产生的巨大影响.但在现代金融行业中,仍然有许多重复.简单.繁 ...

  5. Mathematica制作和使用程序包

    步骤 这里拿你制作并且使用一个程序包lost为例子 新建一个空白.wl文档,输入代码如下 BeginPackage[ "MyPkg`"] MainFunction::usage = ...

  6. smart rtmpd web 接口说明

    ​ smart rtmpd web 接口分为下面几类 分类名称 功能描述 live 这个就是平常我们的直播播放接口 rec   这个就是平常我们的录像回放接口 vod   这个就是我们点播接口,支持字 ...

  7. Netty 心跳检测与重连机制

    更多内容,前往个人博客 所谓心跳,即在 TCP 长连接中, 客户端和服务器之间定期发送的一种特殊的数据包,通知对方自己还在线,以确保 TCP 连接的有效性.心跳包还有另一个作用,经常被忽略,即:一个连 ...

  8. 淘宝商品页面的爬取.py(亲测有效)

    import requests def getHTMLText(url): try: r = requests.get(url,timeout=30) r.raise_for_status() #如果 ...

  9. 关于在vue3中使用vuex与在vue2中使用vuex的区别

    首先vue2中vuex版本是4.x以下,vue3中使用vuex需要保证vuex版本在4.x及以上. 以下说一说怎么在vue3中使用vuex,与vue2大同小异 首先在views新建一个store文件夹 ...

  10. Vue-router与hash与history区别

    vue-router 基本使用   路由,其实就是指向的意思,当我点击页面上的home按钮时,页面中就要显示home的内容,如果点击页面上的about 按钮,页面中就要显示about 的内容.Home ...