#19223: Add dark mode support on MS Windows
------------------------------+------------------------
Reporter: HackerDaGreat57 | Owner:
Type: enhancement | Status: reopened
Priority: lowest | Milestone:
Component: wxMSW | Version: dev-latest
Resolution: | Keywords: dark mode
Blocked By: | Blocking:
Patch: 0 |
------------------------------+------------------------
Comment (by pb101):
I would strongly prefer this ticket to be closed as it basically contains,
aside from two posts, just utterly useless overly dramatic complaints and
boasts, irrelevant information, and worse, untruths.
= Untruths =
== VideoPad using wxWidgets confirmed ==
VideoPad does NOT display wxWidgets information (i.e.,
`wxInfoMessageBox()`) after <Ctrl><Alt><MiddleClick> into an "empty" area.
However, this may be disabled by modifying wxWidgets sources. But the GUI
looks quite different, the ribbon is not wxRibbon, tabbed dockable UI
looks different from wxAui, even the splitter is not the same. Inspecting
its executable also does not show the usual embedded strings that are
there for wxWidgets-using applications. Additionally, wxWidgets is not
mentioned in its about dialog where it lists the 3rd party software used.
== Win32 application can use dark mode with a Registry setting ==
Another obvious untruth, the procedure used is basically always based on
hacks like [
https://github.com/ysc3839/win32-darkmode this]. In other
words using undocumented DLL exported functions and window class names and
control-specific code.
= Facts =
As I already wrote here, an example of open source wxWidgets application
attempting to implement dark mode on Windows is
[
https://github.com/prusa3d/PrusaSlicer PrusaSlicer].
As for popular open source pure Win32 applications implementing dark mode,
there is for example [
https://github.com/notepad-plus-plus/notepad-plus-
plus Notepad++]. Chrome and Firefox have to deal with this as well, but
they do not use native controls much, providing their own implementation.
The biggest problem with dark mode and Win32 is that Microsoft does not
support it and spent just the smallest possible effort to make File
Explorer work with it. For example other bundled Win32 applications such
as Notepad, WordPad, and Paint are dark mode unaware.
This means that not all [
https://docs.microsoft.com/en-
us/windows/win32/controls/individual-control-info common controls] may
support dark mode, the same goes for [
https://docs.microsoft.com/en-
us/windows/win32/dlgbox/dialog-box-types the common dialogs] with the
exception of `IFileDialog`-based dialogs File Explorer uses. The issue is
not just with colors but it seems that even if a control may have a basic
support for dark mode, some styles (e.g., borders) may not work well with
it. `GetSysColor()` not supporting dark mode is the least issue.
The OP touted VideoPad as a great example of Win32-based application using
dark mode but in my first post I listed a bunch of rather noticeable
issues I found in about a minute in total (but I knew where to look based
on my experiences with this) and I would be surprised if there were not
more.
= TLDR =
Properly implementing dark mode for a Win32 application is very difficult,
perhaps even impossible due to limitations imposed by Windows. Doing the
same in the library is even harder. There is no doubt that dark mode is a
highly requested feature, if it was reasonably possible it would be
already implemented.
--
Ticket URL: <
https://trac.wxwidgets.org/ticket/19223#comment:11>