annotate foosdk/sdk/foobar2000/helpers/window_placement_helper.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 // DEPRECATED, NOT DPI SAFE
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4 // use cfgDialogPosition & cfgWindowSize2 instead
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5 #ifdef FOOBAR2000_DESKTOP_WINDOWS
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7 #include "../SDK/cfg_var.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 //! Window position management helpers
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10 //! Usage: create a static instance, like with any cfg_var; access it on creation/reposition/destruction of your window.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11 class cfg_window_placement : public cfg_struct_t<WINDOWPLACEMENT> {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 cfg_window_placement(const GUID& guid) : cfg_struct_t(guid) {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14 //! Read and save position data from HWND.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 bool read_from_window(HWND window);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16 //! Apply saved position data to HWND.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17 bool apply_to_window(HWND window, bool allowHidden);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19 // OLD methods tracking only destroy/create.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 // Use of read_from_window() / apply_to_window() instead is preferred, so changes can be saved immediately.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21 bool on_window_creation(HWND window, bool allowHidden = false);//returns true if window position has been changed, false if not
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22 void on_window_creation_silent(HWND window);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23 void on_window_destruction(HWND window);
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
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 // At one point there was a separate cfg_window_placement_v2 without legacy methods
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27 typedef cfg_window_placement cfg_window_placement_v2;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29 //! Window size tracker \n
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 //! Usage: create a static instance, like with any cfg_var; access it on creation/reposition/destruction of your window.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31 class cfg_window_size : public cfg_struct_t<SIZE> {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33 cfg_window_size(const GUID& id) : cfg_struct_t(id) {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34 //! Read and save size data from HWND.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35 bool read_from_window(HWND window);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
36 //! Apply saved size data to HWND.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
37 bool apply_to_window(HWND);
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 // OLD methods tracking only destroy/create.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40 // Use of read_from_window() / apply_to_window() instead is preferred, so changes can be saved immediately.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41 bool on_window_creation(HWND window);//returns true if window position has been changed, false if not
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42 void on_window_destruction(HWND window);
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
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
45 #endif // FOOBAR2000_DESKTOP_WINDOWS