One thing to note before going into Win32: You're going to have a pixelated, upscaled ui if you don't take care of high dpi support yourself, and that involves patching system controls. So prepare yourself for lots of dpi-work if that's a concern. (One thing I've been experimenting with is superclassing the system controls and "overwriting" the original by registering a superclass of eg. the edit control as simply "edit". This makes other system controls, like the combobox, use your dpi scaled/custom version).
Also, question: do you know of a good way to test for high-DPI mode on a low-DPI screen?
https://building.enlyze.com/posts/writing-win32-apps-like-it...
Try a combo box on high dpi. The arrow button gets a lot thinner than on 96 dpi.
And I did just try what you said and the combo box fine to me: https://imgur.com/a/Mb83tPj
Win XP came out 22 years ago.
If I remember & get a chance later I can try to make a minimal example.
Edit: Based on this comment [1] I'm guessing you're on something like Windows 8.1 rather than a recent version of Windows 10 or later.
[1] https://www.reddit.com/r/programming/comments/d77mf7/comment...
WinMain builds the window and starts the message pump. The pump is implement starting at line 425. It's basically a while loop that reads the next message on the stack, translates it, then sends it to the object it belongs to.
It's the precursor to today's modern event-driven designs. Basically, this is now done for you by the runtime.
The bulk of the action happens in the created window's "wndproc", cbMainWindow (Line 455 - 2897).
There's a giant switch statement, with each handled message being a separate case. There's also a WM_COMMAND message, which is essentially a message holding another message inside.
This is probably the best book on Win32 API programming out there.
https://www.amazon.com/Programming-Windows%C2%AE-Fifth-Devel...