窗口淡入淡出效果的实现

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值,就可以实现窗口的淡入淡出效果

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值