vc实现透明对话框的代码
作者:cnfgg 日期:2009-07-03
vc实现透明对话框的程序代码如下:
复制内容到剪贴板
程序代码
程序代码typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD);
void SetTransparent(HWND hwnd,UINT alpha)
{
MYFUNC MyFun ;
HINSTANCE hInst = LoadLibrary("user32.dll");
SetWindowLong(hwnd,GWL_EXSTYLE,GetWindowLong(hwnd,GWL_EXSTYLE)|0x80000L);
MyFun = (MYFUNC)GetProcAddress(hInst ,"SetLayeredWindowAttributes");
MyFun (hwnd,0,alpha,0x2);
FreeLibrary(hmod);
}
以上代码中用到的SetLayeredWindowAttributes函数是windows的新api,win2000以上才支持,它能使使窗体拥有透明效果。在vc中,新版的SDK才支持这个函数。
BOOL SetLayeredWindowAttributes(
HWND hwnd, // handle to the layered window
COLORREF crKey, // specifies the color key
BYTE bAlpha, // value for the blend function
DWORD dwFlags // action
);
Windows NT/2000/XP: Included in Windows 2000 and later.
Windows 95/98/Me: Unsupported.
Header: Declared in Winuser.h; include Windows.h.
Library: Use User32.lib.
一些常量:
WS_EX_LAYERED = 0x80000;
LWA_ALPHA = 0x2;
LWA_COLORKEY=0x1
其中dwFlags有LWA_ALPHA和LWA_COLORKEY
LWA_ALPHA被设置的话,通过bAlpha决定透明度。
LWA_COLORKEY被设置的话,则指定被透明掉的颜色为crKey,其他颜色则正常显示。
注:要使使窗体拥有透明效果,首先要有WS_EX_LAYERED扩展属性(旧sdk也没有的)。
评论: 0 | 引用: 0 | 查看次数: -
发表评论
上一篇
下一篇

文章来自:
Tags:
相关日志: