转载:使窗体拥有透明效果的API

[Win32 & GDI+Flat] 用分层窗口实现简单仿Aero透明效果 本博文由优快云博主zuishikonghuan所作,版权归zuishikonghuan所有,转载请注明出处: 首先说一下GDI+Flat:我有写过一个GDI+Flat的系列博客,一共有10篇,都是顺着的,这是第一篇:GdiplusFlat(1)GDI+平面API:用GDI的思想进行GDI+编程,有兴趣的可以看一看。因为本篇中的绘图函数都是用的GDI+Flat,因此我们需要自己声明函数,自己 阅读详情

http://www.vckbase.com/document/viewdoc/?id=333

使窗体拥有透明效果的API
作者:南海昭信king_koo

下载本文源代码

 一、背景
FlashGet的透明效果大家羡慕吧.传统的Windows应用程序想实现半透明效果,一般来说需要处理自己的窗口的WM_Paint消息窗口,很麻烦.现在好了,SetLayeredWindowAttributes是windows的新api,win2000以上才支持,它能使使窗体拥有透明效果.我在Google搜了下,介绍SetLayeredWindowAttributes的文章大多是delphi的和vb的.好不容易找到一篇vc的,依法炮制后,vc的IDE却说我SetLayeredWindowAttributes没有定义!后来想想应该是我的sdk没有升级.于是我在vc安装目录搜索"SetLayeredWindowAttributes"的"*.h"文件,果然没有.怎么办?升级sdk吧.我去微软的网站一看,新的sdk就核心sdk就有二百多m呢(解压后更大),可怜我的硬盘没有一个分区大于200m的了!怎么办,这么好玩的api给看不给用:( 失望之余,我忽然想到了未公开api的使用的方法.这是个系统支持,自己sdk却没有的api,就把他当做windows未公开api试试!


《图片不知持》

示例代码运行效果图

 二、简单介绍一下SetLayeredWindowAttributes:(详见msdn)

BOOL SetLayeredWindowAttributes(
HWND hwnd, // handle to the layered window
COLORREF crKey, // specifies the color key
BYTE bAlpha, // value for the blend function
DWORD dwFlags // action
);

<Requirements>
Windows NT/2000/XP: Included in Windows 2000 and later.
Windows 95/98/Me: Unsupported.
Header: Declared in Winuser.h; include Windows.h.
Library: Use User32.lib.

一些常量: 
WS_EX_LAYERED = 0x80000;
LWA_ALPHA = 0x2;
LWA_COLORKEY=0x1 
其中dwFlags有LWA_ALPHA和LWA_COLORKEY
LWA_ALPHA被设置的话,通过bAlpha决定透明度.
LWA_COLORKEY被设置的话,则指定被透明掉的颜色为crKey,其他颜色则正常显示.
注:要使使窗体拥有透明效果,首先要有WS_EX_LAYERED扩展属性(旧sdk也没有的).

 三、例子代码:
在OnInitDialog()加入:

//加入WS_EX_LAYERED扩展属性
SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,
GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000);
HINSTANCE hInst = LoadLibrary("User32.DLL"); 
if(hInst) 
{ 
typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD); 
MYFUNC fun = NULL;
//取得SetLayeredWindowAttributes函数指针 
fun=(MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes");
if(fun)fun(this->GetSafeHwnd(),0,128,2); 
FreeLibrary(hInst); 
}

唉!如果装了最新sdk就不用那么麻烦了! 
怎么样,效果不错吧!稍加修改还可以作出淡出淡入的效果. 注意第三个参数(128)不要取得太小了,为0的话完全透明,你就找不到窗体了! 
小小心得,一吐为快.希望对初学者有所帮助.如有不妥,欢迎指正.

Win32解决透明字体改变时重叠的问题,GetClientRect与GetWindowRect、ClientToScreen、ScreenToClient的使用 使用GetClientRect获取到的只是控件的尺寸 阅读详情

