半透明窗口的实现
在窗口创建后,给窗口加入 WS_EX_LAYERED 扩展
#define WS_EX_LAYERED 0x80000
int ...Wnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CWnd::OnCreate(lpCreateStruct) == -1)
return -1;
////////////////////////////////////////////////////////////
//加入WS_EX_LAYERED扩展属性
//设置为透明窗口类型
SetWindowLong( this->GetSafeHwnd(), GWL_EXSTYLE ,
GetWindowLong( this->GetSafeHwnd() , GWL_EXSTYLE ) ^ 0x80000 );
HMODULE hUser32 = LoadLibrary("User32.DLL");
if( hUser32 )
{
typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD);
MYFUNC fun = NULL;
//取得SetLayeredWindowAttributes函数指针
fun=(MYFUNC)GetProcAddress( hUser32, "SetLayeredWindowAttributes" );
if( fun )
fun( this->GetSafeHwnd() , 0 , 100 , 2 );
FreeLibrary( hUser32 );
}
////////////////////////////////////////////////////////////
return 0;
}