VC窗体透明而控件不透明以及Static文本背景透明方法
来源:互联网 发布:windows defender开启 编辑:程序博客网 时间:2024/05/16 14:38
优点:1.Dialog窗体完全透明。
2. 窗体上的控件不透明、 DC 绘制的图形不透明。
3. 拖动窗体上用 DC 绘制的图形可以移动窗体。
缺点:
1. 窗体设置透明使用是掩码颜色,所以在窗体上用 DC 绘图的过程当中如果采用了和透明掩码颜色相同的颜色将不会显示出来。
2. 如果将 Border属性设置成了 NONE ,那么想通过响应 WM_NCHITEST 消息来实现窗体拖动就无法完成了。只能通过在窗体中增加 DC 绘图的方式来完成。
3.DC绘图时虽然支持半透明绘图,但是透明绘图区域不透明。
1.在OnInitDialog()或OnPaint()中加入:
1
2
3
4
5
<b>
COLORREF
maskColor = RGB(255,255,255);
//掩码颜色
SetWindowLong(
this
->GetSafeHwnd(),
GWL_EXSTYLE,
GetWindowLong(
this
->GetSafeHwnd(),GWL_EXSTYLE)| 0x80000);
//设定窗体使用扩展模式
SetLayeredWindowAttributes(maskColor,255,1); </b>
2.在重载的消息WM_CTLCOLOR中加入:(其中包括Static背景透明方法)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<b>
HBRUSH
CTimeRemainDlg::OnCtlColor(CDC* pDC, CWnd* pWnd,
UINT
nCtlColor)
{
HBRUSH
hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: 在此更改 DC 的任何特性
//
if
(nCtlColor == CTLCOLOR_DLG)
//此处设置为窗体透明,CTLCOLOR_DLG表示对话框
{
CBrush *brush;
brush =
new
CBrush(RGB(255,255,255));
return
(
HBRUSH
)(brush->m_hObject);
}
switch
(pWnd->GetDlgCtrlID())
//此处为设置Static Text文本透明。
{
case
IDC_LEFTTOP:
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(125,0,0));
return
(
HBRUSH
)GetStockObject(HOLLOW_BRUSH);
default
:
break
;
}
// TODO: 如果默认的不是所需画笔,则返回另一个画笔
return
hbr;
}</b>
0 0
- VC窗体透明而控件不透明以及Static文本背景透明方法
- VC窗体透明而控件不透明以及Static文本背景透明方法
- [VC中对话框窗体背景透明而控件不透明]
- 背景透明 文本不透明
- .net窗体透明,控件不透明的方法
- 窗体透明,窗体上控件不透明的设置方法
- VC设置STATIC控件背景透明
- vc static控件背景设置成透明
- 【VB】窗体透明一:窗体透明,控件不透明(穿过)
- VC控件背景透明
- vb透明控件窗体不透明函数
- vb 窗体透明效果(控件不透明)
- qgraphicsView设置背景透明,控件不透明
- VC 控件背景透明、文字背景透明
- 背景透明,字不透明
- 背景透明,文字不透明
- 背景透明文字不透明
- 背景透明文字不透明
- UITableView
- 分享一款HI3520D实现HDMI产品上用的大容量存储器
- 上传时生成缩略图
- Elasticsearch-PHP 配置
- 这个博客地址对于caffe初学者十分有帮助
- VC窗体透明而控件不透明以及Static文本背景透明方法
- shell 编程实例练习(二)
- UI的布局优化
- 开通新博客啦
- ssh 免密码登录 密钥登录
- 使用js对cookie操作
- Shell编程样例一篇
- MQTT
- Longest Palindromic Substring