效果图:头文件:
/////////////////////////////////////////////////////////////////////////////
// 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
/////////////////////////////////////////////////////////////////////////////
// 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
解决方案 »
- _T和TEXT是一样的啊,可是在这种情况下,不一样了
- 发送消息时,如果目标窗口关闭?
- 为什么程序中定义CInternetSession时会出错
- 急求AMIC A276308A for xp显卡驱动!200分送上!
- VC++中能不能同时打开两个工程文件——————?
- char 字串如何转换成CTIME类型
- 关于CView类的Creat()中的参数说明?
- 实时显示的问题....
- 怎么把工具条做的像foxmail那么大,那么灵活?
- 用ADO访问SQL SERVER时出错,请看如下代码!
- 程序是基于对话框的,想调用单文档,在网上找了个,可是单击ok没有出现单文档,求助啊
- 线程局部存储(TLS)是如何实现的?
分享贴?论坛签名======================================================================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#结帖