The idea is simple, the Kernel.CPP basically boots up a console screen, in this console screen the user will have the option to start up different window instances. I know from reading that the WNDCLASSEX, and the HWND are the most important functions, the WNDCLASSEX registers the Window, and the Hwnd is the Handle of the Window.
BEcause I am writing this in OOP and I do not want to make one window, but more. I decided to split it up as the picture above. The Hwnd and Window are created in the Window Manager, these values are send to the Window class that will create a class with it. This also means I need to make a global Message queue in windows so that Windows can close the Window whenever needed, or when someone is messing in the window itself by moving around etc. I am not sure how to solve that.
There are 2 solutions:
Have the Window class itself send its messages for translation to the Queue. Or have a individual Message queue for each window class. The last one being the easiest to write ofcourse. But this would mean there is no more OOP going on, and it will be a lot harder to draw multiple windows if I need to make a message queue per window, and it can affect performance ofcourse.
Any suggestions? :) Once the Window Manager is complete today, I will probably focus on writing the D3D engine to render a cube and then see if i can open multiple windows. Perhaps I can make a linked list in the Window Manager to keep track of all the windows it would increase performance I would think.