diff foosdk/sdk/foobar2000/helpers/win32_dialog.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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/foosdk/sdk/foobar2000/helpers/win32_dialog.h	Mon Jan 05 02:15:46 2026 -0500
@@ -0,0 +1,62 @@
+#pragma once
+
+#ifdef FOOBAR2000_DESKTOP_WINDOWS
+
+//DEPRECATED dialog helpers - kept only for compatibility with old code - do not use in new code, use WTL instead.
+
+namespace dialog_helper
+{
+	
+	class dialog
+	{
+	protected:
+		
+		dialog() : wnd(0), m_is_modal(false) {}
+		~dialog() { }
+
+		virtual BOOL on_message(UINT msg,WPARAM wp,LPARAM lp)=0;
+
+		void end_dialog(int code);
+
+	public:
+		inline HWND get_wnd() {return wnd;}
+
+		__declspec(deprecated) int run_modal(unsigned id,HWND parent);
+
+		__declspec(deprecated) HWND run_modeless(unsigned id,HWND parent);
+	private:
+		HWND wnd;
+		static INT_PTR CALLBACK DlgProc(HWND wnd,UINT msg,WPARAM wp,LPARAM lp);
+
+		bool m_is_modal;
+
+		modal_dialog_scope m_modal_scope;
+	};
+
+	//! This class is meant to be instantiated on-stack, as a local variable. Using new/delete operators instead or even making this a member of another object works, but does not make much sense because of the way this works (single run() call).
+	class dialog_modal
+	{
+	public:
+		__declspec(deprecated) int run(unsigned p_id,HWND p_parent,HINSTANCE p_instance = core_api::get_my_instance());
+	protected:
+		virtual BOOL on_message(UINT msg,WPARAM wp,LPARAM lp)=0;
+
+		inline dialog_modal() : m_wnd(0) {}
+		void end_dialog(int p_code);
+		inline HWND get_wnd() const {return m_wnd;}
+	private:
+		static INT_PTR CALLBACK DlgProc(HWND wnd,UINT msg,WPARAM wp,LPARAM lp);
+
+		HWND m_wnd;
+		modal_dialog_scope m_modal_scope;
+	};
+
+};
+
+//! Wrapper (provided mainly for old code), simplifies parameters compared to standard CreateDialog() by using core_api::get_my_instance().
+HWND uCreateDialog(UINT id,HWND parent,DLGPROC proc,LPARAM param = 0);
+//! Wrapper (provided mainly for old code), simplifies parameters compared to standard DialogBox() by using core_api::get_my_instance().
+int uDialogBox(UINT id,HWND parent,DLGPROC proc,LPARAM param = 0);
+
+
+#endif // FOOBAR2000_DESKTOP_WINDOWS
\ No newline at end of file