编程词典
明日图书
明日软件
用户注册
用户登录
站内
  当前位置:编程词典服务网 >> 编程词典社区论坛 >> 设置静态文本控件背景透...
  · 设置静态文本控件背景透明

用户:  大麦
发帖:  430 篇
作品:  0 个
回复:  110 篇
技术分:  1160 分
等级:  
注册:  2010-05-11 09:09:40



发表于:2010-07-13 13:42:41
          楼主

设置静态文本控件背景透明
在编辑程序界面的时候,经常要使静态文本控件的背景透明,控件的背景透明可以在对话框的WM_CTLCOLOR消息中进行设置。WM_CTLCOLOR消息的处理函数是OnCtlColor函数。
语法:
afx_msg HBRUSH OnCtlColor( CDC* pDC, CWnd* pWnd, UINT nCtlColor );
pDC:指向绘图设备的指针。
pWnd:指向具体控件的指针。
nCtlColor:控件的类型,其值如表1所示。
表1       nCtlColor参数可选值表

   

   

CTLCOLOR_BTN

按钮类控件

CTLCOLOR_DLG

对话框

CTLCOLOR_EDIT

编辑框控件

CTLCOLOR_LISTBOX

列表框控件

CTLCOLOR_MSGBOX

消息框控件

CTLCOLOR_SCROLLBAR

滚动条控件

CTLCOLOR_STATIC

静态文本控件


下面通过实例来实现将静态文本控件的背景透明。
例如:
程序设计的具体操作步骤如下。
(1)创建一个基于对话框的应用程序。
(2)向对话框中添加一个静态文本控件,并将其索引修改为IDC_STATIC1,将显示的文本改为“背景透明”。
(3)在对话框初始化函数中设置静态文本的字体,代码如下:
BOOL CTransparenceDlg::OnInitDialog()
{
    ……//此处代码省略
    font.CreatePointFont(400,"宋体"); //创建字体
    m_Static.SetFont(&font);          //设置字体
    m_Static.UpdateWindow();          //刷新窗口
    return TRUE;
}
(4)添加WM_CTLCOLOR消息的处理函数OnCtlColor,在该函数中将静态文本控件的背景设置为透明。为了更直观的显示控件的背景是透明的,将对话框的背景颜色设置为白色,代码如下:
HBRUSH CTransparenceDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
   
    CBrush m_brush (RGB(255,255,255)); //创建画刷
    CRect m_rect;
    GetClientRect(m_rect);             //获取对话框的客户区域
    pDC->SelectObject(&m_brush);
    pDC->FillRect(m_rect,&m_brush);    //填充背景
    if(nCtlColor == CTLCOLOR_STATIC)//判断是否为静态文本控件
    {
        pDC->SetBkMode(TRANSPARENT);   //设置控件透明
    }
    return m_brush;
}
(5)运行程序,效果如图1所示。

注意:设置静态文本控件的背景透明时需要选择控件的Simple属性。

 

本帖赏分:0 分   回复数:0 篇     
修改   删除   引用   回复
该帖暂无回复!
吉林省明日科技有限公司提供技术支持. 
Copyright © 1999-2008 吉林省明日科技有限公司. 吉ICP备10002740
当前时区 GMT+8, 今天是 
刷新页面 - 关于我们 - 设为首页