自从Windows Vista系统引入窗口管理器(WDM)的概念后,Aero效果几乎成了Windows界面的灵魂。对于程序来说如何利用好这个天然的美化特效呢?

微软提供一套API用于窗口管理相关的开发,均以Dwm开头,下面分别介绍一下:

1、判断是否开启Aero特效
HRESULT WINAPI DwmIsCompositionEnabled(
  _Out_  BOOL *pfEnabled
);

使用例子:

BOOL IsCompositionEnabled()
{HMODULE hMod = ::LoadLibrary(L"dwmapi.dll");BOOL bRet = FALSE;if (NULL != library){if (NULL != ::GetProcAddress(hMod, "DwmIsCompositionEnabled")){BOOL bEnabled = FALSE;bRet = SUCCEEDED(::DwmIsCompositionEnabled(&bEnabled)) && bEnabled;}VERIFY(::FreeLibrary(hMod));}return bRet;
}

2、启用Aero特效:
HRESULT WINAPI DwmEnableComposition(
  UINT uCompositionAction
);

使用例子:

HRESULT hr = S_OK;
// Disable DWM Composition
hr = DwmEnableComposition(DWM_EC_DISABLECOMPOSITION);
if (SUCCEEDED(hr))
{// ...
}

3、启用合成特效:
HRESULT WINAPI DwmEnableBlurBehindWindow(
  HWND hWnd,
  _In_  const DWM_BLURBEHIND *pBlurBehind
);

typedef struct _DWM_BLURBEHIND {
  DWORD dwFlags; // 标识DWM_BB_ENABLE|DWM_BB_BLURREGION
  BOOL  fEnable; // 是否启用
  HRGN  hRgnBlur; // 合成RGN区域
  BOOL  fTransitionOnMaximized;
} DWM_BLURBEHIND, *PDWM_BLURBEHIND;

使用例子:

HRESULT EnableBlurBehind(HWND hwnd)
{HRESULT hr = S_OK;// Create and populate the Blur Behind structureDWM_BLURBEHIND bb = {0};// Enable Blur Behind and apply to the entire client areabb.dwFlags = DWM_BB_ENABLE;bb.fEnable = true;bb.hRgnBlur = NULL;// Apply Blur Behindhr = DwmEnableBlurBehindWindow(hwnd, &bb);if (SUCCEEDED(hr)){// ...}return hr;
}

附录:启用Aero特效以后,窗口上绘制的文字会看不清,需要用下面的函数来替换DrawText和TextOut函数

void DrawAeroText(HDC hDC, LPCTSTR pstrText, int nLen, RECT rcText, DWORD dwTextFlags, int iGlowSize)
{//获取主题句柄  HTHEME hThm = OpenThemeData(GetDesktopWindow(), L"TextStyle");  DTTOPTS dttopts = {0};  dttopts.dwSize = sizeof(DTTOPTS);  dttopts.dwFlags = DTT_GLOWSIZE | DTT_COMPOSITED;  dttopts.iGlowSize = iGlowSize;  //发光的范围大小 //绘制文本  HRESULT hr = DrawThemeTextEx(hThm, hDC, TEXT_LABEL, 0, pstrText, -1, dwTextFlags , &rcText, &dttopts); if(FAILED(hr)) return;CloseThemeData(hThm);
}

By Troy

联系我:QQ(656067418)

