vc实现透明对话框的代码

在vc程序代码中如何实现透明对话框的效果呢?很简单,调用下面的函数,设置透明度alpha就可以了。

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也没有的)。


[本日志由 cnfgg 于 2009-08-24 03:37 PM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: vc 透明 对话框 代码
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.