Windows亚克力特效代码实现(Dev c++可以编译通过)

这篇具有很好参考价值的文章主要介绍了Windows亚克力特效代码实现(Dev c++可以编译通过)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

#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;
}

头文件下载链接,调用include"arcrylic.h"即可文章来源地址https://www.toymoban.com/news/detail-435238.html

到了这里,关于Windows亚克力特效代码实现(Dev c++可以编译通过)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python流星雨特效代码复制,python好看的流星雨代码

    大家好,小编为大家解答python流星雨特效代码需要什么模块的问题。很多人还不知道python流星雨特效代码微信,现在让我们一起来看看吧! hello,大家好,我是wangzirui32,今天我们来学习如何用Pygame制作一场漂亮的流星雨。 开始学习吧! 文章目录 前言 1. 素材图片 2. 项目结构

    2024年02月03日
    浏览(47)
  • 前端代码分享——星空背景特效(内含源码)

    打开网页效果最好哦 提供的JavaScript代码是一个名为\\\"WarpDrive\\\"的jQuery插件,它创建了一个星空动画,类似于科幻媒体(如《星际迷航》)中所看到的\\\"超光速\\\"效果。 提供的JavaScript代码是一个名为\\\"WarpDrive\\\"的jQuery插件,它创建了一个星空动画,类似于科幻媒体(如《星际迷航》)

    2024年02月14日
    浏览(46)
  • Python烟花代码,用Python制作一个烟花特效

    Python实现浪漫的烟花特效 现在很多地方都不能放烟花了,既然看不到, 那作为程序猿的我们还不能自己用代码做一个吗? 今天就带大家用代码做一个烟花特效吧。 pygame介绍 关于Pygame的基本信息,pygame是什么,谁会被Pygame吸引,并且在哪里找到它。 Pygame是被设计用来写游戏

    2024年02月08日
    浏览(46)
  • python炫酷特效代码简单,python制作的炫酷动画

    本篇文章给大家谈谈python炫酷特效代码简单,以及python好看的图案代码,希望对各位有所帮助,不要忘了收藏本站喔。 可以生成下面这种图 import random import turtle def random_color():     rgbl=[255,0,0]     random.shuffle(rgbl)     return tuple(rgbl) def koch(size,n):     if n==0:         (size)  

    2024年02月07日
    浏览(47)
  • 28个炫酷的CSS特效动画示例(含源代码)

    CSS是网页的三驾马车之一,是对页面布局的总管家,2024年了,这里列出28个超级炫酷的纯CSS动画示例,让您的网站更加炫目多彩。 效果图: 点击查看示例源代码 效果图: 点击查看示例源代码 效果图: 点击查看示例源代码 效果图: 点击查看示例源代码 效果图: 点击查看示

    2024年01月16日
    浏览(47)
  • 28个炫酷的纯CSS特效动画示例(含源代码)

    CSS是网页的三驾马车之一,是对页面布局的总管家,2024年了,这里列出28个超级炫酷的纯CSS动画示例,让您的网站更加炫目多彩。 效果图: 点击查看示例源代码 效果图: 点击查看示例源代码 效果图: 点击查看示例源代码 效果图: 点击查看示例源代码 效果图: 点击查看示

    2024年01月20日
    浏览(51)
  • html制作网页案例代码----(故宫博物馆9页)特效很多

    ⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIV+CSS 布局制作,HTML+CSS网页设计期末课程大作业 茶文化网站 | 中华传统文化题材 | 京剧文化水墨风书画 | 中国民间年画文化艺术网站 | 等网站的设计与制作 | HTML期末大学生网页设计作业,Web大学生网页 HTML:结构

    2024年02月05日
    浏览(47)
  • 程序员教你用代码制作3d爱心跳动特效,正好拿去送给女神给她个惊喜

      🐱‍🏍 【晚安独角兽】:hello你好我是独角兽,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行!  🎉   博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、数据库、项目案例等相关知识点总结,感谢你

    2023年04月22日
    浏览(47)
  • DaVinci Resolve Studio 18.6.2 (macOS, Windows) - 剪辑、调色、特效和音频后期制作

    DaVinci Resolve Studio 18.6.2 (macOS, Windows) - 剪辑、调色、特效和音频后期制作 Blackmagic Design DaVinci Resolve Studio 请访问原文链接:https://sysin.org/blog/davinci-resolve-18/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 免费! 专业的剪辑、调色、特效和音频后期制作 DaVinci

    2024年02月01日
    浏览(32)
  • DaVinci Resolve Studio 18.6.5 (macOS, Windows) - 剪辑、调色、特效和音频后期制作

    DaVinci Resolve Studio 18.6.5 (macOS, Windows) - 剪辑、调色、特效和音频后期制作 Blackmagic Design DaVinci Resolve Studio 请访问原文链接:DaVinci Resolve Studio 18.6.5 (macOS, Windows) - 剪辑、调色、特效和音频后期制作,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 免费! 专业的剪

    2024年02月21日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包