WTL Controls
Back to the WTL Controls Home Page.
StaticPlus.cpp
Go to the documentation of this file.
1 #include "stdafx.h"
2 //--------------------------------------------------------------------------------------
3 //--------------------------------------------------------------------------------------
4 //
5 //
6 // WTL Control Library
7 // by
8 // Bright Ideas Software®
9 // Copyright © 2018 by Bright Ideas Software.
10 //
11 //
12 //
13 //--------------------------------------------------------------------------------------
14 //--------------------------------------------------------------------------------------
15 
16 
17 namespace BIS_WTL_CONTROLS
18 {
19 
20  //----------------------------------------------------------------------------------------------
22  {
23 
24  m_TextColor = ::GetSysColor (COLOR_WINDOWTEXT);
25  m_BackColor = ::GetSysColor (COLOR_BTNFACE);
26 
27  m_bBtnFaceBkgnd = false;
28 
29  m_hbrBackBrush = NULL;
30 
31  }
32  //----------------------------------------------------------------------------------------------
34  {
35 
36  ATLASSERT(m_hWnd == NULL);
37  DeleteBrush();
38 
39  }
40  //----------------------------------------------------------------------------------------------
41  //----------------------------------------------------------------------------------------------
53  {
54 
55  CWindowImpl<CStaticPlus, CStatic>::SubclassWindow(hWnd);
56 
57  ModifyStyle(0, SS_NOTIFY);
58  UpdateBackBrush();
59 
60  }
61  //----------------------------------------------------------------------------------------------
70  {
71  UnsubclassWindow();
72  DeleteBrush();
73  }
74  //----------------------------------------------------------------------------------------------
75  //----------------------------------------------------------------------------------------------
81  COLORREF CStaticPlus::GetBackColor() const
82  {
83  return(m_BackColor);
84  }
85  //----------------------------------------------------------------------------------------------
86  void CStaticPlus::SetBackColor(COLORREF value)
87  {
88 
89  if (m_BackColor != value)
90  {
91  m_BackColor = value;
92  UpdateBackBrush();
93  }
94  }
95  //----------------------------------------------------------------------------------------------
96  //----------------------------------------------------------------------------------------------
102  COLORREF CStaticPlus::GetTextColor() const
103  {
104  return(m_TextColor);
105  }
106  //----------------------------------------------------------------------------------------------
107  void CStaticPlus::SetTextColor(COLORREF value)
108  {
109  m_TextColor = value;
110  }
111  //----------------------------------------------------------------------------------------------
112  //----------------------------------------------------------------------------------------------
119  {
120  return(m_bBtnFaceBkgnd);
121  }
122  //----------------------------------------------------------------------------------------------
124  {
125  if (value != m_bBtnFaceBkgnd)
126  {
127  m_bBtnFaceBkgnd = value;
128  UpdateBackBrush();
129  }
130  }
131  //----------------------------------------------------------------------------------------------
132  //----------------------------------------------------------------------------------------------
139  {
140  Invalidate();
141  UpdateWindow();
142  }
143  //----------------------------------------------------------------------------------------------
144  //----------------------------------------------------------------------------------------------
145  //
146  // Private Methods
147  //
148  //----------------------------------------------------------------------------------------------
149  //----------------------------------------------------------------------------------------------
150  void CStaticPlus::UpdateBackBrush()
151  {
152 
153  DeleteBrush();
154 
155  if (m_bBtnFaceBkgnd == false)
156  m_hbrBackBrush = ::CreateSolidBrush (m_BackColor);
157 
158  }
159  //----------------------------------------------------------------------------------------------
160  void CStaticPlus::DeleteBrush()
161  {
162  if (m_hbrBackBrush != NULL)
163  {
164  ::DeleteObject (m_hbrBackBrush);
165  m_hbrBackBrush = NULL;
166  }
167  }
168  //----------------------------------------------------------------------------------------------
169  //----------------------------------------------------------------------------------------------
170  //
171  // Message Handlers
172  //
173  //----------------------------------------------------------------------------------------------
174  //----------------------------------------------------------------------------------------------
175  HBRUSH CStaticPlus::OnReflectedCtlColorStatic(CDCHandle dc, CStatic wndStatic)
176  {
177 
178  if (m_hWnd == wndStatic.m_hWnd)
179  {
180 
181  COLORREF backcolor;
182 
183  if (m_bBtnFaceBkgnd == false)
184  backcolor = m_BackColor;
185  else
186  backcolor = ::GetSysColor(COLOR_BTNFACE);
187 
188  dc.SetTextColor(m_TextColor);
189  dc.SetBkColor(backcolor);
190  dc.SetBkMode(TRANSPARENT);
191 
192 
193  if (m_bBtnFaceBkgnd == false)
194  return(m_hbrBackBrush);
195  else
196  return(::GetSysColorBrush(COLOR_BTNFACE));
197  }
198  else
199  {
200  SetMsgHandled(FALSE);
201  return(0);
202  }
203  }
204  //----------------------------------------------------------------------------------------------
205  BOOL CStaticPlus::OnEraseBkgnd(CDCHandle dc)
206  {
207  return(TRUE);
208  }
209  //----------------------------------------------------------------------------------------------
210 };
void SetTextColor(COLORREF value)
Definition: StaticPlus.cpp:107
COLORREF GetTextColor() const
Default: COLOR_WINDOWTEXT.
Definition: StaticPlus.cpp:102
void SetBtnFaceBkgnd(bool value)
Definition: StaticPlus.cpp:123
COLORREF GetBackColor() const
Default: COLOR_BTNFACE.
Definition: StaticPlus.cpp:81
void UpdateContent()
Wraps Invalidate and UpdateWindow, forcing an immediate redraw.
Definition: StaticPlus.cpp:138
bool GetBtnFaceBkgnd() const
Default: false.
Definition: StaticPlus.cpp:118
void SetBackColor(COLORREF value)
Definition: StaticPlus.cpp:86
void UnSubclassStatic()
Un-subclass the window and release GDI resources.
Definition: StaticPlus.cpp:69
void SubclassStatic(HWND hWnd)
Subclass a Static TExt control window and create GDI resources.
Definition: StaticPlus.cpp:52