文档章节

窗口使用半透明图片,控件不透明的方法

h
 hehe785412
发布于 2015/02/11 18:20
字数 200
阅读 17
收藏 0

最近项目软件需要制作半透明窗口,但控件不能透明。窗口和控件都是自绘的。
网上大部分例子都是直接设置窗口透明度实现,这样只能让整个窗口透明,达不到我们想要的效果。
经研究发现,需要使用父子两个窗口配合制作,父窗口不能在OnPaint那里自绘,
而是直接GetDC得到句柄自绘背景,子窗口负责自绘控件。

 

关键代码:
父窗口

OnInitDialog()
{
m_dlg.Create(m_hWnd);
        m_dlg.ShowWindow(SW_SHOW);
        m_dlg.MoveWindow(&rct);
        
        HDC hDC =::GetDC(m_hWnd);
        BLENDFUNCTION blend;
        blend.BlendOp=0; //theonlyBlendOpdefinedinWindows2000
        blend.BlendFlags=0; //nothingelseisspecial...
        blend.AlphaFormat=1; //...
        blend.SourceConstantAlpha=255;//AC_SRC_ALPHA
        DWORD dwExStyle=::GetWindowLong(m_hWnd,GWL_EXSTYLE);
        ::SetWindowLong(m_hWnd,GWL_EXSTYLE,dwExStyle^0x80000);
        HDC hMemDc;
        hMemDc=CreateCompatibleDC(hDC);
        HBITMAP hBitMap=CreateCompatibleBitmap(hDC,500,500);
        SelectObject(hMemDc,hBitMap);

转自:

http://www.pailm.com

 

 

本文转载自:http://www.gzzsc.net/thread-6580-1-1.html

共有 人打赏支持
h
粉丝 0
博文 2
码字总数 0
作品 0
黄石
QT下的几种透明效果

1.窗口整体透明,但是窗体上的控件不透明。 通过设置窗体的背景色来实现,将背景色设置为全透。 QPalette pal = palette(); pal.setColor(QPalette::Background, QColor(0x00,0xff,0x00,0x0...

晨曦之光
2012/04/13
121
0
QT QWidget设置窗体透明度方法汇总

1、设置窗体的背景色 在构造函数里添加代码,需要添加头文件qpalette或qgui QPalette pal = palette(); pal.setColor(QPalette::Background, QColor(0x00,0xff,0x00,0x00)); setPalette(pal)......

霄霄月月
2012/12/30
0
0
QT下的几种透明效果

1.窗口整体透明,但是窗体上的控件不透明。 通过设置窗体的背景色来实现,将背景色设置为全透。 QPalette pal = palette(); pal.setColor(QPalette::Background, QColor(0x00,0xff,0x00,0x0...

长平狐
2013/01/11
63
0
popupwindow popupmenu dialog

private void iniPopupWindow() { LayoutInflater inflater = (LayoutInflater) this .getSystemService(Context.LAYOUTINFLATERSERVICE); View layout = inflater.inflate(R.layout.taskdet......

当空皓月
2014/10/29
0
0
DirectX3D游戏制作之---游戏界面的设计

前言: 再深沉的感情,再真挚的牵挂,还是会有分开的一天......到头来又怎么敌得过生离死别...... -------韩菱纱《仙剑奇侠传四》 PS:为了方便大家阅读,个人认为比较重要的内容-------红色...

loving_forever_
2016/08/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Shell编程(expect同步文件、指定host和同步文件、构建文件分发系统、批量执行命令)

expect脚本同步文件 需求:自动同步文件 实验准备: A机器:192.168.248.130 B机器:192.168.248.129 实现: 1.A机器编写4.expect脚本文件,内容如下所示: #!/usr/bin/expectset passwd "...

蛋黄_Yolks
21分钟前
1
0
ppwjs之bootstrap颜色:背景颜色

<!DOCTYPT html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8" /><title>ppwjs欢迎您</title><link rel="icon" href="/favicon.ico" ......

ppwjs
21分钟前
0
0
Ubuntu与 Fedora之对比

大家好。今天我将重点介绍两个流行的Linux发行版之间的一些特性和差异; Ubuntu 18.04和Fedora 28。它们都有自己的包管理; Ubuntu使用DEB,而Fedora使用RPM,但它们都具有相同的桌面环境(GNO...

linuxprobe16
25分钟前
1
0
线性代数入门

线性代数的概念对于理解机器学习背后的原理非常重要,尤其是在深度学习领域中。它可以帮助我们更好地理解算法内部到底是怎么运行的,借此,我们就能够更好的做出决策。所以,如果你真的希望了...

牛奋Debug
昨天
3
0
开发5分钟,调试2小时 - 该如何debug?

几年来我在答疑群、论坛、公众号、知乎回答的各种问题,没有一万也有八千。其中有三分之二以上都是在帮人看报错,帮人 debug(调试代码)。 可以说,会不会 debug,有没有 debug 的意识,懂不...

crossin
昨天
4
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部