如何利用Win7Aero特效来美化你的程序窗口
自从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特效来美化你的程序窗口相关推荐
- python做小程序-【实战案例】利用Python做出趣味版防沉迷小程序
今天带领大家利用Python做出趣味版防沉迷小程序 查询电脑的所有进程 用Python循环检测电脑软件的运行情况,当发现游戏软件时弹出警告窗口,并截图保存.学会这项技能,就再也不怕孩子偷偷打游戏了.下 ...
- 利用freopen()函数和fc命令简化程序调试
大家在参加ACM比赛或者参加c/c++实验技能竞赛的时候,如果遇到大量的输入和大量的输出时,调试起来很不方便.一来如果结果不正确的话,需要重复输入大量数据:二来如果大量输出的话,得仔细检查输出结果与正 ...
- 【java】 linux下利用nohup后台运行jar文件包程序
Linux 运行jar包命令如下: 方式一: java -jar XXX.jar 特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出 那如何让窗口不锁定? 方式二 ...
- nodejs android 推送,利用Nodejs怎么实现一个微信小程序消息推送功能
利用Nodejs怎么实现一个微信小程序消息推送功能 发布时间:2021-01-20 13:55:29 来源:亿速云 阅读:92 作者:Leah 今天就跟大家聊聊有关利用Nodejs怎么实现一个微信小程 ...
- matlab是那个国家,这是一个老外写的利用曲率来识别硬币的MATLAB程序。作者所在国家的硬币偏黄色,拍摄的时候反光比较少...
这是一个老外写的利用曲率来识别硬币的MATLAB程序.作者所在国家的硬币偏黄色,拍摄的时候反光比较少 2016-08-22 0 0 0 暂无评分 其他 1 积分下载 如何获取积分? 这是一个老外写的利 ...
- 微信小程序本地存储存储_如何利用本地存储构建快速的应用程序
微信小程序本地存储存储 by Nikita Kozlov 由Nikita Kozlov 如何利用本地存储构建快速的应用程序 (How to leverage Local Storage to buil ...
- python如何并发运行2个软件_如何利用并发性加速你的python程序(二):I/O 绑定程序加速...
原标题:如何利用并发性加速你的python程序(二):I/O 绑定程序加速 雷锋网 AI 科技评论按,本文是工程师 Jim Anderson 分享的关于「通过并发性加快 python 程序的速度」的文 ...
- 使用Flash彻底美化你的程序
曾经在VCKbase(VC知识库)网站看到过一篇关于Flash的文章,叫做<在VC中使用 Flash 美化你的程序>,文章中介绍的是使用Flash控件在对话框程序中播放Flash文件.由于 ...
- 利用VB.NET绘制简易表白小程序
完整代码位于文末 上一篇:利用Python绘制简易爱心表白小程序 趁现在有点闲情还是来整点活 效果 过程 懒,占坑,以后再写 结局回收 没试,不知道,估计容易被打 完整代码 https://downl ...
最新文章
- CNCC技术论坛丨联邦学习冲刺人工智能“最后一公里”!
- CSS那些事笔记(一入门)
- 华为12月份鸿蒙适配mate40,华为:Mate40系列在12月可优先升级鸿蒙系统
- 液晶弹性自由能计算_自由能方法应用(一)开放计算平台BRIDGE的介绍及使用案例...
- 资源放送丨《大规模 SQL 审核设计与实践》PPT视频
- 盘点2017年热度很高的编程语言
- 产品需求分析工具和方法
- MySQL之数据库编程(了解语言结构)
- 反射机制,类的加载机制,和注解的配置参数的结合使用详解
- android studio配置夜神模拟器
- 无卷积!金字塔视觉Transformer(PVT):用于密集预测的多功能backbone
- 解决或者设置网页变灰-CSS-filter属性-哀悼
- 手动清除jwgkvsq.vmx病毒
- HR赫莲娜携张雨绮、胡杏儿、杨丞琳等先锋女性诠释改变
- 虚拟带库(VTL)备份恢复解决方案
- dedecms采集基础篇
- c语言结构体编辑学生成绩管理,【C语言】结构体的应用以及学生成绩管理系统的设计...
- EJS模板在express中的使用攻略及应用实例(建议收藏)
- React-Native集成极光推送(Android和IOS)
- 怎样写开题报告的PPT讲稿