I use the Windows C API through a custom C++ abstraction layer. On macOS and Linux I use SWELL by Cockos which roughly emulates a subset of that API (using macOS' Cocoa or GTK behind the scene). This reduces the amount of external dependencies and makes ReaPack have a similar look-and-feel to REAPER. SWS uses the same.
In addition to Juce there are many cross-platform GUI libraries out there (Qt, GTK, wxWidgets...
see wikipedia's list) – often with wrappers available a ton of languages. They ultimately all use the operating system's API to some extent.