annotate foosdk/sdk/libPPUI/Controls.h @ 1:20d02a178406 default tip

*: check in everything else yay
author Paper <paper@tflc.us>
date Mon, 05 Jan 2026 02:15:46 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1 #pragma once
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
2
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3 #pragma comment(lib, "uxtheme.lib")
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5 #include "wtl-pp.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 #include "win32_op.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8 // Separator-in-dialog tool: subclass a static control on init
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 class CStaticSeparator : public CWindowImpl<CStaticSeparator, CStatic> {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11 CStaticSeparator() {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12 BEGIN_MSG_MAP_EX(CSeparator)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 MSG_WM_PAINT(OnPaint)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14 MSG_WM_SETTEXT(OnSetText)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 END_MSG_MAP()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16 private:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17 int OnSetText(LPCTSTR) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18 Invalidate();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19 SetMsgHandled(FALSE);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 return 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22 void OnPaint(CDCHandle);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 // CWindowRegistered with font & text functionality, for creating custom text label classes
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 template<typename TClass>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27 class CTextControl : public CWindowRegisteredT<TClass> {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29 BEGIN_MSG_MAP_EX(CTextControl)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 MSG_WM_SETFONT(OnSetFont)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31 MSG_WM_GETFONT(OnGetFont)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32 MSG_WM_SETTEXT(OnSetText)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33 CHAIN_MSG_MAP(__super)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34 END_MSG_MAP()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35 private:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
36 HFONT OnGetFont() {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
37 return m_font;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
38 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
39 void OnSetFont(HFONT font, BOOL bRedraw) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40 m_font = font;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41 if (bRedraw) this->Invalidate();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
43 int OnSetText(LPCTSTR) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
44 this->Invalidate();this->SetMsgHandled(FALSE); return 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
45 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
46 CFontHandle m_font;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
47 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
48
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
49 // CStaticThemed BROKEN WITH DARK MODE, DO NOT USE
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
50 // CStaticMainInstruction = use 1.5x scaled font for non subclassed static instead
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
51 #if 0
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
52 // Static control subclass with override for theme part used for rendering
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
53 class CStaticThemed : public CWindowImpl<CStaticThemed, CStatic> {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
54 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
55 CStaticThemed() : m_id(), m_fallback() {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
56 BEGIN_MSG_MAP_EX(CStaticThemed)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
57 MSG_WM_PAINT(OnPaint)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
58 MSG_WM_THEMECHANGED(OnThemeChanged)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
59 MSG_WM_SETTEXT(OnSetText)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
60 END_MSG_MAP()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
61
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
62 void SetThemePart(int id) {m_id = id; if (m_hWnd != NULL) Invalidate();}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
63 private:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
64 int OnSetText(LPCTSTR) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
65 Invalidate();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
66 SetMsgHandled(FALSE);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
67 return 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
68 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
69 void OnThemeChanged() {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
70 m_theme.Release();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
71 m_fallback = false;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
72 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
73 void OnPaint(CDCHandle);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
74 int m_id;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
75 CTheme m_theme;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
76 bool m_fallback;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
77 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
78
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
79 class CStaticMainInstruction : public CStaticThemed {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
80 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
81 CStaticMainInstruction();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
82 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
83 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
84
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
85
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
86 class CSeparator : public CTextControl<CSeparator> {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
87 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
88 BEGIN_MSG_MAP_EX(CSeparator)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
89 MSG_WM_PAINT(OnPaint)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
90 MSG_WM_ENABLE(OnEnable)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
91 CHAIN_MSG_MAP(__super)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
92 END_MSG_MAP()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
93
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
94 static const TCHAR * GetClassName() {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
95 return _T("foobar2000:separator");
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
96 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
97 private:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
98 void OnEnable(BOOL) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
99 Invalidate();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
100 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
101 void OnPaint(CDCHandle dc);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
102 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
103