At the onset it is probably better I look at a cross-platform library (hence ImGui) |
I'm gonna be blunt.....
You have the situation reversed. You are buying a vehicle based on some cool feature you've only read about. No test drive or full feature comparison done.
You should learn how your development OS does GUI first. Yes, that means getting a good grasp of the WinAPI. You don't need to go spelunking around into every nook and cranny, that would be more effort than its worth.
Cooperative operating systems Windows or MacOS do things differently than earlier OSes like MS-DOS.
MS-DOS is a single use/task OS. When you run a program the app has total control over the computer's resources until the program terminates.
Windows is a multi-tasking cooperative OS, it can run multiple apps at once, sharing the CPU. Windows gives each running app a slice of time to execute. Windows also controls access to system resources, apps have to request memory or to use the printer, etc.
Most WinAPI apps are idle until they are informed of any possible events they might need to process. Such as a mouse click within the app's window or a button clicked, etc. That arcane flummery known as Windows Messages.
In the Before Time, before Windows, when an app wanted to print something the app had to have code to directly access the printer written into the code. That approach limited the hardware that could be used with apps. Either the programmer had to know the details of interacting with a wide variety of printers which meant a whole lot of bloat in apps, or restrict the hardware to a select few. The same goes for display devices.
Windows overturned that by introducing device drivers. The hard manufacturer wrote the code that drove the device and that device driver needed to be installed on the PC. The interface between Windows (and running apps) and the hardware was standardized so when a user wanted to print something the app told Windows what to print. Windows passed the info to the device driver to do the grunt work of running the printer. Now an app didn't need to know or care what hardware was installed. As long as a device driver was present the hardware was usable.
With the device driver model consumers could purchase a wide variety of hardware. You can have a simple dot-matrix line printer or an ink-jet or laser printer.
Hardware like monitors don't need a manufacturer created device driver, most follow a generic method for displaying info, so Windows already knows how to "talk" to most monitors.
Something else to consider when choosing a 3rd party GUI library....what are you going to use it for. Creating games mostly or the newest version of SuperCalc?
Form (ie, libraries) follows function.
When you have an idea of what you are going to create most times, and you have a basic understanding of the native GUI of your OS, choosing a GUI library becomes easier. You can compare features. And see if going cross-platform is something you want to support.
There are more than a few times when games and productivity apps that go cross platform the code is written and rewritten to specifically target the OS. Games especially are written for the OS because speed and the look are paramount.
I am NOT trying to say you shouldn't learn to use 3rd party libraries, cross-platform GUI libraries specifically, that should be on your to-do list. Somewhere in the future.
After you get comfortable of what GUI means natively. GUI apps by their very nature are a lot more code intensive than C/C++ console/command-line mode apps.
How Linux or MacOS does their GUI stuff I have not much more than a very brief understanding. What It do know is each system does the work different.
And knowing more than one GUI library would be considered a bonus if/when looking for employment.
The more you know the more a company would consider you someone they'd be foolish not to hire.