I remember as a hobbyist Windows programmer (Borland C++ Builder) I was really envious of the skills required to build something like Winamp - especially the UI. Back then, advanced learning resources and examples were effectively non-existent or at least, hard to find and stitch together.
I owe my entire career to the fact that Winamp added the ability to re-skin.
I had just graduated graduate school for international economics, and was working for a government contractor who only hired me because I had a masters (they could charge the government more). Because of this, I literally had nothing to do and would just sit in the office.
I eventually figured out an excuse to get my employer to buy Photoshop for me and I started learning it on company time. When Winamp came out with the update to add skins, I ended up making one of the very first skins (meshAMP) which became really popularly.
This led to contract job with STB (to design interfaces for a TV Tuner card they had) and eventually 3DFX (paid in 3d video cards), and eventually a career change and a job as a graphic designer.
Except, I was not a good designer, so I quickly learned to program (ASP.net and then JAVA), which led to Macromedia Flash, which led to Macromedia Generator, which eventually led to a job offer from Macromedia (now Adobe), where I still am (sadly, sans Flash).
Modern software won't run on a 30 year-old Win95 computer like Winamp did. CSS inside browser-based applications does not count as skinning; that's just an abomination.
That's one of the biggest reasons I still use it. Other music players have strictly fixed UIs that often focus on organizing a music library rather than actually playing your music. I'm quite happy organizing my music using the file system.
Skinning was pretty easy to do. The packaging format was a zip archive with a renamed extension. You could do a lot with a little photoshop skills and trial and error.
So many people used it that skins would get a lot of distribution, too.
I found the secret to C++ programming for Windows was using the C API.
It was a long time ago, but IIRC I was using Visual C++ (a very nice compiler that was the first to implement the STL as written) having abandoned Borland Foundation Classes (? name ?) which was dreadful. Woeful.
MFC, the MS C++ offering for writing Windows apps was impossible to use and undocumented at the time. We subscribed to those piles of CDs that MS would send out regularly and I could only find decent documentation for the C API, not the MFC one. Weird.
I used an explicit event loop (simple for a Computer Science graduate like I was) and the C API inside my C++ programme and it worked a treat
Screenshots might take 10’s of kibibytes. Not very baud efficient. Use the webring links at the bottom of the page to find another website that has pictures. Sign their guestbook as thanks.
I remember fondly writing a winamp clone in school with a team project. We scraped together a rough plugin based player, input and output plugins (a super limited network streaming variant), etc.. good times grinding on a neat project. Yikes, that was like 25 years ago.
Justin Frank used to hang out on IRC in #winprog or something, and I can remember when he was showing us how he made the UI skinnable. Asking for ideas and input etc.