相关推荐

Win32实现位图的透明效果——AlphaBlend

通过Win32编程技术实现位图的透明功能 内含源代码和位图资源 主要用于我的博文的资源下载,博文地址: http://blog.youkuaiyun.com/crocodile__/article/details/10156817

使窗体拥有透明效果的API

一、背景FlashGet的透明效果大家羡慕吧.传统的Windows应用程序想实现半透明效果,一般来说需要处理自己的窗口的WM_Paint消息窗口,很麻烦.现在好了,SetLayeredWindowAttributes是windows的新api,win2000以上才支持,它能使使窗体拥有透明效果.我在Google搜了下,介绍SetLayeredWindowAttributes的文章大多是delphi

小发猫 2450

易语言 API设置窗口透明方法

本源码只适合易语言编程语言使用! 使用方法:窗口背景色不能使用默认色!要想实现控件也能有透明效果,那就得把控件的默认底色也修改与窗口设置的底色一至才会有效果!

windows api实现窗口透明整理

1. 实现窗口彻底透明 2.实现背景透明控件不透明一 3.实现背景透明控件不透明正式方案 4.动图显示异常分析 1. 实现窗口彻底透明 实现这种效果的方案网上介绍很多,基本原理都一样,在这里还是重复记录一次。 效果图: 这种透明效果整个窗口的所有内容全部透明,可以看到图中红色箭头所指,从这个窗口可以看到底层的source tree的按钮。 代码实现: ...

zhuiyuanqingya的博客 1万+

docker部署zabbix6.2.7+grafana

docker部署zabbix6.2.7+grafana。

qq_48391148的博客 3656

实战指南!基于STM32的智能环境监测系统(附完整代码+硬件设计+云端对接)

本文提供了一份基于STM32的智能环境监测系统完整实战指南。详细讲解了从硬件选型、电路设计、传感器驱动到数据采集、本地报警逻辑,以及通过ESP8266模块对接OneNET物联网平台实现数据上云的全过程。项目涵盖嵌入式开发与物联网应用核心技能,并提供了多种手机端数据展示方案,非常适合课程设计或毕业设计参考。

weixin_29193359的博客 355

QNX screen使用介绍 第五章