如何利用Win7Aero特效来美化你的程序窗口相关推荐

  1. python做小程序-【实战案例】利用Python做出趣味版防沉迷小程序

    今天带领大家利用Python做出趣味版防沉迷小程序 查询电脑的所有进程 用Python循环检测电脑软件的运行情况,当发现游戏软件时弹出警告窗口,并截图保存.学会这项技能,就再也不怕孩子偷偷打游戏了.下 ...

  2. 利用freopen()函数和fc命令简化程序调试

    大家在参加ACM比赛或者参加c/c++实验技能竞赛的时候,如果遇到大量的输入和大量的输出时,调试起来很不方便.一来如果结果不正确的话,需要重复输入大量数据:二来如果大量输出的话,得仔细检查输出结果与正 ...

  3. 【java】 linux下利用nohup后台运行jar文件包程序

    Linux 运行jar包命令如下: 方式一: java -jar XXX.jar 特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出 那如何让窗口不锁定? 方式二 ...

  4. nodejs android 推送,利用Nodejs怎么实现一个微信小程序消息推送功能

    利用Nodejs怎么实现一个微信小程序消息推送功能 发布时间:2021-01-20 13:55:29 来源:亿速云 阅读:92 作者:Leah 今天就跟大家聊聊有关利用Nodejs怎么实现一个微信小程 ...

  5. matlab是那个国家,这是一个老外写的利用曲率来识别硬币的MATLAB程序。作者所在国家的硬币偏黄色,拍摄的时候反光比较少...

    这是一个老外写的利用曲率来识别硬币的MATLAB程序.作者所在国家的硬币偏黄色,拍摄的时候反光比较少 2016-08-22 0 0 0 暂无评分 其他 1 积分下载 如何获取积分? 这是一个老外写的利 ...

  6. 微信小程序本地存储存储_如何利用本地存储构建快速的应用程序

    微信小程序本地存储存储 by Nikita Kozlov 由Nikita Kozlov 如何利用本地存储构建快速的应用程序 (How to leverage Local Storage to buil ...

  7. python如何并发运行2个软件_如何利用并发性加速你的python程序(二):I/O 绑定程序加速...

    原标题:如何利用并发性加速你的python程序(二):I/O 绑定程序加速 雷锋网 AI 科技评论按,本文是工程师 Jim Anderson 分享的关于「通过并发性加快 python 程序的速度」的文 ...

  8. 使用Flash彻底美化你的程序

    曾经在VCKbase(VC知识库)网站看到过一篇关于Flash的文章,叫做<在VC中使用 Flash 美化你的程序>,文章中介绍的是使用Flash控件在对话框程序中播放Flash文件.由于 ...

  9. 利用VB.NET绘制简易表白小程序

    完整代码位于文末 上一篇:利用Python绘制简易爱心表白小程序 趁现在有点闲情还是来整点活 效果 过程 懒,占坑,以后再写 结局回收 没试,不知道,估计容易被打 完整代码 https://downl ...

最新文章

  1. CNCC技术论坛丨联邦学习冲刺人工智能“最后一公里”!
  2. CSS那些事笔记(一入门)
  3. 华为12月份鸿蒙适配mate40,华为:Mate40系列在12月可优先升级鸿蒙系统
  4. 液晶弹性自由能计算_自由能方法应用(一)开放计算平台BRIDGE的介绍及使用案例...
  5. 资源放送丨《大规模 SQL 审核设计与实践》PPT视频
  6. 盘点2017年热度很高的编程语言
  7. 产品需求分析工具和方法
  8. MySQL之数据库编程(了解语言结构)
  9. 反射机制,类的加载机制,和注解的配置参数的结合使用详解
  10. android studio配置夜神模拟器
  11. 无卷积!金字塔视觉Transformer(PVT):用于密集预测的多功能backbone
  12. 解决或者设置网页变灰-CSS-filter属性-哀悼
  13. 手动清除jwgkvsq.vmx病毒
  14. HR赫莲娜携张雨绮、胡杏儿、杨丞琳等先锋女性诠释改变
  15. 虚拟带库(VTL)备份恢复解决方案
  16. dedecms采集基础篇
  17. c语言结构体编辑学生成绩管理,【C语言】结构体的应用以及学生成绩管理系统的设计...
  18. EJS模板在express中的使用攻略及应用实例(建议收藏)
  19. React-Native集成极光推送(Android和IOS)
  20. 怎样写开题报告的PPT讲稿

热门文章

  1. 阿里云学生机搭建spark、hadoop集群(踩坑之路)
  2. Android开发规范文档
  3. 量子力学奇妙之旅-算符/薛定谔方程/概率流密度
  4. 小甲鱼第一课(分支、字符串)
  5. Random随机生成几位数字和UUID随机生成几位字母加数字组合
  6. seo网站优化之如何优化网站导航系统
  7. [转] ChatGPT热引发年薪千万高管辞职潮
  8. 如何登录Google美国服务器
  9. countupjs,一个有趣的数字翻滚动画
  10. 什么是IaaS,PaaS,SaaS?