文档章节

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

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
184
0
QT下的几种透明效果

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

长平狐
2013/01/11
88
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
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

没有更多内容

加载失败,请刷新页面

加载更多

详解webpack-dev-server的简单使用

webpack-dev-server是一个小型的Node.js Express服务器,它使用webpack-dev-middleware来服务于webpack的包,除此自外,它还有一个通过Sock.js来连接到服务器的微型运行时. 我们来看一下下面的...

前端攻城老湿
31分钟前
0
0
深度解析JavaScript事件对象

这篇文章主要介绍了JavaScript事件对象,结合实例形式深入分析了javascript DOM、IE及其他浏览器相关事件对象操作技巧与注意事项,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可...

前端攻城小牛
32分钟前
1
0
Android下拉刷新开源框架

添加依赖 //下拉刷新 implementation 'com.jcodecraeer:xrecyclerview:1.5.9' xml引用 <com.jcodecraeer.xrecyclerview.XRecyclerView android:id="@+id/act_xrecycler......

lanyu96
39分钟前
1
0
Linux内核中ioremap映射的透彻理解

几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器、状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址。根据CPU体系结构的不同,CPU对IO端口的编址方式有两...

天王盖地虎626
42分钟前
2
0
Collection中的之retainAll()方法的理解

//在jdkapi中的方法,说明返回值为boolean类型, boolean retainAll(Collection<?> c) ; //api中给的注释 //Retains only the elements in this list that are contained in the specified......

南桥北木
45分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部