-
Notifications
You must be signed in to change notification settings - Fork 1
/
ColorBtn.cpp
120 lines (96 loc) · 3.79 KB
/
ColorBtn.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
/****************************************************************************************/
/* ColorBtn.cpp */
/* */
/* Author: Jim Mischel, Jeff Lomax */
/* Description: Dialog code for brush flags */
/* */
/* The contents of this file are subject to the Genesis3D Public License */
/* Version 1.01 (the "License"); you may not use this file except in */
/* compliance with the License. You may obtain a copy of the License at */
/* http://www.genesis3d.com */
/* */
/* Software distributed under the License is distributed on an "AS IS" */
/* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See */
/* the License for the specific language governing rights and limitations */
/* under the License. */
/* */
/* The Original Code is Genesis3D, released March 25, 1999. */
/*Genesis3D Version 1.1 released November 15, 1999 */
/* Copyright (C) 1999 WildTangent, Inc. All Rights Reserved */
/* */
/****************************************************************************************/
#include "stdafx.h"
#include "Colorbtn.h"
// CColorButton
CColorButton::CColorButton()
{
mCurrentColor = RGB(255,0,255);
}
CColorButton::~CColorButton()
{
}
BEGIN_MESSAGE_MAP(CColorButton, CButton)
//{{AFX_MSG_MAP(CColorButton)
ON_CONTROL_REFLECT(BN_CLICKED, OnClicked)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CColorButton message handlers
void CColorButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
RECT ClientRect;
// get a cdc
CDC* pDC = CDC::FromHandle( lpDrawItemStruct->hDC );
// now draw a solid rectangle
pDC->FillSolidRect( &lpDrawItemStruct->rcItem, mCurrentColor);
{
// draw the button's text...
CString Text;
this->GetClientRect (&ClientRect);
this->GetWindowText (Text);
pDC->DrawText( Text, &ClientRect, DT_CENTER |DT_VCENTER|DT_SINGLELINE ) ;
}
// if we have the focus
if( lpDrawItemStruct->itemState & ODS_FOCUS ) {
// get a null brush
CBrush *NullBrush = CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH)), *OldBrush;
// select the brush
OldBrush = pDC->SelectObject( NullBrush );
// draw a cute rectangle around it
pDC->Rectangle(&lpDrawItemStruct->rcItem);
// get old
pDC->SelectObject( OldBrush );
}
pDC->DrawEdge( &ClientRect, EDGE_RAISED, BF_RECT ) ;
}
// this function returns our current Color
COLORREF CColorButton::GetColor()
{
return mCurrentColor;
}
void CColorButton::SetColor( COLORREF Color)
{
mCurrentColor = Color;
// update ourselves
RedrawWindow();
}
void CColorButton::OnClicked()
{
COLORREF Color ;
CColorDialog dlg;
// get a Color
if (dlg.DoModal() == IDOK)
{
// assign what it was to the current Color
Color = dlg.GetColor() ;
if( mCurrentColor != Color )
{
CWnd * pParent ;
mCurrentColor = Color ;
pParent = GetParent( ) ;
pParent->SendMessage( WM_UPDATEGROUPCOLOR ); // Tell them we changed
// update ourselves
RedrawWindow();
}
}
}/* CColorButton::OnClicked */