//贝神杰作,仅作记录,以后学习

#define GDIPVER 0x0110 //定义高版本的GDI+(1.1)

#include

#include

#include

#include

#include

#pragma comment(lib,"GdiPlus.lib")

using namespace Gdiplus;

#include

#pragma comment(lib,"dwmapi.lib")

//Aero效果是否已启用

BOOL IsCompositionEnabled()

{

BOOL bEnabled,bResult;

bResult = (SUCCEEDED(DwmIsCompositionEnabled(&bEnabled)) && bEnabled);

return bResult;

}

//对已分层的窗口启动玻璃效果

HRESULT EnableBlurBehindWindow(HWND hWnd, //窗口句柄

BOOL bEnable = TRUE, //启用或禁用

HRGN hRgn = 0, //模糊窗体中某个区域

BOOL bTransitionOnMaximized = FALSE) //最大化时是否启用

{

DWM_BLURBEHIND blurBehind = { 0 };

blurBehind.dwFlags = DWM_BB_ENABLE | DWM_BB_TRANSITIONONMAXIMIZED;

blurBehind.fEnable = bEnable;

blurBehind.fTransitionOnMaximized = bTransitionOnMaximized;

if (bEnable && hRgn != NULL)

{

blurBehind.dwFlags |= DWM_BB_BLURREGION;

blurBehind.hRgnBlur = hRgn;

}

return DwmEnableBlurBehindWindow(hWnd,&blurBehind);

}

LRESULT WINAPI WinProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)

{

switch(msg)

{

case WM_CREATE:

{

HDC hDC = GetDC(hWnd);

//获得窗口宽高

RECT rcClient;

GetClientRect(hWnd,&rcClient);

UINT uWidth,uHeight;

uWidth = rcClient.right - rcClient.left;

uHeight = rcClient.bottom - rcClient.top;

//创建一个和窗口宽高相同的内存DC并创建相应位图

HDC hMemDC = CreateCompatibleDC(hDC);

HBITMAP hBitmap = CreateCompatibleBitmap(hDC,uWidth,uHeight);

HBITMAP hBitmapOld = (HBITMAP)SelectObject(hMemDC,hBitmap);

SetBkMode(hMemDC, TRANSPARENT);

//对该内存DC进绘制Alpha图像

{

Gdiplus::Graphics grap(hMemDC);

Gdiplus::LinearGradientBrush lgb(

Point(0,0),

Point(0,uHeight),

Color(0,255,0,255),

Color(255,0,255,0));

grap.FillRectangle(&lgb,0,0,uWidth,uHeight);

SolidBrush b(Color(0xFF,0x00,0x00,0xFF)); //构造纯色画刷

FontFamily ff(L"Times New Roman"); //构造字体族

Font f( //构造字体

&ff, //字体族

24, //字体尺寸

FontStyleRegular, //字体样式

UnitPixel); //大小单元(像素)

PointF p(10.0F,20.0F); //构造精度点

grap.DrawString( //绘制字符串

L"Hello World!", //字符串

-1, //字符串长度(-1为以Null为结束符)

&f, //字体

p, //位置

&b); //颜色

}

{

LPCTSTR lpstrOut = _T("Hello World!!!");

RECT rc = { 100,100,300,120 };

SetTextColor( hMemDC, RGB(0xFF,0x00,0x00) | 0xFE000000 );

DrawText( hMemDC, lpstrOut, _tcslen(lpstrOut), &rc, DT_CENTER | DT_SINGLELINE | DT_VCENTER );

}

//设置透明效果

SIZE size = {uWidth,uHeight};

POINT point = {0,0};

BLENDFUNCTION BlendFunc;

BlendFunc.BlendOp = AC_SRC_OVER;

BlendFunc.BlendFlags = 0;

BlendFunc.SourceConstantAlpha = 0xFF;

BlendFunc.AlphaFormat = AC_SRC_ALPHA;

UpdateLayeredWindow(

hWnd,

NULL,

NULL,

&size,

hMemDC,

&point,

RGB(0,0,0),

&BlendFunc,

ULW_ALPHA);

if(IsCompositionEnabled() == TRUE)

{

EnableBlurBehindWindow(hWnd,TRUE);

}

//释放资源

SelectObject(hMemDC,hBitmapOld);

DeleteDC(hMemDC);

ReleaseDC(hWnd,hDC);

}

break;

case WM_PAINT:

{

PAINTSTRUCT PaintStruct;

HDC hDC = BeginPaint(hWnd,&PaintStruct);

//在此处添加重绘代码

EndPaint(hWnd,&PaintStruct);

}

break;

case WM_LBUTTONDOWN:

{

PostMessage( hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0 );

}

break;

case WM_DWMCOMPOSITIONCHANGED:

EnableBlurBehindWindow(hWnd,IsCompositionEnabled());

break;

case WM_DESTROY:

PostQuitMessage(0);

break;

}

return DefWindowProc(hWnd, msg, wParam, lParam);

}

