`
阿尔萨斯
  • 浏览: 4170534 次
社区版块
存档分类
最新评论

窗口淡入淡出效果的实现

 
阅读更多
<iframe align="center" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog336280.html" frameborder="0" width="336" scrolling="no" height="280"></iframe>

1. 简介

函数: SetLayeredWindowAttributes

Header Import library Minimum operating systems
Declared in Winuser.h, include Windows.h
User32.lib
Windows2000

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




分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics