窗口淡入淡出效果的实现

news/2025/2/24 3:34:22

1. 简介

函数: SetLayeredWindowAttributes 

HeaderDeclared in Winuser.h, include Windows.h
Import libraryUser32.lib
Minimum operating systemsWindows 2000

所以在98系统下,并不支持

2. 属性

现在我们直接通过DLL来调用,所以未包含头文件,可以直接使用值来操作.

以下是头文件中的关键属性在winuser.h中的定义

#define WS_EX_LAYERED          0x00080000
#define LWA_COLORKEY            0x00000001
#define LWA_ALPHA                     0x00000002

要操作函数,必须要加上加入WS_EX_LAYERED扩展属性

LONG lStyleEx =GetWindowLong(m_hWnd,GWL_EXSTYLE);

 SetWindowLong(m_hWnd,GWL_EXSTYLE,lStyleEx | 0x00080000);

然后函数使用LWA_ALPHA属性

3. 调用

  //nAlpha为通明度,0~255之间的任意数值,0表示完全透明,255不透明

  int nAlpha  = 200;

   //调用User32.DLL中的函数
   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(m_hWnd,0,nAlpha  ,2);
     FreeLibrary(hInst);
   }

弄个定时器,改变nAlpha值,就可以实现窗口的淡入淡出效果





http://www.niftyadmin.cn/n/3647485.html

相关文章

“金三银四”春招指南!靠着这份面试题跟答案,就是这么简单

前言 为什么要读Spring源码,有的人为了学习Spring中的先进思想,也有的人是为了更好的理解设计模式,当然也有很大一部分小伙伴是为了应付面试,Spring Bean的生命周期啦,Spring AOP的原理啦,Spring IoC的原理…

进程调试--数组溢出,影响其他变量

一直做的棋牌系统,调试是个问题,因为要启动的是另一个进程.所以一直多是以输出文件的方式来进行的.确实有些BUG输出文件的方式并不能解决和找到问题.我先来描述一下碰到的问题: 其中一个int m_nSize变量一般只有两个值(0或者1),在运行过程过突然变成-1,所以造成图片数组导入异…

【一步教学,一步到位】三分钟搞定分布式结构服务部署发布,实战案例

开头 消息队列 RocketMQ 是阿里巴巴集团基于高可用分布式集群技术,自主研发的云正式商用的专业消息中间件,既可为分布式应用系统提供异步解耦和削峰填谷的能力,同时也具备互联网应用所需的海量消息堆积、高吞吐、可靠重试等特性,…

tensorboard命令行使用方法

第一步:进入虚拟环境 conda activate 虚拟环境名称 第二步: tensorboard --logdir绝对地址 第三步:在浏览器输入提供的网址

RichEdit中插入GIF动画(使用QQ的ImageOle.dll)

最近做聊天记录,需要显示GIF动画.看了很多文章,基本多是用QQ的ImageOle.dll或者Gif89a.dll来实现.当然还有其他方法,包括Static控件中使用CPictureEx来实现GIF.ImageOle.dll使用了GdiPlus.dll,制作安装包时最好把这个dll也带上( XP系统自带)(本文的代码来自其他网友…

【Leetcode】48. Rotate Image

题目地址: https://leetcode.com/problems/rotate-image/ 给定一个方阵,返回将它顺时针旋转9090\degree90的方阵。可以先将其转置,然后再按照第二列做对称轴左右翻转即可。 public class Solution {public void rotate(int[][] matrix) {f…

快速从入门到精通!Java之内存泄漏调试学习与总结,最新整理

前言: 有人说世界上有三个伟大的发明:火,轮子,以及 Kafka。 发展到现在,Apache Kafka 无疑是很成功的,Confluent 公司曾表示世界五百强中有三分之一的企业在使用 Kafka。在流式计算中,Kafka 一…

GDI画图的几种方式(小游戏不闪烁)

1 画图方式:1.1 使用临时DC,先将要画的界面全部画到临时DC,到最后才全部帖回原DC,这样就不会出现闪烁.1.2 创建的GDI对象要删除,不然会造成泄露.将新对象选进DC,一般要保留旧的对象,然后用完新对象,把老对象选回DC.一般Create*** 函数多要记得Delete***GetDC …