INT WINAPI _tWinMain(HINSTANCE hInst, HINSTANCE, LPTSTR, INT)

{

//初使化GDI+ ----------------------------------------

ULONG_PTR GdiplusToken;

GdiplusStartupInput GdiplusStartupInput;

Status sResult = GdiplusStartup(&GdiplusToken, &GdiplusStartupInput, NULL);

if(sResult != Ok)return 0;

WNDCLASSEX WndClassEx =

{

sizeof(WNDCLASSEX), //窗口类大小

CS_HREDRAW | CS_VREDRAW, //水平和垂直重绘

WinProc, //窗口过程

0L, //窗口类扩展

0L, //窗口扩展

GetModuleHandle(NULL), //实例句柄

LoadIcon(NULL,IDI_APPLICATION), //默认的窗口大图标

LoadCursor(NULL,IDC_ARROW), //默认的窗口光标

(HBRUSH)GetStockObject(WHITE_BRUSH),//默认的窗口背景画刷

NULL, //默认的窗口菜单名称

_T("SimpleWindowClass"), //窗口类名

LoadIcon(NULL,IDI_APPLICATION) //默认的窗口小图像

};

RegisterClassEx(&WndClassEx);

HWND hWnd = CreateWindowEx(

WS_EX_LAYERED,

_T("SimpleWindowClass"), //使用的窗口类名

_T("Simple Window"), //窗口标题

WS_OVERLAPPEDWINDOW, //窗口样式

CW_USEDEFAULT, //默认的X坐标

CW_USEDEFAULT, //默认的Y坐标

CW_USEDEFAULT, //默认的宽度

CW_USEDEFAULT, //默认的高度

GetDesktopWindow(), //父窗口句柄 HWND_MESSAGE为隐藏窗口

NULL, //菜单句柄

WndClassEx.hInstance, //主模块句柄

NULL); //参数.

ShowWindow(hWnd, SW_SHOWDEFAULT);

UpdateWindow(hWnd);

MSG Msg;

do

{

GetMessage(&Msg, NULL, 0U, 0U);

TranslateMessage(&Msg);

DispatchMessage(&Msg);

}while(Msg.message != WM_QUIT);

UnregisterClass(

_T("SimpleWindowClass"),

WndClassEx.hInstance);

//关闭GDI+ ----------------------------------------

GdiplusShutdown(GdiplusToken);

return 0;

}

实现效果:

