Welcome

首页 / 软件开发 / VC.NET / Windows界面编程(5) 静态控件背景透明化

Windows界面编程(5) 静态控件背景透明化2014-01-09上一篇《Windows界面编程第三篇 异形窗体 普通版》和《Windows界面编程第四篇异形窗体 高富帅版》介绍了异形窗口(异形窗体)的创建,并总结出了异形窗口的“三要素”:

1.WS_EX_LAYERED属性

2.指定透明色

3.以位图为窗口背景

本篇文章将主要介绍Windows编程中如何实现静态控件背景的透明化,这将进一步的美化界面。下面先看一张没有做静态控件背景透明化的对话框程序的运行画面,对话框的彩色图片背景可以参考《Windows界面编程第一篇位图背景与位图画刷》。

可以看出静态控件的灰度背景在对话框的彩色图片背景中显得很不谐调,因此有必要对其美化一下。

在第一篇《Windows界面编程第一篇位图背景与位图画刷》中介绍了通过WM_CTLCOLORDLG消息来设置对话框的背景,而在Windows系统中还有类似于WM_CTLCOLORDLG消息的还有WM_CTLCOLORBTN,WM_CTLCOLOREDIT,WM_CTLCOLORLISTBOX,WM_CTLCOLORSCROLLBAR,WM_CTLCOLORSTATIC这五种来分别管理按钮,编辑框,列表框,滚动条,静态框。因此我们首先在WM_CTLCOLORSTATIC消息中返回一个空画刷看看能不能达到背景透明化的要求。另外对于文字区域的背景透明可以通过SetBkMode来设置。其函数原型如下:

intSetBkMode(

HDChdc,      // handle to DC

intiBkMode   // background mode

);

这个函数的第二个参数设置为TRANSPARENT时就可以将文字区域的前景设置成透明。

下面给出完整的源代码(下载地址:http://download.csdn.net/download/morewindows/4966826):