效果图:头文件:
/////////////////////////////////////////////////////////////////////////////
// Name:        LABEL.H
// Purpose:     标签控件
// Author:      yfq
// Modified by: 
// Created:     2011/3/11 14:17
// RCS-ID:      
// Copyright:   
// Licence:     
/////////////////////////////////////////////////////////////////////////////
#ifndef __LABEL_H__
#define __LABEL_H__class CLabel : public CStatic
{
DECLARE_DYNCREATE(CLabel)
public:
CLabel(void);
~CLabel(void);
BOOL Create(const RECT& rect, CWnd* pParentWnd);
private: 
COLORREF m_BorderColor; 
COLORREF m_TextColor; 
COLORREF m_BackColor; 
CBrush m_Brush;  //   Operations 
public:
void SetBorderColor(COLORREF col);
void SetTextColor(COLORREF col);
void SetBackColor(COLORREF col);
void UpdateCtrl();
private:
CString m_strText;
CWnd* m_pParentWnd;
public:
DECLARE_MESSAGE_MAP()
afx_msg HBRUSH CtlColor(CDC* pDC, UINT nCtlColor);
afx_msg void OnPaint();
};#endif //__LABEL_H__源文件://///////////////////////////////////////////////////////////////////////////
// Name:        LABEL.CPP
// Purpose:     标签控件
// Author:      yfq
// Modified by: 
// Created:     2011/3/11 14:17
// RCS-ID:      
// Copyright:   
// Licence:     
/////////////////////////////////////////////////////////////////////////////#include "StdAfx.h"
#include "Label.h"#define ID_LABEL_CTRL WM_USER + 1000;
#define TRANS_BACK -1CLabel::CLabel(void)
{
m_pParentWnd = NULL;
m_TextColor = RGB(225, 112, 5);
m_BorderColor = RGB(0,100,200);
m_BackColor = TRANS_BACK;
}CLabel::~CLabel(void)
{
}IMPLEMENT_DYNCREATE(CLabel, CStatic)
BEGIN_MESSAGE_MAP(CLabel, CStatic)
ON_WM_CTLCOLOR_REFLECT()
ON_WM_PAINT()
END_MESSAGE_MAP()
BOOL CLabel::Create(const RECT& rect, CWnd* pParentWnd)
{
m_pParentWnd = pParentWnd;
static UINT nID = ID_LABEL_CTRL;
BOOL ret = CStatic::Create(NULL,WS_CHILD | WS_VISIBLE | SS_CENTERIMAGE | SS_CENTER, rect, pParentWnd, ++nID);
if(ret)
{
SetFont(pParentWnd->GetFont());
}
return ret;
}
void CLabel::OnPaint()
{
CStatic::OnPaint();
CClientDC dc(this);
if (!m_pParentWnd)
{
return;
}
CRect rect;
GetWindowRect(rect);
rect.left-=1;
rect.top-=1;
rect.right+=1;
rect.bottom+=1;
ScreenToClient(rect);
dc.Draw3dRect(rect,m_BorderColor,m_BorderColor);
}
HBRUSH CLabel::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);
} SetTextColor(m_TextColor); return (HBRUSH)m_Brush;
}void CLabel::UpdateCtrl()
{
CWnd* pParent = GetParent();
CRect rect; GetWindowRect(rect);
pParent->ScreenToClient(rect);
rect.DeflateRect(2,2); pParent->InvalidateRect(rect,FALSE);
Invalidate();
UpdateWindow();

void CLabel::SetBorderColor(COLORREF col)
{
m_BorderColor = col;
UpdateCtrl();
CRect rect;
GetClientRect(rect);
InvalidateRect(rect,FALSE);
}
void CLabel::SetTextColor(COLORREF col)
{
m_TextColor = col;
UpdateCtrl();
}
void CLabel::SetBackColor(COLORREF col)
{
m_BackColor = col;
UpdateCtrl();
}
使用方法:m_Label.Create(CRect(10,10,100,40),this);  
m_Label.SetBackColor(RGB(222,0,222));  
m_Label.SetWindowText("Invalidate");原文:http://www.looiy.com/?p=11

解决方案 »

  1.   


    分享贴?论坛签名======================================================================yfqvip:你好!
    截至 2011-03-15 17:03:02 前:
    你已发帖 208 个, 未结贴 3 个;
    结贴率为: 98.56%

    当您的问题得到解答后请及时结贴.

    http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html
    http://topic.csdn.net/u/20100428/09/BC9E0908-F250-42A6-8765-B50A82FE186A.html
    http://topic.csdn.net/u/20100626/09/f35a4763-4b59-49c3-8061-d48fdbc29561.html如何给分和结贴?
    http://community.csdn.net/Help/HelpCenter.htm#结帖
      

  2.   

    前排广告位招租  有意者联系XXX-XXXXXXXX
      

  3.   

    如果你的这个lable没有句柄,而且能实现links的功能就完善了,谢谢你的分享啊