php 毛玻璃,毛玻璃 - 晚晴小筑 - OSCHINA - 中文开源技术交流社区相关推荐

  1. java教程菜鸟要飞_php7新特性 - 菜鸟要飞啊的IT小窝 - OSCHINA - 中文开源技术交流社区...

    虽然PHP已经出来很久了,连PHP8都出来了,但还是想写一下,记录一下PHP7,目前就想到这么多 常用新特性 1.?? 和 ?: 主要区别:??判断前者是否存在,?:判断前者是否为真 $a = 'aa ...

  2. 去静态化 php,PHP页面静态化 - 菜鸟要飞啊的IT小窝 - OSCHINA - 中文开源技术交流社区...

    静态网页是服务器上面真实存在的页面,它不需要编译,用户就可以直接访问这样的网页,后缀一般为.html或者是.htm.如果我们把这个网页上传到我们的服务器或者是空间,那么它就可以通过直接访问我们的域名去 ...

  3. php aes加密中文,PHP AES加密 - 菜鸟要飞啊的IT小窝 - OSCHINA - 中文开源技术交流社区...

    1.aes加密类 namespace app\common; //也可以直接用define定义常量 //define('KEY','12345'); //define('IV','12345'); / ...

  4. 每天学习java一小时_java再学感受 - 编程一小时的个人空间 - OSCHINA - 中文开源技术交流社区...

    首先的是,我买了一本新的有关于java的书,刚开始看,其实在此之前我已经学了一本java语法的书本,现在我买的这本书是我用来提升自己的java认知水平的,首先是对这本书的第一印象吧,里面的内容比较详细 ...

  5. 卡券php小程序,微信小程序领取卡券 - osc_88a08cel的个人空间 - OSCHINA - 中文开源技术交流社区...

    微信小程序领取卡券 标签(空格分隔): php 开发前需要准备的工作 1 小程序和公众号要有绑定 2 小程序和该公众号要绑定到同一个开发平台下 [https://open.weixin.qq.com/ ...

  6. linux文字命令窗口怎样截图,命令行中截图的小工具 - Linux就该这么学的个人空间 - OSCHINA - 中文开源技术交流社区...

    Linux 桌面上有许多用于截屏的优秀工具,比如 Ksnapshot[1] 和 Shutter[2] .甚至 GNOME 桌面自带的简易截屏工具也能够很好的工作.但是,如果你很少截屏,或者你使用的 L ...

  7. php+fpm+加大request,php-fpm配置 - 小良下山化了个缘的个人空间 - OSCHINA - 中文开源技术交流社区...

    最近项目发现服务器CPU在访问量大的时候飙升到98%,后台查看进程主要是PHP-fpm消耗内存 初学相关资料修改php-fpm配置 php-fpm.conf有两个重要的参数: pm.max_child ...

  8. java小兔跳铃铛,Java小知识 - 顾小兔2018的个人空间 - OSCHINA - 中文开源技术交流社区...

    Java小知识 [TOC] (1)三种读取文件方法 URL url = this.getClass ().getResource ("/a.txt"); Resources.asC ...

  9. 开源html5小游戏6,html5简易小游戏 - strip_liu的个人空间 - OSCHINA - 中文开源技术交流社区...

    有点啰嗦,将就的看看吧 Title *{margin: 0;padding: 0} body{background: black} #div1{background: white;width: 600 ...

最新文章

  1. GitHub无法显示图片问题解决
  2. 90 后利用平台漏洞薅羊毛,获利 45 万被抓捕!网友们却争论不休……
  3. html标题怎么分开,html – 如何使用angularjs将标签标题与其主体分开?
  4. css html基础书,htmlcss基础知识汇总,新人必看!
  5. python判断素数程序_Python程序检查素数
  6. 数据结构拾遗(1) --红黑树的设计与实现(上)
  7. 力扣—— 295. 数据流的中位数(困难)
  8. mysql 授权 navicat的登录数据库
  9. 选项卡jacascript
  10. 编程 ul 不能一行显示 跳到下行_史上最全的数控G代码编程详解
  11. Luogu4781 【模板】拉格朗日插值
  12. 计算机电影院管理系统开题报告,开题报告电影院网上订票系统.doc
  13. Spark学习笔记(一)
  14. Unity3dC#分布式游戏服务器ET框架介绍-组件式设计(转)
  15. python彩色蟒蛇绘制代码_Python中用绘图库绘制一条蟒蛇
  16. 第三方开发者服务平台汇总
  17. php获取蓝凑云文件列表,蓝奏云网盘登录获取文件例程
  18. 遗传算法中的变异和交叉
  19. 4412 构造数组(区间合并)
  20. 14.4 设计新闻发布系统

热门文章

  1. 字软元件和位软元件的区别
  2. 人机耦合,让AI转人工更有价值
  3. 阿里云解决方案怎么写?阿里云服务器等产品官方解决方案撰写思路
  4. [FJOI 2016]bzoj 4408 神秘数 - 线段树
  5. 树莓派3B+ 编译Qt源码
  6. 蓝牙相关学习:4.1.BLE空口包结构
  7. Programming Differential Privacy第三章
  8. 【虚幻引擎】UE4/UE5 后期处理盒子(PostProcessVolume)
  9. 音视频传输-之RTP/RTCP协议
  10. windows 重新启动 postgresq