一、sw_vsync 命令 创建一个全屏的背景以及一个运动的bar,用于检测屏的显示状况以及帧率等 sw_vsync 参数配置: sw-vsync [-bg_rbga=background_color] [-display=display_id] [-double-buffer] [-format=pixel_format] [-frame-limit=frames] [-gr...

Suixing_yuan的专栏 7894

[数字电路]用与非门实现BCD译码器驱动数码管

Hello,大家好。这里是xdd_core,好久不见。今天来和大家聊聊大一数字电路课程的一个课设。# Key word:BCD Decoder,Proteus8.x,NAND Gate,Digital Circuit# 流程:Proteus8.x仿真电路并绘制PCB导出Gerber文件打样,最终实物验证。# 以下为我对这个课设的report(里面对整个设计做了详细介绍,并设计了完整的验证电路) 感谢观看,仅供参考,未经作者允许,禁止转载/抄袭,本文已上传至数据库,查重必挂QAQ BCD to 7-Segme

xddcore的博客 6012

[转载] 透明窗体的实现

本文转载自VCROAD,作者南海昭信. 一、背景 FlashGet的透明效果大家羡慕吧.传统的Windows应用程序想实现半透明效果,一般来说需要处理自己的窗口的WM_Paint消息窗口,很麻烦.现在好了,SetLayeredWindowAttributes是windows的新api,win2000以上才支持,它能使使窗体拥有透明效果.我在Google搜了下,介绍SetLayeredW

0011411的专栏 888

YOLOv8改进策略【注意力机制篇】| CVPRW-2024 分层互补注意力混合层 H-RAMi 针对低质量图像的特征提取模块

许多证据表明层次化网络对图像恢复(IR)任务通常不太有效,因为IR的目标是逐个预测像素值(密集预测),而缩小特征图会丢失重要的像素级信息。然而,层次化结构有降低时间复杂度以及学习语义级和像素级特征表示的优点。为了弥补缺点并利用优点,设计了H - RAMi层。

Limiiiing的博客 378

通过采用下面方法检查内容,还是系统无法更新下载,但是错误代码变成了——下载错误 - 0x80004002-到底如何解决?必须重装系统吗?-这个到底是系统问题,还是硬件问题?

‌。

qq_15963745的博客 337

WinAPI透明窗体SetLayeredWindowAttributes(转载)

【代码】WinAPI透明窗体SetLayeredWindowAttributes(转载)

m0_37346206的博客 1146

FGC_grasp复现

FGC_GraspNet复现

qq_39568387的博客 385

vb将窗体中的控件或某种颜色透明

Option Explicit ' ******************** 窗体透明 ******************** '***Module.bas '**** Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nI...

dea23098的博客 597

Apache Jena SPARQL 查询完全指南:入门与实战案例

本文介绍了使用Apache Jena执行SPARQL查询的完整指南。SPARQL是用于RDF数据的标准查询语言,在知识图谱领域地位相当于SQL。教程从基础开始,涵盖创建模型、加载数据以及执行各种查询类型。特别强调了WHERE子句中的图模式匹配机制,通过Mermaid图直观展示数据图与查询图的匹配过程。文章还对比了变量命名规范(?和$前缀),解释了SPARQL引擎如何通过变量绑定实现数据检索。通过Hello World示例演示了完整查询流程,为开发者提供了SPARQL的实用入门指导。

Lincoln 的专栏 1374

ChatGPT充值,银行卡被拒绝,图文教程

ChatGPT充值,银行卡被拒绝

weixin_46713695的博客 2万+

Winform使用Win7的透明效果

某天闲的蛋疼的时候翻《WPF揭秘》,看到里面提到整个Windows背景都是玻璃效果的窗体。 《WPF揭秘》提供了一段代码,通过一个类GlassHelper封装了PInvoke过来的系统API。想看那段代码的猛击这里 既然是系统API,当然就不只是WPF专用了。拆开了GlassHelper,主要内容就是两个PInvoke签名:DwmExtendFrameIntoClientArea控制窗...

aijitu8673的博客 205

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【C#】[窗体]字型窗体

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; na...

weixin_30455661的博客 172

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

WM 实现透明效果

一、使用AlphaBlend API 。这个可以看黎老师的文章。 见原文       下面转载一下: .NET Framework的WinForm程序支持支持调节控件的透明度和GDI+,用它可以实现例如淡入淡出这种很酷的界面效果。而.NET Compact Framework的窗体和控件不支持透明和GDI+,因此常常利用图片来完成一些美观的程序界面效果,这样会使得程序包附带了很多用于交替的

伟大的饺子 1244

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

【Demo 0036】Window层窗体

层窗体 – 这个概念和photoshop的图层概念是一样的, 每一层上可以用许多UI或控件, 层与层之间可以实现透明以及部分切除. 一、代码演示 SetWindowLongPtr(hWnd, GWL_EXSTYLE, WS_EX_LAYERED | GetWindowLongPtr(hWnd, GWL_EXSTYLE)); SetLayeredWindowAttrib...

weixin_30299539的博客 87

关于用VB做更漂亮的窗体的思考

首先申明:以下纯属个人观点! 近来VB版中有一部分人问关于界面的美化问题.其实作为一个菜鸟.我也无法提供很专业的代码给大家.想必大家对如下代码应该很熟悉吧! 以下为引用的内容: Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLo...

weixin_30566149的博客 115
上一篇: 第一章 为什么要“千头万绪”
下一篇: CWnd::OnNcHitTest
taotune
博客等级 码龄14年 7粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值