VC实现半透明对话框及控件
来源:互联网 发布:淘宝卡价格刷单 编辑:程序博客网 时间:2024/05/19 09:11
基本原理:将父对话框设置为全透明,再铺一张半透明图片与原对话框混合处理,得到半透明的父对话框。
在子对话框中,将除控件外的区域设置为全透明。再将子对话框作为父对话框的子窗口,以层级样式显示出来。
(1)父对话框
在对话框的OnInitDialog中(CWnd窗口的OnCreate中)
(BLENDFUNCTION m_Blend;)
m_Blend.BlendOp=0;
m_Blend.BlendFlags=0;
m_Blend.AlphaFormat=1;
m_Blend.SourceConstantAlpha=255;//原对话框设置为全透明
//窗体样式设为层级窗体
DWORD dwExStyle=GetWindowLong(m_hWnd,GWL_EXSTYLE);
SetWindowLong(m_hWnd,GWL_EXSTYLE,dwExStyle^WS_EX_LAYERED);
(或用ModifyStyleEx(0, WS_EX_LAYERED);)
(HDC m_hdcMemory;)
//绘制内存位图
HDC hdcTemp=GetDC()->m_hDC;
m_hdcMemory=CreateCompatibleDC(hdcTemp);
HBITMAP hBitMap=CreateCompatibleBitmap(hdcTemp,500,500);
SelectObject(m_hdcMemory,hBitMap);
(CImage m_pBkImg;)//Load 或LoadFromResource 一张半透明png作为欲显示的对话框的效果图
m_pBkImg.Draw(m_hdcMemory,0,0);//此处将半透明的png图片画到内存DC上
//使用UpdateLayerWindow进行窗口透明处理
SIZE sizeWindow={rc.Width(),rc.Height()};
POINT ptWinPos={rc.left, rc.top};
POINT ptSrc={0,0};
UpdateLayeredWindow(CDC::FromHandle(hdcTemp) ,&ptWinPos,&sizeWindow,
CDC::FromHandle(m_hdcMemory),&ptSrc,0,&m_Blend,ULW_ALPHA);
对话框的OnCreate中,创建子对话框
(CChildDlg * pChildWnd;)
pChildWnd = new COnWindow(this);
pChildWnd->Create(this);
pChildWnd->ShowWindow(SW_SHOW);
(2)子对话框
OnInitDialog函数中:
ModifyStyleEx(0, WS_EX_LAYERED); //窗体样式设为层级窗体
SetLayeredWindowAttributes(0xff00ff, 200, LWA_COLORKEY|LWA_ALPHA);
//这里的0xff00ff与下面的RGB(255,0,255)对应。200表示控件的透明度为200。参照SetLayeredWindowAttributes的用法
//载入按钮位图。IDB_OK1,IDB_OK2,IDB_CANCEL1,IDB_CANCEL2,对应于四张图片
(CBitmapButton m_ok, m_cancel;)
m_ok.LoadBitmaps(IDB_OK1,IDB_OK2);
m_cancel.LoadBitmaps(IDB_CANCEL1,IDB_CANCEL2);
//IDOK,IDCANCEL是子对话框上的2个按钮
m_ok.SubclassDlgItem(IDOK, this);
m_cancel.SubclassDlgItem(IDCANCEL, this);
OnCtlColor函数中:
if(nCtlColor==CTLCOLOR_DLG)
{
return m_brush;
}
注:
(CBrush m_brush; //背景画刷
m_brush.CreateSolidBrush(RGB(255,0,255));)
- VC实现半透明对话框及控件
- VC实现半透明对话框
- VC实现半透明对话框的代码
- VC实现半透明对话框的代码(VC2005) 2011.11.01
- Android半透明对话框实现
- MFC 对话框半透明实现
- VC实现半透明窗口
- (VC)半透明的实现
- VC截图及用AlphaBlend实现半透明位图
- MFC 对话框半透明的实现
- 把VC对话框设为半透明
- VC++实现文件选择对话框 及目录
- VC中最大化及还原对话框实现
- vc实现异形半透明窗体
- VC++对话框(控件)
- VC对话框全屏显示及相应控件位置改变
- VC对话框全屏显示及相应控件位置改变
- VC对话框全屏显示及相应控件位置改变(转)
- android简单命令
- Chrome强制http定向到https方法
- java程序中的引用型变量在内存中是如何分配的
- 设计模式(一)---简单工厂模式
- web服务器控件
- VC实现半透明对话框及控件
- 关于宏的一些说明
- 最大公约数 数论
- 建立S3C2416的Wince 6.0 编译环境
- 设计模式(二)---策略模式
- 有趣的程序-2011年09月15日(原创+转载)
- ch7-deferred work tasklets
- jit.c
- 5.UEFI Application