diff foosdk/sdk/libPPUI/DarkMode-CHyperLink.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/libPPUI/DarkMode-CHyperLink.h	Mon Jan 05 02:15:46 2026 -0500
@@ -0,0 +1,37 @@
+#pragma once
+#include <atlctrlx.h>
+#include "DarkMode.h"
+
+namespace DarkMode {
+	static constexpr COLORREF colorHyperLink = 0xCC6600; // taken from screenshot of syslink
+
+	template<typename impl_t> class CHyperLinkImpl : public ::CHyperLinkImpl<impl_t> {
+	public:
+		BEGIN_MSG_MAP_EX(CDarkHyperLinkImpl)
+			MESSAGE_HANDLER_EX(DarkMode::msgSetDarkMode(), OnSetDarkMode)
+			CHAIN_MSG_MAP(::CHyperLinkImpl<impl_t>)
+		END_MSG_MAP()
+	private:
+		LRESULT OnSetDarkMode(UINT, WPARAM wp, LPARAM) {
+			const bool bDark = (wp != 0);
+			if ( m_clrLinkBackup == CLR_INVALID ) m_clrLinkBackup = this->m_clrLink;
+
+			if (bDark != m_isDark) {
+				m_isDark = bDark;
+				this->m_clrLink = bDark ? colorHyperLink : m_clrLinkBackup; 
+				this->Invalidate();
+			}
+
+			return 1;
+		}
+		COLORREF m_clrLinkBackup = CLR_INVALID;
+		bool m_isDark = false;
+	};
+
+
+	class CHyperLink : public CHyperLinkImpl<CHyperLink> 	{
+	public:
+		DECLARE_WND_CLASS(_T("WTL_DarkHyperLink"))
+	};
+
+}