29 m_bMsgHandled = FALSE;
34 ATLASSERT( m_hWnd == NULL);
52 CWindowImpl<CBevel, CStatic>::SubclassWindow(hwnd);
54 ModifyStyle(WS_BORDER | WS_DLGFRAME | SS_ETCHEDFRAME | SS_ETCHEDVERT |
55 SS_ETCHEDHORZ | SS_WHITEFRAME, 0);
56 ModifyStyleEx(0, WS_EX_TRANSPARENT);
136 void CBevel::UpdatePens()
138 if ((m_hLitePen != NULL) || (m_hDarkPen != NULL))
141 m_hLitePen = ::CreatePen(PS_SOLID, 1, ::GetSysColor(COLOR_BTNHIGHLIGHT));
142 m_hDarkPen = ::CreatePen(PS_SOLID, 1, ::GetSysColor(COLOR_3DDKSHADOW));
146 void CBevel::DeletePens()
148 if (m_hLitePen != NULL)
150 ::DeleteObject(m_hLitePen);
154 if (m_hDarkPen != NULL)
156 ::DeleteObject(m_hDarkPen);
167 LRESULT CBevel::OnPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
173 bool do_end_paint =
false;
180 RECT update_rect{ 0 };
181 if (GetUpdateRect(&update_rect) != 0)
183 dc = BeginPaint(&ps);
191 GetWindowRect(&rect);
192 ScreenToClient(&rect);
194 int w = rect.Width();
195 int h = rect.Height();
197 if ((m_hLitePen == NULL)||(m_hDarkPen == NULL))
200 if ((m_hLitePen == NULL) || (m_hDarkPen == NULL))
203 FillRect(dc, &rect, (HBRUSH)GetStockObject(HOLLOW_BRUSH));
208 HPEN oldpen = (HPEN)::SelectObject(dc, m_hDarkPen);
214 ::MoveToEx(dc, 0, 0, NULL);
219 ::MoveToEx(dc, 0, 1, NULL);
227 ::MoveToEx(dc, 0, 0, NULL);
232 ::MoveToEx(dc, 1, 0, NULL);
238 ::SelectObject(dc, oldpen);
239 oldpen = (HPEN)::SelectObject(dc, m_hLitePen);
245 ::MoveToEx(dc, 0, 0, NULL);
250 ::MoveToEx(dc, 0, 1, NULL);
258 ::MoveToEx(dc, 0, 0, NULL);
263 ::MoveToEx(dc, 1, 0, NULL);
267 ::SelectObject(dc, oldpen);
273 ::MoveToEx(dc, 0, 0, NULL);
280 if (do_end_paint ==
true)
286 BOOL CBevel::OnEraseBkgnd(CDCHandle dc)
291 void CBevel::OnSysColorChange()
void SetBevelStyle(CBevelStyle value)
Set a new CBevelStyle value.
void UnSubclassStatic()
Un-subclass the window and release GDI resources.
void SetBevelMode(CBevelMode mode)
Load a new bevel mode.
CBevelMode GetBevelMode() const
Default: CBevelMode::bmHorizontal.
CBevelStyle GetBevelStyle() const
Default: CBevelStyle::bsSunken.
void SubclassStatic(HWND hwnd)
Subclass a static control window; modify window style to provide the intended graphical appearance...