窗口淡入淡出效果的实现

1. 简介

函数: SetLayeredWindowAttributes 

Header Declared in Winuser.h, include Windows.h
Import library User32.lib
Minimum operating systems Windows 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值,就可以实现窗口的淡入淡出效果

你可能感兴趣的:(软件界面)