1. 简介
函数: SetLayeredWindowAttributes
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值,就可以实现窗口的淡入淡出效果