The separation of window attributes into CreateWindow () and RegisterClass () was done at an early stage to ensure that windows were created with uniform maintenance. Dialog controls (buttons, lists, etc.) are a prime example - they all share a class. This means that they share the window procedure, it means that they share the drawing logic, input reactions, user messages, notifications, etc.
At the application level, the most typical case when you have many windows of the same class are documents in the interface with several documents. Sometimes people implement application-specific controls. Thus, the difference serves its purpose.
Seva Alekseyev
source share