VC下实现窗体透明效果(clarity for CDialog)
2008-02-17 17:46
381 查看
VC下实现窗体透明效果,我只测试了CStatic是不可以实现这个效果的,应该是只有CWnd子类才可以实现这个效果,如果想使用空间透明化,只能把他放窗体上了....
20%透明效果如下图:
具体代码实现:
//参数说明:透明度(范围是0-255)
void CSizeDlg::SetWindowAttributes(int Attributes)
{
//////////////////////////////////////////////////////////////////////////
//透明实现
SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,
GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000);
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(this->GetSafeHwnd(),0,Attributes,2);
FreeLibrary(hInst);
}
//////////////////////////////////////////////////////////////////////////
}
这个函数在Vista下,使用也可实现透明效果
20%透明效果如下图:
具体代码实现:
//参数说明:透明度(范围是0-255)
void CSizeDlg::SetWindowAttributes(int Attributes)
{
//////////////////////////////////////////////////////////////////////////
//透明实现
SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,
GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000);
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(this->GetSafeHwnd(),0,Attributes,2);
FreeLibrary(hInst);
}
//////////////////////////////////////////////////////////////////////////
}
这个函数在Vista下,使用也可实现透明效果
相关文章推荐
- VC下简易实现窗体的淡入淡出效果(fade in-out for CDialog)
- VC透明窗体的实现
- 窗体透明效果的实现 渐进式等SetLayeredWindowAttributes的用法
- VC++实现位图显示透明效果
- VC++实现位图显示透明效果
- VC++窗体实现由完全透明到半透明的渐变显示
- VC++实现控制窗体透明本
- Air 窗体透明和随意拖动效果实现
- 透明窗体 使用DWM实现Aero Glass效果
- VC++实现控制窗体透明
- VC++ 使窗体拥有透明效果地API
- 透明窗体的实现/为窗体添加新的视图效果
- VC实现透明窗体
- VC++实现位图显示透明效果
- SWING实现窗体透明效果
- VC++实现位图显示透明效果--实现原理
- VC++ 实现整个对话框透明的效果SetLayeredWindowAttributes
- VC++实现位图显示透明效果
- VC++实现位图显示透明效果
- VC透明窗体效果WinAPI