Non ha senso ammucchiare tutti quei linguaggi nel titolo, il concetto di fondo è lo stesso, ma si procede in maniere differenti.
In .NET farai un controllo personalizzato (ovvero una classe eredita da System.Windows.Forms.Control se usi WinForms, non so come si faccia in WPF) costituito da controlli standard e codice di disegno (GDI+) che costruisca i "nuovi controlli" che ti interessano.
In C/C++ usando solo le API di Windows ti costruirai un controllo personalizzato registrando un nuovo stile di finestra e facendo sì che la WndProc associata:
- gestisca la creazione degli eventuali controlli figli
- gestisca il disegno delle eventuali aree da disegnare manualmente
- gestisca i messaggi personalizzati per "parlare" con la finestra padre che andrà a pilotare questo nuovo controllo
Se invece si stanno usando toolkit grafici particolari (MFC, WTL, wxWidgets, ...) si usano metodi più simili a quelli per .NET (ereditare da una classe-controllo, pilotaggio e notifiche non tramite messaggi personalizzati ma tramite metodi/signals).

