annotate foosdk/sdk/foobar2000/foo_sample/ui_element_dialog.cpp @ 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 #include "stdafx.h"
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 #include "resource.h"
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 <libPPUI/win32_utility.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 #include <libPPUI/win32_op.h> // WIN32_OP()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7 #include <libPPUI/wtl-pp.h> // CCheckBox
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8 #include <helpers/atl-misc.h> // ui_element_impl
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10 #include <libPPUI/DarkMode.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12 namespace {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 // Anonymous namespace : standard practice in fb2k components
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14 // Nothing outside should have any reason to see these symbols, and we don't want funny results if another cpp has similarly named classes.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 // service_factory at the bottom takes care of publishing our class.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18 // I am Sample Component and this is *MY* GUID.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19 // Replace with your own when reusing code. Component authors with colliding GUIDs will be visited by Urdnot Wrex in person.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 static const GUID guid_myelem = { 0x78ca1d7, 0x4e3a, 0x41d5, { 0xa5, 0xef, 0x9d, 0x1a, 0xf7, 0xd5, 0x79, 0xd0 } };
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 enum {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23 FlagLockMinWidth = 1 << 0,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24 FlagLockMinHeight = 1 << 1,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 FlagLockMaxWidth = 1 << 2,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 FlagLockMaxHeight = 1 << 3,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 FlagsDefault = 0
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 static const struct {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31 int btnID;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32 uint32_t flag;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33 } flagsAndButtons[] = {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34 { IDC_LOCK_MIN_WIDTH, FlagLockMinWidth },
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35 { IDC_LOCK_MIN_HEIGHT, FlagLockMinHeight },
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
36 { IDC_LOCK_MAX_WIDTH, FlagLockMaxWidth },
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
37 { IDC_LOCK_MAX_HEIGHT, FlagLockMaxHeight },
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
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40 class CDialogUIElem : public CDialogImpl<CDialogUIElem>, public ui_element_instance {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42 CDialogUIElem( ui_element_config::ptr cfg, ui_element_instance_callback::ptr cb ) : m_callback(cb), m_flags( parseConfig(cfg) ) {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
43
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
44 enum { IDD = IDD_UI_ELEMENT };
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 BEGIN_MSG_MAP_EX( CDialogUIElem )
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
47 MSG_WM_INITDIALOG(OnInitDialog)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
48 MSG_WM_SIZE(OnSize)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
49 COMMAND_CODE_HANDLER_EX(BN_CLICKED, OnButtonClicked)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
50 END_MSG_MAP()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
51
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
52 void initialize_window(HWND parent) {WIN32_OP(Create(parent) != NULL);}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
53 HWND get_wnd() { return m_hWnd; }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
54 void set_configuration(ui_element_config::ptr config) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
55 m_flags = parseConfig( config );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
56 if ( m_hWnd != NULL ) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
57 configToUI();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
58 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
59 m_callback->on_min_max_info_change();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
60 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
61 ui_element_config::ptr get_configuration() {return makeConfig(m_flags);}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
62 static GUID g_get_guid() {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
63 return guid_myelem;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
64 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
65 static void g_get_name(pfc::string_base & out) {out = "Sample Dialog as UI Element";}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
66 static ui_element_config::ptr g_get_default_configuration() {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
67 return makeConfig( );
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 static const char * g_get_description() {return "This is a sample UI Element using win32 dialog.";}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
70 static GUID g_get_subclass() {return ui_element_subclass_utility;}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
71
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
72 ui_element_min_max_info get_min_max_info() {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
73 ui_element_min_max_info ret;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
74
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
75 // Note that we play nicely with separate horizontal & vertical DPI.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
76 // Such configurations have not been ever seen in circulation, but nothing stops us from supporting such.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
77 CSize DPI = QueryScreenDPIEx( *this );
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 if ( DPI.cx <= 0 || DPI.cy <= 0 ) { // sanity
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
80 DPI = CSize(96, 96);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
81 }
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 if ( m_flags & FlagLockMinWidth ) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
84 ret.m_min_width = MulDiv( 200, DPI.cx, 96 );
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 if ( m_flags & FlagLockMinHeight ) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
87 ret.m_min_height = MulDiv( 200, DPI.cy, 96 );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
88 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
89 if ( m_flags & FlagLockMaxWidth ) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
90 ret.m_max_width = MulDiv( 400, DPI.cx, 96 );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
91 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
92 if ( m_flags & FlagLockMaxHeight ) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
93 ret.m_max_height = MulDiv( 400, DPI.cy, 96 );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
94 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
95
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
96 // Deal with WS_EX_STATICEDGE and alike that we might have picked from host
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
97 ret.adjustForWindow( *this );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
98
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
99 return ret;
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
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
102 void applyDark() {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
103 t_ui_color color = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
104 if (m_callback->query_color(ui_color_darkmode, color)) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
105 m_dark.SetDark(color == 0);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
106 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
107 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
108 void notify(const GUID& p_what, t_size p_param1, const void* p_param2, t_size p_param2size) override {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
109 // Colors changed? Check dark mode config
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
110 if (p_what == ui_element_notify_colors_changed) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
111 applyDark();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
112 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
113 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
114 private:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
115 static uint32_t parseConfig( ui_element_config::ptr cfg ) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
116 try {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
117 ::ui_element_config_parser in ( cfg );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
118 uint32_t flags; in >> flags;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
119 return flags;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
120 } catch(exception_io_data) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
121 // If we got here, someone's feeding us nonsense, fall back to defaults
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
122 return FlagsDefault;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
123 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
124 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
125 static ui_element_config::ptr makeConfig(uint32_t flags = FlagsDefault) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
126 ui_element_config_builder out;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
127 out << flags;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
128 return out.finish( g_get_guid() );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
129 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
130 void configToUI() {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
131 for ( unsigned i = 0; i < PFC_TABSIZE( flagsAndButtons ); ++ i ) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
132 auto rec = flagsAndButtons[i];
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
133 // CCheckBox: WTL-PP class overlaying ToggleCheck(bool) and bool IsChecked() over WTL CButton
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
134 CCheckBox cb ( GetDlgItem( rec.btnID ) );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
135 cb.ToggleCheck( (m_flags & rec.flag ) != 0 );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
136 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
137 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
138 void OnButtonClicked(UINT uNotifyCode, int nID, CWindow wndCtl) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
139
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
140 uint32_t flagToFlip = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
141 for ( unsigned i = 0; i < PFC_TABSIZE( flagsAndButtons ); ++ i ) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
142 auto rec = flagsAndButtons[i];
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
143 if ( rec.btnID == nID ) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
144 flagToFlip = rec.flag;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
145 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
146 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
147 if ( flagToFlip != 0 ) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
148 uint32_t newFlags = m_flags;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
149 CCheckBox cb ( wndCtl );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
150 if (cb.IsChecked()) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
151 newFlags |= flagToFlip;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
152 } else {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
153 newFlags &= ~flagToFlip;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
154 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
155 if ( newFlags != m_flags ) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
156 m_flags = newFlags;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
157 m_callback->on_min_max_info_change();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
158 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
159 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
160 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
161
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
162 void OnSize(UINT, CSize s) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
163 auto DPI = QueryScreenDPIEx(*this);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
164
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
165 pfc::string_formatter msg;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
166 msg << "Current size: ";
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
167 if ( DPI.cx > 0 && DPI.cy > 0 ) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
168 msg << MulDiv( s.cx, 96, DPI.cx ) << "x" << MulDiv( s.cy, 96, DPI.cy ) << " units, ";
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
169 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
170 msg << s.cx << "x" << s.cy << " pixels";
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
171
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
172 uSetDlgItemText( *this, IDC_STATIC_SIZE, msg );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
173 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
174 BOOL OnInitDialog(CWindow, LPARAM) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
175
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
176 // First tell m_dark whether we're dark nor not
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
177 applyDark();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
178 // Then initialize it
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
179 m_dark.AddDialogWithControls(*this);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
180 // The above two work in any order, though this way is slightly more efficient
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
181
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
182 configToUI();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
183 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
184 CRect rc;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
185 // WIN32_OP_D() - Debug build only retval check and assert
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
186 // For stuff that practically never fails
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
187 WIN32_OP_D( GetClientRect( &rc ) );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
188 OnSize( 0, rc.Size() );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
189 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
190
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
191 return FALSE;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
192 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
193 const ui_element_instance_callback::ptr m_callback;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
194 uint32_t m_flags;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
195
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
196 // No fb2k::CDarkModeHooks.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
197 // Politely ask our callback if we should render as dark or not, instead of using global settings.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
198 // Though in real life it's all the same in the end.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
199 DarkMode::CHooks m_dark;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
200 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
201
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
202
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
203 static service_factory_single_t< ui_element_impl< CDialogUIElem > > g_CDialogUIElem_factory;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
204 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
205