| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 809 人关注过本帖
标题:如何创建一个透明的toolbar?
只看楼主 加入收藏
perky_hb
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-11-13
结帖率:0
收藏
已结贴  问题点数:20 回复次数:5 
如何创建一个透明的toolbar?
我想创建一个无底色透明的toolbar,也就是只能看到toolbar上的每个button,不知道是否可以?请各位大侠指点!非常感谢!
搜索更多相关主题的帖子: button 如何 
2013-11-13 23:03
yuccn
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:10 
你是指半透明那种 还是全透明只有空间可视?全透明的那种,可以试试gdi+

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-11-14 08:21
流年!
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:41
专家分:107
注 册:2013-11-7
收藏
得分:10 
先添加如下宏:

#define  WS_EX_LAYERED  0x80000
#define  WA_ALPHA               0x2
#define  LWA_COLORKEY   0x1

 

然后在OnInitDialog() 中添加如下代码:

etWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,
            GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^WS_EX_LAYERED);
        HINSTANCE hInst = LoadLibrary(L"User32.DLL"); //显式加载DLL
        if(hInst!=NULL)
        {            
                typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD);         
                MYFUNC pFun = NULL;     
                pFun=(MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes");//取得SetLayeredWindowAttributes函数指针
                if(pFun!=NULL)
                        pFun(this->GetSafeHwnd(),0,150,LWA_ALPHA);     
                FreeLibrary(hInst);
        }

/*
BOOL SetLayeredWindowAttributes(
        HWND hwnd,         // 应用目标窗口的句柄
        COLORREF crKey, // 掩码的颜色,可以用RGB(r,g,b)来指定
        BYTE bAlpha,         // 掩码颜色部分的Alpha值,0是全透明,255是完全不透明
        DWORD dwFlags         // 透明方式(LWA_COLORKEY(=1)表示使用crKey; LWA_ALPHA(=2)表示使用bAlpha值)
);
hwnd是透明窗体的句柄,
crKey为颜色值,
bAlpha是透明度,取值范围是[0,255],
dwFlags是透明方式,可以取两个值:
      当取值为LWA_ALPHA时,crKey参数无效,bAlpha参数有效;
      当取值为LWA_COLORKEY时,Alpha参数有效而窗体中的所有颜色为crKey的地方将变为透明。
      LWA_ALPHA = 2
      LWA_COLORKEY=1
      也可以取两个值的组合:LWA_ALPHA Or LWA_COLORKEY。这样crKey的地方将变为全透明,而其它地方根据bAlpha参数确定透明度。

要使使窗体拥有透明效果,首先要有用SetWindowLong设置WS_EX_LAYERED扩展属性
WS_EX_LAYERED = 0x80000
*/
2013-11-14 17:36
perky_hb
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-11-13
收藏
得分:0 
回复 2楼 yuccn
是要全透明的,只能看到按钮的那种。
2013-11-14 22:23
perky_hb
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-11-13
收藏
得分:0 
回复 2楼 yuccn
麻烦您能说得详细点吗?我没接触过GDI,谢谢啦!
2013-11-14 22:24
流年!
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:41
专家分:107
注 册:2013-11-7
收藏
得分:0 
这个就是加动态加载这个SetLayeredWindowAttributes();在把要透明窗口句柄给它就好了,那上面全有,你就改一下参数就好了
2013-11-15 09:19
快速回复:如何创建一个透明的toolbar?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033406 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved