您的位置:首页 > 其它

VC中实现透明窗体--SetLayeredWindowAttributes

2009-07-27 20:38 585 查看
在VC中有一实现窗口透明的函数-----SetLayeredWindowAttributes(在5.0及以后版本中有)

函数原型

BOOL SetLayeredWindowAttributes(
HWND hwnd, //想要实现透明的窗体句柄
COLORREF crKey, //颜色
BYTE bAlpha, //Alpha值,取值范围是[0,255]
DWORD dwFlags //LWA_COLORKEY(=1)表示使用透明色; LWA_ALPHA(=2)表示使用 Alpha值
);


例子:
1、新建一基于对话框的MFC程序-----TransparentWindow

2、在 CTransparentWindowDlg 类的 OnInitDialog() 函数中加入以下代码(在 return TRUE; 前面)

SetWindowLong(this->m_hWnd,GWL_EXSTYLE,GetWindowLong(this->m_hWnd,GWL_EXSTYLE)^0x80000);
HINSTANCE hInst = LoadLibrary(_T("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->m_hWnd,0,128,2);
}
FreeLibrary(hInst);
}


3、编译、运行完成
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: