jjYBdx4IL / ReaperThemeHackDll

Hacking the Windows Reaper DAW UI where regular skinning doesn't apply

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Description

The Reaper DAW does not support skinning the menu bar under Windows. This is a PRELOAD dll that hacks itself into the menu bar drawing process by subclassing the main window REAPERwnd. It also tries to do a lot of other stuff (see source code).

The general setup is currently to use CBT callbacks to create subclasses for windows and widgets.

The dll can run as both, a Reaper user plugin, or a preload dll injected before Reaper startup using Detours withdll.exe.

See CMakeLists.txt for more information.

Status

  • Headers and scroll bars in Sys(List|Tree)View32 widgets cannot be changed.
  • Some minor UI defects. Mileage may vary depending on your workflow.
  • INI file is very minimal.

Installation

  • Required: Visual Studio C/C++ + latest Win11 SDK
  • cmake -B build && cd build && cmake --build . --config Release
  • Find the built dll and withdll.exe, and copy them with runwithdll.cmd to your Reaper installation directory. Adjust the script if needed.
  • The Reaper installation folder must be user-writable because the DLL will create a default .ini file alongside. INI color defaults are optimized for the rLive Reaper theme.

Limitations

  • Needs up-to-date Windows 11 installation. Windows dark theme support is very recent.

Notes

  • The project at https://github.com/jjYBdx4IL/win32-custom-menubar-aero-theme may be used to experiment with win32 style hacks.
  • How to add cmd script to Win 11 task bar: rename to exe, right click, pin, rename back, shift-right-click on task bar entry, adjust script name and optionally the icon (you can 'steal' it from reaper.exe).
  • How to make the console window go away: shift-right-click the task bar entry and prepend the script location with: "powershell Start -WindowStyle hidden " (excluding the quotation marks)

External references

16:38:59:271	 dbgMsg(0000000000911132,0) 'SysTreeView32'() WM_NCCREATE 0x0081(129), 0, 1357328 (parent=0000000000360D8E) (style=0x40010027)
16:38:59:271	 dbgMsg(0000000000911132,0) 'SysTreeView32'(Tree1) WM_NCCALCSIZE 0x0083(131), 0, 1357440 (parent=0000000000360D8E) (style=0x40010027)
16:38:59:271	 dbgMsg(0000000000911132,0) 'SysTreeView32'(Tree1) WM_CREATE 0x0001(1), 0, 1357296 (parent=0000000000360D8E) (style=0x40010027)
16:38:59:271	 dbgMsg(0000000000360D8E,0) '#32770'(Add new FX) WM_NOTIFYFORMAT 0x0055(85), 9507122, 3 (parent=0000000001D61116) (style=0x84cd0044)
16:38:59:271	 dbgMsg(0000000000360D8E,0) '#32770'(Add new FX) WM_QUERYUISTATE 0x0129(297), 0, 0 (parent=0000000001D61116) (style=0x84cd0044)
16:38:59:271	 dbgMsg(0000000000360D8E,0) '#32770'(Add new FX) WM_NOTIFY 0x004e(78), 1176, 1353552 (parent=0000000001D61116) (style=0x84cd0044)
16:38:59:271	    WM_NOTIFY: idFrom=1176, hwndFrom=0000000000911132, code=4294967284 NM_CUSTOMDRAW, style=1073807399

Screenshots

-- devel/cpp/win/ReaperThemeHackDll@8094

About

Hacking the Windows Reaper DAW UI where regular skinning doesn't apply

License:MIT License


Languages

Language:C++ 91.5%Language:CMake 5.9%Language:C 2.5%Language:Batchfile 0.1%