On wikipedia it says that GDI is an API and core operating system component responsible for representing graphical objects and transmitting them to output devices.
I'm not finding much on what GDI+ actually does so I'm wondering, is GDI+ replaceable with gui frameworks like wxWidgets and GTK+ or are those frameworks rather built on top of GDI+?
When drawing to screen with GDI+ it seems it makes sure one doesn't draw outside of the application's window. Is it actually GDI+ doing this and if not, what is? If it is GDI then doesn't everything have to go through GDI+ to promise this functionality and not let applications paint anywhere they want?
Where does the framebuffer come into all of this? I would imagine that whatever controls the coordinate transforms controls the framebuffer as well. However it seems applications have much control of framebuffers and how to use them. I see that OpenGL has multiple types of framebuffers and functions for generating framebuffers, deleting them, ect. And I'm reading that they are stored in video memory. I would imagine that gui frameworks that are not as heavily involved with the GPU don't store theirs in video memory. So how does this stuff work and interact with the transformations?