???

解决方案 »

  1.   

    也许它里面的OnPaint根本没有处理之,呵呵,要使用透明的CStatic,我给你一个类!
      

  2.   

    /*===========================================================================
    ====                                                                     ====
    ====    File name           :  StaticTrans.h                             ====
    ====    Creation date       :  7/10/2001                                 ====
    ====    Author(s)           :  Dany Cantin                               ====
    ====                                                                     ====
    ===========================================================================*/#ifndef STATICTRANS_H
    #define STATICTRANS_H#if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000
    /////////////////////////////////////////////////////////////////////////////
    // CStaticTrans window#define TRANS_BACK -1class CStaticTrans : public CStatic
    {
        // Construction
    public:
        CStaticTrans();
        
    private:
        COLORREF m_TextColor;
        COLORREF m_BackColor;
        CBrush   m_Brush;
        
    // Operations
    public:
        void SetTextColor(COLORREF col) { m_TextColor = col;
                                          UpdateCtrl();      }
        void SetBackColor(COLORREF col) { m_BackColor = col;
                                          UpdateCtrl();      }private:
        void UpdateCtrl();
        
    // Overrides
    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CStaticTrans)
    //}}AFX_VIRTUAL// Implementation
    public:
    virtual ~CStaticTrans(); // Generated message map functions
    protected:
    //{{AFX_MSG(CStaticTrans)
    afx_msg HBRUSH CtlColor(CDC* pDC, UINT nCtlColor);
    //}}AFX_MSG DECLARE_MESSAGE_MAP()
    };
    #endif // STATICTRANS_H
      

  3.   

    /*===========================================================================
    ====                                                                     ====
    ====    File name           :  StaticTrans.cpp                           ====
    ====    Creation date       :  7/10/2001                                 ====
    ====    Author(s)           :  Dany Cantin                               ====
    ====                                                                     ====
    ===========================================================================*/#include "stdafx.h"
    #include "StaticTrans.h"#ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif/////////////////////////////////////////////////////////////////////////////
    // CStaticTransCStaticTrans::CStaticTrans()
    {
        m_TextColor = RGB(0, 0, 0);
        m_BackColor = TRANS_BACK;    
    }CStaticTrans::~CStaticTrans()
    {
    }
    BEGIN_MESSAGE_MAP(CStaticTrans, CStatic)
    //{{AFX_MSG_MAP(CStaticTrans)
    ON_WM_CTLCOLOR_REFLECT()
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////
    // CStaticTrans message handlersHBRUSH CStaticTrans::CtlColor(CDC* pDC, UINT nCtlColor) 
    {
        m_Brush.DeleteObject();
        
        if (m_BackColor == TRANS_BACK) {
            m_Brush.CreateStockObject(HOLLOW_BRUSH);
            pDC->SetBkMode(TRANSPARENT);
        }
        else {
            m_Brush.CreateSolidBrush(m_BackColor);
            pDC->SetBkColor(m_BackColor);
        }
        
        pDC->SetTextColor(m_TextColor);
        
        return (HBRUSH)m_Brush;
    }void CStaticTrans::UpdateCtrl()
    {
        CWnd* pParent = GetParent();
        CRect rect;
        
        GetWindowRect(rect);
        pParent->ScreenToClient(rect);
        rect.DeflateRect(2, 2);
        
        pParent->InvalidateRect(rect, FALSE);    
    }
      

  4.   

    需要在父窗口中的WM_CTLCOLOR中设置透明效果