zoukankan      html  css  js  c++  java
  • VC窗体透明而控件不透明以及Static文本背景透明方法

    出自http://my.oschina.net/ypimgt/blog/60951

    优点:
        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>
  • 相关阅读:
    HDU 1022 Train Problem I
    HDU 1702 ACboy needs your help again!
    HDU 1294 Rooted Trees Problem
    HDU 1027 Ignatius and the Princess II
    HDU 3398 String
    HDU 1709 The Balance
    HDU 2152 Fruit
    HDU 1398 Square Coins
    HDU 3571 N-dimensional Sphere
    HDU 2451 Simple Addition Expression
  • 原文地址:https://www.cnblogs.com/chenshaogang/p/4312869.html
Copyright © 2011-2022 走看看