background
The simplest way to get a window that is transparent is to not paint its
background. You could try implementing a do nothing WM_ERASEBKGND handler.
I haven't tried this but it seems obvious to me. The only problem I can see
would be if there are any controls that paint some of their "structural"
components when erasing the background, i.e. borders, headings, buttons,
etc. FWIW, I doubt that there are (m)any controls that paint their layount
when doing an erase background. If you want to do something like alpha
blending (semi-transparency) you'll have to research it but for small
windows it can obviously be done in a WM_ERASEBKGND handler by simply
averaging the control background and the dialog beneath the control. You
may need to force the parent to re-paint (with a clip rectangle) when doing
an erase background to avoid problems with text removed from a list not
erasing when removed (due to you not really painting the packground). IIRC,
there is a transparent extended window style but some of the reading I've
been doing suggests it may not be supported by controls. If it is and you
can use CreateWindowEx then you might avoind that problem by simply
indicating that the window is transparent and let window send paint messages
in the correct order to achieve your goal.