?? colorbutton.cpp
字號:
#include "stdafx.h"
#include "ColorButton.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
CColorButton::CColorButton()
{
}
CColorButton::~CColorButton()
{
}
BOOL CColorButton::InitButton(UINT nID,CWnd *pParent,const char *Caption,COLORREF Color,COLORREF BkColor,COLORREF DisColor)
{
if(!SubclassDlgItem(nID,pParent))
return FALSE;
SetButtonStyle(BS_OWNERDRAW);
m_Caption=Caption;
m_Color=Color;
m_BkColor=BkColor;
m_DisColor=DisColor;
return TRUE;
}
void CColorButton::ChangeCaption(const char *Caption)
{
m_Caption=Caption;
Invalidate();
}
void CColorButton::ChangeColor(COLORREF Color)
{
m_Color=Color;
Invalidate();
}
void CColorButton::ChangeBkColor(COLORREF BkColor)
{
m_BkColor=BkColor;
Invalidate();
}
void CColorButton::ChangeDisColor(COLORREF DisColor)
{
m_DisColor=DisColor;
Invalidate();
}
void CColorButton::DrawFrame(CDC *pDC,RECT *rt)
{
pDC->MoveTo(rt->left,rt->bottom);
CPen pWhite(PS_SOLID,1,RGB(255,255,255));
pDC->SelectObject(&pWhite);
pDC->LineTo(rt->left,rt->top);
pDC->LineTo(rt->right,rt->top);
CPen pBlack(PS_SOLID,2,RGB(0,0,0));
pDC->SelectObject(&pBlack);
pDC->LineTo(rt->right,rt->bottom);
pDC->LineTo(rt->left,rt->bottom);
}
void CColorButton::DrawPushFrame(CDC *pDC,RECT *rt)
{
pDC->MoveTo(rt->left,rt->bottom);
CPen pWhite(PS_SOLID,1,RGB(0,0,0));
pDC->SelectObject(&pWhite);
pDC->LineTo(rt->left,rt->top);
pDC->LineTo(rt->right,rt->top);
CPen pBlack(PS_SOLID,2,RGB(255,255,255));
pDC->SelectObject(&pBlack);
pDC->LineTo(rt->right,rt->bottom);
pDC->LineTo(rt->left,rt->bottom);
}
void CColorButton::DrawFrameText(CDC *pDC,RECT *rt,COLORREF Color)
{
pDC->SetTextColor(Color);
pDC->SetBkMode(TRANSPARENT);
pDC->DrawText(m_Caption,rt,DT_CENTER | DT_SINGLELINE | DT_VCENTER);
}
void CColorButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
CDC dc;
dc.Attach(lpDrawItemStruct->hDC);
RECT *rt=&lpDrawItemStruct->rcItem;
UINT State=lpDrawItemStruct->itemState;
if(State & ODS_SELECTED)
DrawPushFrame(&dc,rt);
else
{
DrawFrame(&dc,rt);
rt->left+=1;
rt->top+=1;
CPen pen(PS_NULL,0,(COLORREF) 0);
dc.SelectObject(&pen);
CBrush br(m_BkColor);
dc.SelectObject(&br);
dc.Rectangle(rt);
if(State & ODS_DISABLED)
DrawFrameText(&dc,rt,m_DisColor);
else
DrawFrameText(&dc,rt,m_Color);
}
dc.Detach();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -